ARM: Fix up setjmp/longjmp changes sfi_* macro use.
authorRoland McGrath <roland@hack.frob.com>
Tue, 11 Mar 2014 17:59:01 +0000 (10:59 -0700)
committerRoland McGrath <roland@hack.frob.com>
Tue, 11 Mar 2014 17:59:01 +0000 (10:59 -0700)
ChangeLog
sysdeps/arm/__longjmp.S
sysdeps/arm/setjmp.S

index 3312dcb..3a589d8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-03-11  Roland McGrath  <roland@hack.frob.com>
+
+       * sysdeps/arm/setjmp.S: Use sfi_breg on stores of mangled registers.
+       * sysdeps/arm/__longjmp.S: Use sfi_breg on loads of mangled registers.
+       Move sfi_sp use from the load-multiple (that no longer sets sp) to
+       the new mov targetting sp.
+
 2014-03-11  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
        [BZ #16683]
index 08521e5..27d1b71 100644 (file)
@@ -38,22 +38,27 @@ ENTRY (__longjmp)
 #endif
 
 #ifdef PTR_DEMANGLE
-       ldr     a4, [ip], #4
+       sfi_breg ip, \
+       ldr     a4, [\B], #4
        PTR_DEMANGLE (a4, a4, a3, r4)
        cfi_undefined (r4)
-       ldr     r4, [ip], #4
+       sfi_breg ip, \
+       ldr     r4, [\B], #4
        PTR_DEMANGLE2 (r4, r4, a3)
 #else
-       ldr     a4, [ip], #4
-       ldr     r4, [ip], #4
+       sfi_breg ip, \
+       ldr     a4, [\B], #4
+       sfi_breg ip, \
+       ldr     r4, [\B], #4
        cfi_undefined (r4)
 #endif
        /* longjmp probe expects longjmp first argument (4@r0), second
           argument (-4@r1), and target address (4@r4), respectively.  */
        LIBC_PROBE (longjmp, 3, 4@r0, -4@r1, 4@r4)
+       sfi_sp \
        mov     sp, a4
        mov     lr, r4
-       sfi_sp sfi_breg ip, \
+       sfi_breg ip, \
        ldmia   \B!, JMP_BUF_REGLIST
        cfi_restore (v1)
        cfi_restore (v2)
index 5e55ca5..17a16c9 100644 (file)
@@ -36,12 +36,16 @@ ENTRY (__sigsetjmp)
 #ifdef PTR_MANGLE
        mov     a4, sp
        PTR_MANGLE2 (a4, a4, a3)
-       str     a4, [ip], #4
+       sfi_breg ip, \
+       str     a4, [\B], #4
        PTR_MANGLE2 (a4, lr, a3)
-       str     a4, [ip], #4
+       sfi_breg ip, \
+       str     a4, [\B], #4
 #else
-       str     sp, [ip], #4
-       str     lr, [ip], #4
+       sfi_breg ip, \
+       str     sp, [\B], #4
+       sfi_breg ip, \
+       str     lr, [\B], #4
 #endif
        /* Save registers */
        sfi_breg ip, \