Depending on the chip revision, the stack alignment is different. For instance with Cortex-M3 rev. 2, the stack is aligned on double word, but for rev. 0 to rev. 1 it is aligned on a single word.
Make sure to support both revisions:
* check every function call made from assembly, and make sure the stack is aligned on double word.
* for the svc instruction, svcall handler is modifying the stack to insert a fake stack frame. Make sure it will work for all revisions.