Skip to content

Commit 6abb4df

Browse files
GCC: ARM_CM0: Fix L6286E error on Keil MDK
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>
1 parent 23cfd11 commit 6abb4df

File tree

1 file changed

+67
-60
lines changed

1 file changed

+67
-60
lines changed

portable/GCC/ARM_CM0/portasm.c

Lines changed: 67 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -443,49 +443,52 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
443443
{
444444
__asm volatile
445445
(
446-
" .syntax unified \n"
447-
" .extern vPortSVCHandler_C \n"
448-
" .extern vSystemCallEnter \n"
449-
" .extern vSystemCallExit \n"
450-
" .extern pxCurrentTCB \n"
451-
" \n"
452-
" movs r0, #4 \n"
453-
" mov r1, lr \n"
454-
" tst r0, r1 \n"
455-
" beq stack_on_msp \n"
456-
" \n"
457-
" stack_on_psp: \n"
458-
" mrs r0, psp \n"
459-
" b route_svc \n"
460-
" \n"
461-
" stack_on_msp: \n"
462-
" mrs r0, msp \n"
463-
" b route_svc \n"
464-
" \n"
465-
" route_svc: \n"
466-
" ldr r3, [r0, #24] \n"
467-
" subs r3, #2 \n"
468-
" ldrb r2, [r3, #0] \n"
469-
" ldr r3, =%0 \n"
470-
" cmp r2, r3 \n"
471-
" blt system_call_enter \n"
472-
" ldr r3, =%1 \n"
473-
" cmp r2, r3 \n"
474-
" beq system_call_exit \n"
475-
" b vPortSVCHandler_C \n"
476-
" \n"
477-
" system_call_enter: \n"
478-
" push {lr} \n"
479-
" bl vSystemCallEnter \n"
480-
" pop {pc} \n"
481-
" \n"
482-
" system_call_exit: \n"
483-
" push {lr} \n"
484-
" bl vSystemCallExit \n"
485-
" pop {pc} \n"
486-
" \n"
487-
" .align 4 \n"
488-
" \n"
446+
" .syntax unified \n"
447+
" .extern vPortSVCHandler_C \n"
448+
" .extern vSystemCallEnter \n"
449+
" .extern vSystemCallExit \n"
450+
" .extern pxCurrentTCB \n"
451+
" \n"
452+
" movs r0, #4 \n"
453+
" mov r1, lr \n"
454+
" tst r0, r1 \n"
455+
" beq stack_on_msp \n"
456+
" \n"
457+
" stack_on_psp: \n"
458+
" mrs r0, psp \n"
459+
" b route_svc \n"
460+
" \n"
461+
" stack_on_msp: \n"
462+
" mrs r0, msp \n"
463+
" b route_svc \n"
464+
" \n"
465+
" route_svc: \n"
466+
" ldr r3, [r0, #24] \n"
467+
" subs r3, #2 \n"
468+
" ldrb r2, [r3, #0] \n"
469+
" ldr r3, =%0 \n"
470+
" cmp r2, r3 \n"
471+
" blt system_call_enter \n"
472+
" ldr r3, =%1 \n"
473+
" cmp r2, r3 \n"
474+
" beq system_call_exit \n"
475+
" ldr r3, vPortSVCHandler_C_Address \n"
476+
" bx r3 \n"
477+
" \n"
478+
" system_call_enter: \n"
479+
" push {lr} \n"
480+
" bl vSystemCallEnter \n"
481+
" pop {pc} \n"
482+
" \n"
483+
" system_call_exit: \n"
484+
" push {lr} \n"
485+
" bl vSystemCallExit \n"
486+
" pop {pc} \n"
487+
" \n"
488+
" .ltorg \n"
489+
" .align 4 \n"
490+
" vPortSVCHandler_C_Address: .word vPortSVCHandler_C \n"
491+
" \n"
489492
: /* No outputs. */
490493
: "i" ( NUM_SYSTEM_CALLS ), "i" ( portSVC_SYSTEM_CALL_EXIT )
491494
: "r0", "r1", "r2", "r3", "memory"
@@ -498,23 +501,27 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
498501
{
499502
__asm volatile
500503
(
501-
" .syntax unified \n"
502-
" .extern vPortSVCHandler_C \n"
503-
" \n"
504-
" movs r0, #4 \n"
505-
" mov r1, lr \n"
506-
" tst r0, r1 \n"
507-
" beq stacking_used_msp \n"
508-
" \n"
509-
" stacking_used_psp: \n"
510-
" mrs r0, psp \n"
511-
" b vPortSVCHandler_C \n"
512-
" \n"
513-
" stacking_used_msp: \n"
514-
" mrs r0, msp \n"
515-
" b vPortSVCHandler_C \n"
516-
" \n"
517-
" .align 4 \n"
504+
" .syntax unified \n"
505+
" .extern vPortSVCHandler_C \n"
506+
" \n"
507+
" movs r0, #4 \n"
508+
" mov r1, lr \n"
509+
" tst r0, r1 \n"
510+
" beq stacking_used_msp \n"
511+
" \n"
512+
" stacking_used_psp: \n"
513+
" mrs r0, psp \n"
514+
" ldr r3, vPortSVCHandler_C_Address \n"
515+
" bx r3 \n"
516+
" \n"
517+
" stacking_used_msp: \n"
518+
" mrs r0, msp \n"
519+
" ldr r3, vPortSVCHandler_C_Address \n"
520+
" bx r3 \n"
521+
" \n"
522+
" .ltorg \n"
523+
" .align 4 \n"
524+
" vPortSVCHandler_C_Address: .word vPortSVCHandler_C \n"
518525
);
519526
}
520527

0 commit comments

Comments
 (0)