nobody wrote on Saturday, November 11, 2006:
The pshh asm instruction should follow psha to be consistent with portRESTORE_CONTEXT and the pxPortInitialiseStack function’s context restore unstacking order. For example, this incorrect order caused obvious issues with the H:X register pair (HS08 parameter passing convention only) being passed the correct 16-bit pointer address through pvParameters during the first call to the created task after the scheduler is started. The code in question is shown below.
#define portSAVE_CONTEXT()
{
extern volatile void * pxCurrentTCB;
extern volatile unsigned portBASE_TYPE uxCriticalNesting;
__asm( "pshh" ); /* Save H context */
__asm( "lda uxCriticalNesting" );
__asm( "psha" ); \