aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/ChangeLog.arm3
-rw-r--r--ports/sysdeps/arm/__longjmp.S2
-rw-r--r--ports/sysdeps/arm/sysdep.h4
3 files changed, 4 insertions, 5 deletions
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index 8279a3e0de..2276ec5ef6 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -1,5 +1,8 @@
2013-03-06 Richard Henderson <rth@redhat.com>
+ * sysdeps/arm/__longjmp.S (__longjmp): Use ldmia insn directly.
+ * sysdeps/arm/sysdep.h (LOADREGS): Remove.
+
* sysdeps/arm/arm-mcount.S (_mcount): Use push/pop mnemonics.
* sysdeps/arm/crti.S, sysdeps/arm/crtn.S: Likewise.
* sysdeps/arm/dl-tlsdesc.S: Likewise.
diff --git a/ports/sysdeps/arm/__longjmp.S b/ports/sysdeps/arm/__longjmp.S
index a3a2a8aecb..1d5d56bde6 100644
--- a/ports/sysdeps/arm/__longjmp.S
+++ b/ports/sysdeps/arm/__longjmp.S
@@ -37,7 +37,7 @@ ENTRY (__longjmp)
cfi_undefined (r4)
CHECK_SP (r4)
#endif
- LOADREGS(ia, ip!, {v1-v6, sl, fp, sp, lr})
+ ldmia ip!, {v1-v6, sl, fp, sp, lr}
cfi_restore (v1)
cfi_restore (v2)
cfi_restore (v3)
diff --git a/ports/sysdeps/arm/sysdep.h b/ports/sysdeps/arm/sysdep.h
index d74a32811a..5f6c3f2a45 100644
--- a/ports/sysdeps/arm/sysdep.h
+++ b/ports/sysdeps/arm/sysdep.h
@@ -35,8 +35,6 @@
/* APCS-32 doesn't preserve the condition codes across function call. */
#ifdef __APCS_32__
-#define LOADREGS(cond, base, reglist...)\
- ldm##cond base,reglist
#ifdef __USE_BX__
#define RETINSTR(cond, reg) \
bx##cond reg
@@ -49,8 +47,6 @@
mov pc, _reg
#endif
#else /* APCS-26 */
-#define LOADREGS(cond, base, reglist...)\
- ldm##cond base,reglist^
#define RETINSTR(cond, reg) \
mov##cond##s pc, reg
#define DO_RET(_reg) \