|
@@ -365,6 +365,14 @@ extern "C" fn start_trap_rust(trap_frame: &mut TrapFrame) {
|
|
|
if trap_frame.a7 == 0x09 {
|
|
|
unsafe { DEVINTRENTRY = trap_frame.a0; }
|
|
|
} else {
|
|
|
+ if trap_frame.a7 == 0x0 {
|
|
|
+ unsafe {
|
|
|
+ let mtip = mip::read().mtimer();
|
|
|
+ if mtip {
|
|
|
+ mie::set_mext();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
let params = [trap_frame.a0, trap_frame.a1, trap_frame.a2, trap_frame.a3];
|
|
|
let ans = rustsbi::ecall(trap_frame.a7, trap_frame.a6, params);
|
|
|
trap_frame.a0 = ans.error;
|