summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-11-23 16:08:45 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-11-23 16:08:45 +0000
commit57bc4571f9c558d83c5a0f4fb1aecc3965ac0606 (patch)
tree93d8b1131e2268acc89ea6e90b744d1027c451e1
parenta73dc5d0edf63dbd8d535b5c4b21ebcc38bcc528 (diff)
2010-11-23 Gedare Bloom <giddyup44@yahoo.com>
PR 1719/cpukit * shared/start/start.S: Avoid "bx" instruction to support ARMv4 and below.
-rw-r--r--c/src/lib/libbsp/arm/ChangeLog6
-rw-r--r--c/src/lib/libbsp/arm/shared/start/start.S20
2 files changed, 26 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/ChangeLog b/c/src/lib/libbsp/arm/ChangeLog
index 459141012c..db006d66eb 100644
--- a/c/src/lib/libbsp/arm/ChangeLog
+++ b/c/src/lib/libbsp/arm/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-23 Gedare Bloom <giddyup44@yahoo.com>
+
+ PR 1719/cpukit
+ * shared/start/start.S: Avoid "bx" instruction to support ARMv4 and
+ below.
+
2010-05-20 Sebastian Huber <sebastian.huber@embedded-brains.de>
* shared/include/start.h: Define start section attributes.
diff --git a/c/src/lib/libbsp/arm/shared/start/start.S b/c/src/lib/libbsp/arm/shared/start/start.S
index c4a5d806a7..fed779a6f5 100644
--- a/c/src/lib/libbsp/arm/shared/start/start.S
+++ b/c/src/lib/libbsp/arm/shared/start/start.S
@@ -199,12 +199,20 @@ DEFINE_FUNCTION_ARM(bsp_start_memcpy)
/* Return if dest == src */
cmp r0, r1
+#ifdef __thumb__
bxeq lr
+#else
+ moveq pc, lr
+#endif
/* Return if length is zero */
mov r3, #0
cmp r3, r2
+#ifdef __thumb__
bxeq lr
+#else
+ moveq pc, lr
+#endif
/* Save non-volatile registers */
push {r4-r8, lr}
@@ -218,14 +226,22 @@ DEFINE_FUNCTION_ARM(bsp_start_memcpy)
mov r3, #0
mov ip, sp
mov lr, pc
+#ifdef __thumb__
bx ip
+#else
+ mov pc, ip
+#endif
/* Restore stack and non-volatile registers */
add sp, sp, #24
pop {r4-r8, lr}
/* Return */
+#ifdef __thumb__
bx lr
+#else
+ mov pc, lr
+#endif
bsp_start_memcpy_begin:
@@ -235,4 +251,8 @@ bsp_start_memcpy_begin:
add r3, r3, #4
cmp r3, r2
bcc bsp_start_memcpy_begin
+#ifdef __thumb__
bx lr
+#else
+ mov pc, lr
+#endif