This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: ARM setjmp and r12


> > 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]