6.4.3 C Exception Handler Calling Convention
If a C exception handler calls other functions, the following must take place:
- The handler must set its own stack pointer.
- The handler saves all of the registers not preserved by the call: R0-R3, R-12, LR (R8-R12 saved by hardware for FIQ)
- Re-entrant exception handlers must save SPSR and LR.