[libcpu]riscv使用call指令解决长跳转问题

This commit is contained in:
heyuanjie87 2024-11-05 16:00:36 +08:00 committed by Rbb666
parent 0d9185bd5a
commit 2b21b095f9
2 changed files with 8 additions and 6 deletions

View File

@ -77,11 +77,11 @@
rt_hw_context_switch_to:
LOAD sp, (a0)
jal rt_thread_self
call rt_thread_self
mv s1, a0
#ifdef RT_USING_SMART
jal lwp_aspace_switch
call lwp_aspace_switch
#endif
RESTORE_CONTEXT
@ -104,11 +104,11 @@ rt_hw_context_switch:
LOAD sp, (a1)
// restore Address Space
jal rt_thread_self
call rt_thread_self
mv s1, a0
#ifdef RT_USING_SMART
jal lwp_aspace_switch
call lwp_aspace_switch
#endif
RESTORE_CONTEXT

View File

@ -46,7 +46,8 @@ _distinguish_syscall:
#ifdef RT_USING_SMART
// TODO swap 8 with config macro name
li t1, 8
beq t0, t1, syscall_entry
bne t0, t1, _handle_interrupt_and_exception
call syscall_entry
// syscall never return here
#endif
@ -78,7 +79,8 @@ _resume_execution:
#ifdef RT_USING_SMART
LOAD t0, FRAME_OFF_SSTATUS(sp)
andi t0, t0, SSTATUS_SPP
beqz t0, arch_ret_to_user
bnez t0, _resume_kernel
call arch_ret_to_user
#endif
_resume_kernel: