diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-11-23 16:08:45 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-11-23 16:08:45 +0000 |
commit | 57bc4571f9c558d83c5a0f4fb1aecc3965ac0606 (patch) | |
tree | 93d8b1131e2268acc89ea6e90b744d1027c451e1 | |
parent | a73dc5d0edf63dbd8d535b5c4b21ebcc38bcc528 (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/ChangeLog | 6 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/shared/start/start.S | 20 |
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 |