summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-11-23 16:01:09 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-11-23 16:01:09 +0000
commit9c2da80f4e64004de5834e990c8ca7a52a4e0376 (patch)
tree5334539f7469f1c7b4c9480026ad3a86048fa98a /c
parent2010-11-23 Gedare Bloom <giddyup44@yahoo.com> (diff)
downloadrtems-9c2da80f4e64004de5834e990c8ca7a52a4e0376.tar.bz2
2010-11-23 Gedare Bloom <giddyup44@yahoo.com>
PR 1719/cpukit * shared/start/start.S: Avoid "bx" instruction to support ARMv4 and below.
Diffstat (limited to 'c')
-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 54699c561b..ab2865372d 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-06-21 Sebastian Huber <sebastian.huber@embedded-brains.de>
* shared/startup/linkcmds.base: Define bsp_vector_table_size
diff --git a/c/src/lib/libbsp/arm/shared/start/start.S b/c/src/lib/libbsp/arm/shared/start/start.S
index dcafd1173a..8d5671077c 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