Quellcode durchsuchen

Modify locally on k210 platform.

Yifan Wu vor 4 Jahren
Ursprung
Commit
14290382be
2 geänderte Dateien mit 8 neuen und 4 gelöschten Zeilen
  1. 8 0
      platform/k210/src/main.rs
  2. 0 4
      rustsbi/src/ecall/legacy.rs

+ 8 - 0
platform/k210/src/main.rs

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

+ 0 - 4
rustsbi/src/ecall/legacy.rs

@@ -34,13 +34,11 @@ pub fn set_timer_64(time_value: usize) -> SbiRet {
     if mtip {
         unsafe {
             mie::clear_mtimer();
-            mie::clear_mext();
             mip::set_stimer();
         }
     } else {
         unsafe {
             mie::set_mtimer();
-            mie::set_mext();
             mip::clear_stimer();
         }
     }
@@ -57,13 +55,11 @@ pub fn set_timer_32(arg0: usize, arg1: usize) -> SbiRet {
     if mtip {
         unsafe {
             mie::clear_mtimer();
-            mie::clear_mext();
             mip::set_stimer();
         }
     } else {
         unsafe {
             mie::set_mtimer();
-            mie::set_mext();
             mip::clear_stimer();
         }
     }