Once more about atmega2560 WinAVR porting

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.