Hi, > These other registers - r4 to r12 - are "callee saved".
To be precise, R4-R11 are callee-saved, R0-R3, R12, LR are caller-saves and LR and PSR are clobbered by calls. LR is slightly odd in that it is a callee-save in the prolog, but not in the epilog (since LR is assumed clobbered after a call, it doesn't need to be restored, so you can use pop {regs,PC} to return). Cortex-M hardware will automatically save/restore R0-R3, R12, LR, PC, PSR on interrupts. That perfectly matches the caller-saves and clobbered registers, so there is no potential bug. Wilco