r4263 - in glibc-package/trunk/debian: . patches patches/arm
Author: schizo
Date: 2010-05-10 16:12:58 +0000 (Mon, 10 May 2010)
New Revision: 4263
Added:
glibc-package/trunk/debian/patches/arm/cvs-setjmp-longjmp-fpu.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/debian/patches/series
Log:
Add patches/arm/cvs-setjmp-longjmp-fpu.diff. closes: #580529 ("setjmp/longjmp broken on ARM w/ FPU").
Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2010-05-10 13:25:58 UTC (rev 4262)
+++ glibc-package/trunk/debian/changelog 2010-05-10 16:12:58 UTC (rev 4263)
@@ -6,6 +6,8 @@
[ Clint Adams ]
* Spanish debconf translation update from Omar Campagne Polaino.
closes: #579351.
+ * Add patches/arm/cvs-setjmp-longjmp-fpu.diff. closes: #580529
+ ("setjmp/longjmp broken on ARM w/ FPU").
-- Clint Adams <schizo@debian.org> Tue, 27 Apr 2010 20:33:40 -0400
Added: glibc-package/trunk/debian/patches/arm/cvs-setjmp-longjmp-fpu.diff
===================================================================
--- glibc-package/trunk/debian/patches/arm/cvs-setjmp-longjmp-fpu.diff (rev 0)
+++ glibc-package/trunk/debian/patches/arm/cvs-setjmp-longjmp-fpu.diff 2010-05-10 16:12:58 UTC (rev 4263)
@@ -0,0 +1,44 @@
+--- a/ports/sysdeps/arm/eabi/__longjmp.S
++++ b/ports/sysdeps/arm/eabi/__longjmp.S
+@@ -55,12 +55,12 @@
+ beq Lno_vfp
+
+ /* Restore the VFP registers. */
+- /* Following instruction is fldmiax ip!, {d8-d15}. */
+- ldc p11, cr8, [r12], #68
++ /* Following instruction is vldmia ip!, {d8-d15}. */
++ ldc p11, cr8, [r12], #64
+ /* Restore the floating-point status register. */
+- ldr r1, [ip], #4
+- /* Following instruction is fmxr fpscr, r1. */
+- mcr p10, 7, r1, cr1, cr0, 0
++ ldr a3, [ip], #4
++ /* Following instruction is fmxr fpscr, a3. */
++ mcr p10, 7, a3, cr1, cr0, 0
+ Lno_vfp:
+
+ tst a2, #HWCAP_ARM_IWMMXT
+--- a/ports/sysdeps/arm/eabi/setjmp.S
++++ b/ports/sysdeps/arm/eabi/setjmp.S
+@@ -52,13 +52,15 @@
+ tst a3, #HWCAP_ARM_VFP
+ beq Lno_vfp
+
+- /* Store the VFP registers. */
+- /* Following instruction is fstmiax ip!, {d8-d15}. */
+- stc p11, cr8, [r12], #68
++ /* Store the VFP registers.
++ Don't use VFP instructions directly because this code
++ is used in non-VFP multilibs. */
++ /* Following instruction is vstmia ip!, {d8-d15}. */
++ stc p11, cr8, [ip], #64
+ /* Store the floating-point status register. */
+- /* Following instruction is fmrx r2, fpscr. */
+- mrc p10, 7, r2, cr1, cr0, 0
+- str r2, [ip], #4
++ /* Following instruction is vmrs a4, fpscr. */
++ mrc p10, 7, a4, cr1, cr0, 0
++ str a4, [ip], #4
+ Lno_vfp:
+
+ tst a3, #HWCAP_ARM_IWMMXT
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2010-05-10 13:25:58 UTC (rev 4262)
+++ glibc-package/trunk/debian/patches/series 2010-05-10 16:12:58 UTC (rev 4263)
@@ -66,6 +66,7 @@
arm/local-lowlevellock.diff
arm/local-no-hwcap.diff
arm/local-hwcap-updates.diff
+arm/cvs-setjmp-longjmp-fpu.diff
hppa/submitted-sock_nonblock.diff
hppa/local-inlining.diff
Reply to: