aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/arm/sysdep.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/arm/sysdep.h')
-rw-r--r--sysdeps/arm/sysdep.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/sysdeps/arm/sysdep.h b/sysdeps/arm/sysdep.h
index 4bc7d827b8..cb3f105afe 100644
--- a/sysdeps/arm/sysdep.h
+++ b/sysdeps/arm/sysdep.h
@@ -52,11 +52,20 @@
ldm##cond base,reglist
#define RETINSTR(instr, regs...)\
instr regs
+#ifdef __THUMB_INTERWORK__
+#define DO_RET(_reg) \
+ bx _reg
+#else
+#define DO_RET(_reg) \
+ mov pc, _reg
+#endif
#else /* APCS-26 */
#define LOADREGS(cond, base, reglist...)\
ldm##cond base,reglist^
#define RETINSTR(instr, regs...)\
instr##s regs
+#define DO_RET(_reg) \
+ movs pc, _reg
#endif
/* Define an entry point visible from C. */