bsps/arm: Use local labels in start.S

This commit is contained in:
Sebastian Huber
2018-11-20 13:06:04 +01:00
parent 945291312c
commit faafc22928

View File

@@ -35,8 +35,6 @@
#if defined(ARM_MULTILIB_ARCH_V4) #if defined(ARM_MULTILIB_ARCH_V4)
.globl bsp_start_hook_0_done
#ifdef BSP_START_IN_HYP_SUPPORT #ifdef BSP_START_IN_HYP_SUPPORT
.globl bsp_start_hyp_vector_table_begin .globl bsp_start_hyp_vector_table_begin
#endif #endif
@@ -50,19 +48,19 @@
bsp_start_vector_table_begin: bsp_start_vector_table_begin:
ldr pc, handler_addr_reset ldr pc, .Lhandler_addr_reset
ldr pc, handler_addr_undef ldr pc, .Lhandler_addr_undef
ldr pc, handler_addr_swi ldr pc, .Lhandler_addr_swi
ldr pc, handler_addr_prefetch ldr pc, .Lhandler_addr_prefetch
ldr pc, handler_addr_abort ldr pc, .Lhandler_addr_abort
/* Program signature checked by boot loader */ /* Program signature checked by boot loader */
.word 0xb8a06f58 .word 0xb8a06f58
ldr pc, handler_addr_irq ldr pc, .Lhandler_addr_irq
ldr pc, handler_addr_fiq ldr pc, .Lhandler_addr_fiq
handler_addr_reset: .Lhandler_addr_reset:
#ifdef BSP_START_RESET_VECTOR #ifdef BSP_START_RESET_VECTOR
.word BSP_START_RESET_VECTOR .word BSP_START_RESET_VECTOR
@@ -70,31 +68,31 @@ handler_addr_reset:
.word _start .word _start
#endif #endif
handler_addr_undef: .Lhandler_addr_undef:
.word _ARMV4_Exception_undef_default .word _ARMV4_Exception_undef_default
handler_addr_swi: .Lhandler_addr_swi:
.word _ARMV4_Exception_swi_default .word _ARMV4_Exception_swi_default
handler_addr_prefetch: .Lhandler_addr_prefetch:
.word _ARMV4_Exception_pref_abort_default .word _ARMV4_Exception_pref_abort_default
handler_addr_abort: .Lhandler_addr_abort:
.word _ARMV4_Exception_data_abort_default .word _ARMV4_Exception_data_abort_default
handler_addr_reserved: .Lhandler_addr_reserved:
.word _ARMV4_Exception_reserved_default .word _ARMV4_Exception_reserved_default
handler_addr_irq: .Lhandler_addr_irq:
.word _ARMV4_Exception_interrupt .word _ARMV4_Exception_interrupt
handler_addr_fiq: .Lhandler_addr_fiq:
.word _ARMV4_Exception_fiq_default .word _ARMV4_Exception_fiq_default
@@ -102,40 +100,38 @@ bsp_start_vector_table_end:
#ifdef BSP_START_IN_HYP_SUPPORT #ifdef BSP_START_IN_HYP_SUPPORT
bsp_start_hyp_vector_table_begin: bsp_start_hyp_vector_table_begin:
ldr pc, handler_addr_hyp_reset ldr pc, .Lhandler_addr_hyp_reset
ldr pc, handler_addr_hyp_undef ldr pc, .Lhandler_addr_hyp_undef
ldr pc, handler_addr_hyp_swi ldr pc, .Lhandler_addr_hyp_swi
ldr pc, handler_addr_hyp_prefetch ldr pc, .Lhandler_addr_hyp_prefetch
ldr pc, handler_addr_hyp_abort ldr pc, .Lhandler_addr_hyp_abort
ldr pc, handler_addr_hyp_hyp ldr pc, .Lhandler_addr_hyp_hyp
ldr pc, handler_addr_hyp_irq ldr pc, .Lhandler_addr_hyp_irq
ldr pc, handler_addr_hyp_fiq ldr pc, .Lhandler_addr_hyp_fiq
handler_addr_hyp_reset: .Lhandler_addr_hyp_reset:
.word _ARMV4_Exception_reserved_default .word _ARMV4_Exception_reserved_default
handler_addr_hyp_undef: .Lhandler_addr_hyp_undef:
.word _ARMV4_Exception_reserved_default .word _ARMV4_Exception_reserved_default
handler_addr_hyp_swi: .Lhandler_addr_hyp_swi:
.word _ARMV4_Exception_reserved_default .word _ARMV4_Exception_reserved_default
handler_addr_hyp_prefetch: .Lhandler_addr_hyp_prefetch:
.word _ARMV4_Exception_reserved_default .word _ARMV4_Exception_reserved_default
handler_addr_hyp_abort: .Lhandler_addr_hyp_abort:
.word _ARMV4_Exception_reserved_default .word _ARMV4_Exception_reserved_default
handler_addr_hyp_hyp: .Lhandler_addr_hyp_hyp:
.word _ARMV4_Exception_reserved_default .word _ARMV4_Exception_reserved_default
handler_addr_hyp_irq: .Lhandler_addr_hyp_irq:
.word _ARMV4_Exception_reserved_default .word _ARMV4_Exception_reserved_default
handler_addr_hyp_fiq: .Lhandler_addr_hyp_fiq:
.word _ARMV4_Exception_reserved_default .word _ARMV4_Exception_reserved_default
bsp_start_hyp_vector_table_end:
#endif #endif
/* Start entry */ /* Start entry */
@@ -198,7 +194,7 @@ _start:
and r0, r4, #ARM_PSR_M_MASK and r0, r4, #ARM_PSR_M_MASK
cmp r0, #ARM_PSR_M_HYP cmp r0, #ARM_PSR_M_HYP
bne bsp_start_skip_hyp_svc_switch bne .L_skip_hyp_svc_switch
/* Boot loader starts kernel in HYP mode, switch to SVC necessary */ /* Boot loader starts kernel in HYP mode, switch to SVC necessary */
ldr r1, =bsp_stack_hyp_size ldr r1, =bsp_stack_hyp_size
@@ -206,7 +202,7 @@ _start:
sub r7, r7, r1 sub r7, r7, r1
bl bsp_start_arm_drop_hyp_mode bl bsp_start_arm_drop_hyp_mode
bsp_start_skip_hyp_svc_switch: .L_skip_hyp_svc_switch:
#endif #endif
/* Initialize stack pointer registers for the various modes */ /* Initialize stack pointer registers for the various modes */
@@ -291,7 +287,7 @@ bsp_start_skip_hyp_svc_switch:
* instruction limitation. * instruction limitation.
*/ */
ldr lr, =bsp_start_hook_0_done ldr lr, =.Lstart_hook_0_done
#ifdef __thumb__ #ifdef __thumb__
orr lr, #1 orr lr, #1
#endif #endif
@@ -304,7 +300,7 @@ bsp_start_skip_hyp_svc_switch:
b bsp_start_hook_0 b bsp_start_hook_0
bsp_start_hook_0_done: .Lstart_hook_0_done:
SWITCH_FROM_THUMB_TO_ARM SWITCH_FROM_THUMB_TO_ARM
@@ -318,13 +314,13 @@ bsp_start_hook_0_done:
ldr r0, =bsp_vector_table_begin ldr r0, =bsp_vector_table_begin
adr r1, bsp_start_vector_table_begin adr r1, bsp_start_vector_table_begin
cmp r0, r1 cmp r0, r1
beq bsp_vector_table_copy_done beq .Lvector_table_copy_done
ldmia r1!, {r2-r9} ldmia r1!, {r2-r9}
stmia r0!, {r2-r9} stmia r0!, {r2-r9}
ldmia r1!, {r2-r9} ldmia r1!, {r2-r9}
stmia r0!, {r2-r9} stmia r0!, {r2-r9}
bsp_vector_table_copy_done: .Lvector_table_copy_done:
ldmia sp!, {r0, r1, r2} ldmia sp!, {r0, r1, r2}
@@ -398,10 +394,10 @@ _start:
#endif /* ARM_MULTILIB_VFP */ #endif /* ARM_MULTILIB_VFP */
ldr sp, =_ISR_Stack_area_end ldr sp, =_ISR_Stack_area_end
ldr lr, =bsp_start_hook_0_done + 1 ldr lr, =.Lstart_hook_0_done + 1
b bsp_start_hook_0 b bsp_start_hook_0
bsp_start_hook_0_done: .Lstart_hook_0_done:
bl bsp_start_hook_1 bl bsp_start_hook_1
movs r0, #0 movs r0, #0