Hi Richard, On 27 December 2013 01:03, Richard Henderson wrote: > On 12/26/2013 04:25 AM, Venkataramanan Kumar wrote: >> +#ifdef PTR_DEMANGLE >> ldp x29, x30, [x0, #JB_X29<<3] >> - >> + PTR_DEMANGLE (x4, x30, x3, x2) >> + mov x30, x4 >> +#else > > Why not load into x4 and then demangle into x30 directly? I.e. > > ldp x29, x4, [x0, #JB_X29<<3] > PTR_DEMANGLE (x30, x4, x3, x2) > > > r~ Yes this can be done. Also I changed the mangling code to use store pair instruction. Attached is the revised patch. I will do a cross test on V8 foundation model again. ChangeLog.aarch64: ----------------------------- 2013-12-26 Venkataramanan Kumar * sysdeps/aarch64/__longjmp.S (__longjmp): Demangle sp and lr when restoring register values. * sysdeps/aarch64/setjmp.S (__sigsetjmp): Mangle sp and lr before storing register values. * sysdeps/arm/jmpbuf-unwind.h (_jmpbuf_sp): Remove. * sysdeps/aarch64/jmpbuf-offsets.h (_jmpbuf_sp): Add. (JB_FRAME_ADDRESS): call _jmpbuf_sp. * sysdeps/aarch64/sysdep.h (LDST_PCREL) : New macros. (LDST_GLOBAL): Likewise. * sysdeps/unix/sysv/linux/aarch64/sysdep.h (PTR_MANGLE): New macro. (PTR_DEMANGLE): Likewise. (PTR_MANGLE2): Likewise. (PTR_DEMANGLE2): Likewise. regards Venkat.