HS08 Port H register stacking problem

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" );                                            \

nobody wrote on Saturday, November 11, 2006:

Where did you get the code from?  There is not an official HS08 port as far as I know.  I cannot find the code you highlight in the download.   ???

nobody wrote on Saturday, November 11, 2006:

Here’s the link:

http://forums.freescale.com/attachments/freescale/8BITCOMM/2709/1/FreeRTOS_HC(S)

nobody wrote on Saturday, November 11, 2006:

Can you write on that forum or to the author of the port?