I've been doing a bit of digging on this and it is not as clear cut as it seems.
There is a potential issue with Cortex systems where the stack is not 8 byte aligned and you call functions with 64 bit parameters. The API specifies that call stacks between modules must be 8 byte aligned but depending on the Cortex model, this is not necessarily guaranteed. The following...
I've been using FreeRTOS with the GNU compiler on a Microsemi (Actel) A2F200/A2F500 system which is Cortex M3 based. Whilst looking at the code for the xPortSysTickHandler I was puzzled as to why the function, which is an interrupt handler, was declared as void xPortSysTickHandler( void ). Why is it not __attribute__((__interrupt__)) void xPortSysTickHandler( void )?