diff options
-rw-r--r-- | ports/ChangeLog.arm | 3 | ||||
-rw-r--r-- | ports/sysdeps/arm/__longjmp.S | 2 | ||||
-rw-r--r-- | ports/sysdeps/arm/sysdep.h | 5 |
3 files changed, 9 insertions, 1 deletions
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index ff4b15b9fb..f215f023dc 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -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. diff --git a/ports/sysdeps/arm/__longjmp.S b/ports/sysdeps/arm/__longjmp.S index 2936a441d0..8de9fa1c7b 100644 --- a/ports/sysdeps/arm/__longjmp.S +++ b/ports/sysdeps/arm/__longjmp.S @@ -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) diff --git a/ports/sysdeps/arm/sysdep.h b/ports/sysdeps/arm/sysdep.h index 4917805857..83df7ebc3a 100644 --- a/ports/sysdeps/arm/sysdep.h +++ b/ports/sysdeps/arm/sysdep.h @@ -250,6 +250,11 @@ 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__ */ |