Will Newton
2014-01-23 11:49:31 UTC
ARMv4 does not have the blx instruction, so use the BLX macro which
handles abstracting this for us.
ports/ChangeLog.arm:
2014-01-23 Will Newton <***@linaro.org>
[BZ #16499]
* sysdeps/unix/sysv/linux/arm/clone.S: Use BLX macro instead
of blx instruction directly.
---
ports/sysdeps/unix/sysv/linux/arm/clone.S | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/clone.S b/ports/sysdeps/unix/sysv/linux/arm/clone.S
index 44286a5..03fe9ab 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/clone.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/clone.S
@@ -88,14 +88,8 @@ PSEUDO_END (__clone)
#endif
@ pick the function arg and call address off the stack and execute
ldr r0, [sp, #4]
-#if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)
ldr ip, [sp], #8
- mov lr, pc
- bx ip
-#else
- ldr lr, [sp], #8
- blx lr
-#endif
+ BLX (ip)
@ and we are done, passing the return value through r0
b PLTJMP(HIDDEN_JUMPTARGET(_exit))
handles abstracting this for us.
ports/ChangeLog.arm:
2014-01-23 Will Newton <***@linaro.org>
[BZ #16499]
* sysdeps/unix/sysv/linux/arm/clone.S: Use BLX macro instead
of blx instruction directly.
---
ports/sysdeps/unix/sysv/linux/arm/clone.S | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/clone.S b/ports/sysdeps/unix/sysv/linux/arm/clone.S
index 44286a5..03fe9ab 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/clone.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/clone.S
@@ -88,14 +88,8 @@ PSEUDO_END (__clone)
#endif
@ pick the function arg and call address off the stack and execute
ldr r0, [sp, #4]
-#if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)
ldr ip, [sp], #8
- mov lr, pc
- bx ip
-#else
- ldr lr, [sp], #8
- blx lr
-#endif
+ BLX (ip)
@ and we are done, passing the return value through r0
b PLTJMP(HIDDEN_JUMPTARGET(_exit))
--
1.8.1.4
1.8.1.4