[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: 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

View File

@ -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: