GCC: ARM_CM0: Fix L6286E error on Keil MDK (#1131)
Change the .b instruction to .bx with higher range to solve error
reported by MDK descibed bellow.
Fix:
Error: L6286E: Relocation #REL:0 in portasm.o(.text.SVC_Handler) with respect to vPortSVCHandler_C. Value(0x1a04) out of range(-0x800 - 0x7fe) for (R_ARM_THM_JUMP11)
Compiler: Keil MDK ARMClang 6.22.0
https://developer.arm.com/documentation/ka002847/latest/
https://developer.arm.com/documentation/dui0496/m/Linker-Errors-and-Warnings/List-of-the-armlink-error-and-warning-messages
Signed-off-by: Tomas Galbicka <tomas.galbicka@nxp.com>
diff --git a/portable/GCC/ARM_CM0/portasm.c b/portable/GCC/ARM_CM0/portasm.c
index be1500e..179a715 100644
--- a/portable/GCC/ARM_CM0/portasm.c
+++ b/portable/GCC/ARM_CM0/portasm.c
@@ -472,7 +472,8 @@
" ldr r3, =%1 \n"
" cmp r2, r3 \n"
" beq system_call_exit \n"
- " b vPortSVCHandler_C \n"
+ " ldr r3, =vPortSVCHandler_C \n"
+ " bx r3 \n"
" \n"
" system_call_enter: \n"
" push {lr} \n"
@@ -508,11 +509,13 @@
" \n"
" stacking_used_psp: \n"
" mrs r0, psp \n"
- " b vPortSVCHandler_C \n"
+ " ldr r3, =vPortSVCHandler_C \n"
+ " bx r3 \n"
" \n"
" stacking_used_msp: \n"
" mrs r0, msp \n"
- " b vPortSVCHandler_C \n"
+ " ldr r3, =vPortSVCHandler_C \n"
+ " bx r3 \n"
" \n"
" .align 4 \n"
);