ARM setjmp and r12

Schwarz, Konrad konrad.schwarz@siemens.com
Fri Apr 28 14:45:00 GMT 2006


> > 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 }
> 
> I *think* that this is because GCC uses it as the static 
> chain register for nested functions (when operating in ARM mode).

Would that even be legal?  Shouldn't the contents/layout of jmpbuf be
specified by the ABI?  Or how would different implementations
interoperate?

Regards,

Konrad Schwarz



More information about the Newlib mailing list