diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-11-23 16:01:09 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-11-23 16:01:09 +0000 |
commit | 9c2da80f4e64004de5834e990c8ca7a52a4e0376 (patch) | |
tree | 5334539f7469f1c7b4c9480026ad3a86048fa98a /c/src/lib/libbsp/arm/shared/start/start.S | |
parent | 2010-11-23 Gedare Bloom <giddyup44@yahoo.com> (diff) | |
download | rtems-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/src/lib/libbsp/arm/shared/start/start.S')
-rw-r--r-- | c/src/lib/libbsp/arm/shared/start/start.S | 20 |
1 files changed, 20 insertions, 0 deletions
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 |