This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
Community source repository for glibc add-on ports branch, master, updated. glibc-2.10.1-29-gfbc4c20
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 22 Oct 2009 19:36:57 -0000
- Subject: Community source repository for glibc add-on ports branch, master, updated. glibc-2.10.1-29-gfbc4c20
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Community source repository for glibc add-on ports".
The branch, master has been updated
via fbc4c20a80a81ef6bc624a219ef5f2c746efe563 (commit)
from b5c2620bee9fb698c642fa609ee03d6a87ac1552 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc-ports.git;a=commitdiff;h=fbc4c20a80a81ef6bc624a219ef5f2c746efe563
commit fbc4c20a80a81ef6bc624a219ef5f2c746efe563
Author: Andrew Stubbs <ams@codesourcery.com>
Date: Thu Oct 22 19:35:53 2009 +0000
Fix register conflicts and avoid deprecated instructions in ARM EABI setjmp/longjmp.
* setjmp and longjmp were using the obsolete fstmiax and fldmiax
instructions.
* Because of a confusion with two different sets of names for the same
registers (r0...r3 and a1...a4), if VFP was present then the
subsequent check for iWMMXt support would use a register that had
been clobbered by saving/restoring the VFP registers. (The bit
being checked was clobbered by a reserved bit of FPSCR that it
always 0 on present hardware, and no present hardware has both VFP
and iWMMXt, so this did not cause visible problems.)
2009-10-22 Andrew Stubbs <ams@codesourcery.com>
Julian Brown <julian@codesourcery.com>
* sysdeps/arm/eabi/setjmp.S (__sigsetjmp): Replace deprecated
instruction fstmiax with vstmia.
Correct register conflict and comment.
* sysdeps/arm/eabi/__longjmp.S (__longjmp): Use vldmia not fldmiax.
Don't clobber r1/a2 register before testing IWMMXT hwcap.
diff --git a/ChangeLog.arm b/ChangeLog.arm
index 643a071..f098f3c 100644
--- a/ChangeLog.arm
+++ b/ChangeLog.arm
@@ -1,3 +1,12 @@
+2009-10-22 Andrew Stubbs <ams@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * sysdeps/arm/eabi/setjmp.S (__sigsetjmp): Replace deprecated
+ instruction fstmiax with vstmia.
+ Correct register conflict and comment.
+ * sysdeps/arm/eabi/__longjmp.S (__longjmp): Use vldmia not fldmiax.
+ Don't clobber r1/a2 register before testing IWMMXT hwcap.
+
2009-10-22 Julian Brown <julian@codesourcery.com>
* sysdeps/arm/elf/start.S (_start): Avoid dependency on PC pipeline
diff --git a/sysdeps/arm/eabi/__longjmp.S b/sysdeps/arm/eabi/__longjmp.S
index f283297..3059193 100644
--- a/sysdeps/arm/eabi/__longjmp.S
+++ b/sysdeps/arm/eabi/__longjmp.S
@@ -59,12 +59,12 @@ ENTRY (__longjmp)
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
diff --git a/sysdeps/arm/eabi/setjmp.S b/sysdeps/arm/eabi/setjmp.S
index 835db71..92f83af 100644
--- a/sysdeps/arm/eabi/setjmp.S
+++ b/sysdeps/arm/eabi/setjmp.S
@@ -52,13 +52,15 @@ ENTRY (__sigsetjmp)
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
-----------------------------------------------------------------------
Summary of changes:
ChangeLog.arm | 9 +++++++++
sysdeps/arm/eabi/__longjmp.S | 10 +++++-----
sysdeps/arm/eabi/setjmp.S | 14 ++++++++------
3 files changed, 22 insertions(+), 11 deletions(-)
hooks/post-receive
--
Community source repository for glibc add-on ports