diff options
Diffstat (limited to 'c/src/lib/libbsp')
-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 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 |