fix long call linker error with 'jal', 'j' or conditional branch instruction
This commit is contained in:
parent
5623579f3a
commit
111ecae6ad
|
@ -47,7 +47,7 @@ rt_hw_context_switch_to:
|
|||
|
||||
#ifdef RT_USING_SMP
|
||||
mv a0, a1
|
||||
jal rt_cpus_lock_status_restore
|
||||
call rt_cpus_lock_status_restore
|
||||
#endif
|
||||
LOAD a0, 2 * REGBYTES(sp)
|
||||
csrw mstatus, a0
|
||||
|
@ -123,7 +123,7 @@ save_mpie:
|
|||
|
||||
#ifdef RT_USING_SMP
|
||||
mv a0, a2
|
||||
jal rt_cpus_lock_status_restore
|
||||
call rt_cpus_lock_status_restore
|
||||
#endif /*RT_USING_SMP*/
|
||||
|
||||
j rt_hw_context_switch_exit
|
||||
|
|
|
@ -82,7 +82,7 @@ trap_entry:
|
|||
mv sp, s0
|
||||
mv a0, s0
|
||||
call rt_scheduler_do_irq_switch
|
||||
j rt_hw_context_switch_exit
|
||||
tail rt_hw_context_switch_exit
|
||||
|
||||
#else
|
||||
|
||||
|
@ -106,4 +106,4 @@ trap_entry:
|
|||
#endif
|
||||
|
||||
spurious_interrupt:
|
||||
j rt_hw_context_switch_exit
|
||||
tail rt_hw_context_switch_exit
|
||||
|
|
|
@ -116,18 +116,21 @@ _start:
|
|||
|
||||
/* other cpu core, jump to cpu entry directly */
|
||||
bnez a0, secondary_cpu_entry
|
||||
j primary_cpu_entry
|
||||
tail primary_cpu_entry
|
||||
|
||||
secondary_cpu_entry:
|
||||
#ifdef RT_USING_SMP
|
||||
la a0, secondary_boot_flag
|
||||
ld a0, 0(a0)
|
||||
li a1, 0xa55a
|
||||
beq a0, a1, secondary_cpu_c_start
|
||||
beq a0, a1, 1f
|
||||
#endif
|
||||
j secondary_cpu_entry
|
||||
|
||||
#ifdef RT_USING_SMP
|
||||
1:
|
||||
tail secondary_cpu_c_start
|
||||
|
||||
.data
|
||||
.global secondary_boot_flag
|
||||
.align 3
|
||||
|
|
Loading…
Reference in New Issue