[libcpu]riscv使用call指令解决长跳转问题
This commit is contained in:
parent
0d9185bd5a
commit
2b21b095f9
|
@ -77,11 +77,11 @@
|
||||||
rt_hw_context_switch_to:
|
rt_hw_context_switch_to:
|
||||||
LOAD sp, (a0)
|
LOAD sp, (a0)
|
||||||
|
|
||||||
jal rt_thread_self
|
call rt_thread_self
|
||||||
mv s1, a0
|
mv s1, a0
|
||||||
|
|
||||||
#ifdef RT_USING_SMART
|
#ifdef RT_USING_SMART
|
||||||
jal lwp_aspace_switch
|
call lwp_aspace_switch
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
RESTORE_CONTEXT
|
RESTORE_CONTEXT
|
||||||
|
@ -104,11 +104,11 @@ rt_hw_context_switch:
|
||||||
LOAD sp, (a1)
|
LOAD sp, (a1)
|
||||||
|
|
||||||
// restore Address Space
|
// restore Address Space
|
||||||
jal rt_thread_self
|
call rt_thread_self
|
||||||
mv s1, a0
|
mv s1, a0
|
||||||
|
|
||||||
#ifdef RT_USING_SMART
|
#ifdef RT_USING_SMART
|
||||||
jal lwp_aspace_switch
|
call lwp_aspace_switch
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
RESTORE_CONTEXT
|
RESTORE_CONTEXT
|
||||||
|
|
|
@ -46,7 +46,8 @@ _distinguish_syscall:
|
||||||
#ifdef RT_USING_SMART
|
#ifdef RT_USING_SMART
|
||||||
// TODO swap 8 with config macro name
|
// TODO swap 8 with config macro name
|
||||||
li t1, 8
|
li t1, 8
|
||||||
beq t0, t1, syscall_entry
|
bne t0, t1, _handle_interrupt_and_exception
|
||||||
|
call syscall_entry
|
||||||
// syscall never return here
|
// syscall never return here
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -78,7 +79,8 @@ _resume_execution:
|
||||||
#ifdef RT_USING_SMART
|
#ifdef RT_USING_SMART
|
||||||
LOAD t0, FRAME_OFF_SSTATUS(sp)
|
LOAD t0, FRAME_OFF_SSTATUS(sp)
|
||||||
andi t0, t0, SSTATUS_SPP
|
andi t0, t0, SSTATUS_SPP
|
||||||
beqz t0, arch_ret_to_user
|
bnez t0, _resume_kernel
|
||||||
|
call arch_ret_to_user
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_resume_kernel:
|
_resume_kernel:
|
||||||
|
|
Loading…
Reference in New Issue