ARM: sfi_sp assembler macro
authorRoland McGrath <roland@hack.frob.com>
Fri, 15 Mar 2013 16:32:16 +0000 (09:32 -0700)
committerRoland McGrath <roland@hack.frob.com>
Fri, 15 Mar 2013 16:32:16 +0000 (09:32 -0700)
ports/ChangeLog.arm
ports/sysdeps/arm/__longjmp.S
ports/sysdeps/arm/sysdep.h

index ff4b15b..f215f02 100644 (file)
@@ -1,5 +1,8 @@
 2013-03-15  Roland McGrath  <roland@hack.frob.com>
 
+       * sysdeps/arm/sysdep.h [!ARM_SFI_MACROS] (sfi_sp): New macro.
+       * sysdeps/arm/__longjmp.S: Use it.
+
        * sysdeps/arm/sysdep.h [!ARM_SFI_MACROS]
        (ARM_SFI_MACROS): Define it.
        (sfi_breg, sfi_pld): New assembler macros.
index 2936a44..8de9fa1 100644 (file)
@@ -36,7 +36,7 @@ ENTRY (__longjmp)
        cfi_undefined (r4)
        CHECK_SP (r4)
 #endif
-       sfi_breg ip, \
+       sfi_sp sfi_breg ip, \
        ldmia   \B!, JMP_BUF_REGLIST
        cfi_restore (v1)
        cfi_restore (v2)
index 4917805..83df7eb 100644 (file)
                pld [\basereg, \offset]
        .endm
 
+/* This macro precedes any instruction that directly changes the SP.
+   It's not needed for push/pop or for any kind of load or store that
+   implicitly changes the SP via the ! syntax.  */
+# define sfi_sp        /* Nothing to do.  */
+
 # endif
 
 #endif /* __ASSEMBLER__ */