diff options
author | Mike Frysinger <vapier@gentoo.org> | 2013-12-30 09:40:38 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2013-12-30 10:02:49 -0500 |
commit | e646a161cef3069fe1a6c92b750a87350630c62d (patch) | |
tree | b9ca2b9348e025a17eff2d2f590819f25e3302d6 /ports/sysdeps/unix/sysv/linux/ia64/setjmp.S | |
parent | 030a4976b81de991f53d0d3c4d049f7903bd407c (diff) | |
download | glibc-e646a161cef3069fe1a6c92b750a87350630c62d.tar glibc-e646a161cef3069fe1a6c92b750a87350630c62d.tar.gz glibc-e646a161cef3069fe1a6c92b750a87350630c62d.tar.bz2 glibc-e646a161cef3069fe1a6c92b750a87350630c62d.zip |
ia64: setjmp/longjmp: stop saving/restoring fpsr [BZ #16379]
The new tst-setjmp-fp test has been failing on IA64 because the setjmp
and longjmp helpers take care of saving/restoring the fpsr register.
Per the C standards, this is incorrect, so disable that logic.
URL: https://sourceware.org/bugzilla/show_bug.cgi?id=16379
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'ports/sysdeps/unix/sysv/linux/ia64/setjmp.S')
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/ia64/setjmp.S | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S b/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S index bf1b980f4e..1be53cca4d 100644 --- a/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S +++ b/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S @@ -25,7 +25,7 @@ 0x000 stack pointer (r12) ; unchangeable (see _JMPBUF_UNWINDS) 0x008 r1 (gp) 0x010 caller's unat - 0x018 fpsr + 0x018 fpsr ; disabled per the C standard; BZ 16379 0x020 r4 0x028 r5 0x030 r6 @@ -89,15 +89,15 @@ ENTRY(__sigsetjmp) .save ar.unat, loc2 mov loc2=ar.unat ;; - mov r17=ar.fpsr +// mov r17=ar.fpsr mov r2=in0 add r3=8,in0 ;; .mem.offset 8,0; st8.spill.nta [r2]=sp,16 // r12 (sp) -.mem.offset 0,0; st8.spill.nta [r3]=gp,16 // r1 (gp) +.mem.offset 0,0; st8.spill.nta [r3]=gp,32 // r1 (gp) ;; st8.nta [r2]=loc2,16 // save caller's unat - st8.nta [r3]=r17,16 // save fpsr +// st8.nta [r3]=r17,16 // save fpsr add r8=0xa0,in0 ;; .mem.offset 8,0; st8.spill.nta [r2]=r4,16 // r4 |