
The branch instruction only has an 11-bit relative target address, which is sometimes not enough.
Signed-off-by: Phil Edworthy phil.edworthy@renesas.com --- v2: - Use W(b) instead of ldr+mov. Using this macro requires CONFIG_ARM_ASM_UNIFIED and CONFIG_THUMB2_KERNEL to be defined. --- arch/arm/cpu/armv7m/Makefile | 3 +++ arch/arm/cpu/armv7m/start.S | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/arch/arm/cpu/armv7m/Makefile b/arch/arm/cpu/armv7m/Makefile index 257fc7f..df1fc95 100644 --- a/arch/arm/cpu/armv7m/Makefile +++ b/arch/arm/cpu/armv7m/Makefile @@ -8,3 +8,6 @@ extra-y := start.o obj-y += cpu.o cache.o mpu.o obj-$(CONFIG_SYS_ARCH_TIMER) += systick-timer.o + +asflags-y += -DCONFIG_ARM_ASM_UNIFIED +asflags-y += -DCONFIG_THUMB2_KERNEL diff --git a/arch/arm/cpu/armv7m/start.S b/arch/arm/cpu/armv7m/start.S index 49f2720..890c773 100644 --- a/arch/arm/cpu/armv7m/start.S +++ b/arch/arm/cpu/armv7m/start.S @@ -5,10 +5,12 @@ * SPDX-License-Identifier: GPL-2.0+ */
+#include <asm/assembler.h> + .globl reset .type reset, %function reset: - b _main + W(b) _main
.globl c_runtime_cpu_setup c_runtime_cpu_setup: