[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: