Flush icache before returning to user.

This commit is contained in:
Yifan Wu 2021-01-03 17:02:34 +08:00
parent 8522c2f4cd
commit 6011a6a943

View file

@ -86,6 +86,7 @@ pub fn trap_return() -> ! {
} }
let restore_va = __restore as usize - __alltraps as usize + TRAMPOLINE; let restore_va = __restore as usize - __alltraps as usize + TRAMPOLINE;
unsafe { unsafe {
llvm_asm!("fence.i" :::: "volatile");
llvm_asm!("jr $0" :: "r"(restore_va), "{a0}"(trap_cx_ptr), "{a1}"(user_satp) :: "volatile"); llvm_asm!("jr $0" :: "r"(restore_va), "{a0}"(trap_cx_ptr), "{a1}"(user_satp) :: "volatile");
} }
panic!("Unreachable in back_to_user!"); panic!("Unreachable in back_to_user!");