Once more about atmega2560 WinAVR porting

baranov wrote on Wednesday, July 23, 2008:

Hello All!
I changed Timer1 interrupt routine to match it to atmega2560 register set and controlled with a scope that 1 ms interrupts really occur.
I modified the port.c file to solve the problem of 3-byte stack in following way:
    usAddress = ( unsigned portSHORT ) pxCode;
    *pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned portSHORT ) 0x00ff );
    pxTopOfStack–;

    usAddress >>= 8;
    *pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned portSHORT ) 0x00ff );
    pxTopOfStack–;
   
    /* AND THE THIRD BYTE from Richard Barry for IAR*/
    usAddress >>= 8;
    *pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned portSHORT ) 0x00ff );
    pxTopOfStack–;
    /* end of AND THE THIRD BYTE */

I wrote simple test program:
int main(void)
{
    DDRL = 0xff;
    vTaskStartScheduler();
}
   
void vApplicationIdleHook( void )
{
    vTaskDelay( 500 );
    PORTL = 0xff;
    vTaskDelay( 500 );
    PORTL = 0x00;
}
And still it resets while handling vTaskDelay(500).
Could somebody please tell what else I have missed?
Thanks
Alex.