On the ARM, why does setjmp preserve r12 (ip)? I believe r12 is caller-preserved, not callee-preserved. arm/setjmp.S:122 /* Save all the callee-preserved registers into the jump buffer. */ stmea a1!, { v1-v7, fp, ip, sp, lr } Cheers, Shaun