about summary refs log tree commit diff
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)		\