From 9c2da80f4e64004de5834e990c8ca7a52a4e0376 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 23 Nov 2010 16:01:09 +0000 Subject: 2010-11-23 Gedare Bloom PR 1719/cpukit * shared/start/start.S: Avoid "bx" instruction to support ARMv4 and below. --- c/src/lib/libbsp/arm/ChangeLog | 6 ++++++ c/src/lib/libbsp/arm/shared/start/start.S | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+) 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 + + PR 1719/cpukit + * shared/start/start.S: Avoid "bx" instruction to support ARMv4 and + below. + 2010-06-21 Sebastian Huber * 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 -- cgit v1.2.3