File tree Expand file tree Collapse file tree 2 files changed +11
-10
lines changed Expand file tree Collapse file tree 2 files changed +11
-10
lines changed Original file line number Diff line number Diff line change @@ -39,11 +39,7 @@ extern "C" fn rust_main(hartid: usize, _dtb_pa: usize) -> ! {
39
39
rcore_console:: init_console ( & Console ) ;
40
40
rcore_console:: set_log_level ( option_env ! ( "LOG" ) ) ;
41
41
rcore_console:: test_log ( ) ;
42
- // 打开软中断
43
- unsafe {
44
- sie:: set_ssoft ( ) ;
45
- sstatus:: set_sie ( ) ;
46
- } ;
42
+
47
43
// 测试调用延迟
48
44
let t0 = time:: read ( ) ;
49
45
@@ -53,18 +49,22 @@ extern "C" fn rust_main(hartid: usize, _dtb_pa: usize) -> ! {
53
49
54
50
let t1 = time:: read ( ) ;
55
51
log:: info!( "marchid duration = {}" , t1 - t0) ;
52
+
53
+ // 打开软中断
54
+ unsafe { sie:: set_ssoft ( ) } ;
56
55
// 测试中断响应延迟
57
56
let t0 = time:: read ( ) ;
58
-
59
57
for _ in 0 ..0x20000 {
60
58
unsafe {
59
+ sstatus:: set_sie ( ) ;
61
60
core:: arch:: asm!(
62
61
" la {0}, 1f
63
62
csrw stvec, {0}
64
63
mv a0, a2
65
64
mv a1, zero
66
65
ecall
67
- wfi
66
+ 0: wfi
67
+ j 0b
68
68
.align 2
69
69
1: csrci sip, {ssip}
70
70
" ,
Original file line number Diff line number Diff line change @@ -62,7 +62,7 @@ unsafe extern "C" fn _start() -> ! {
62
62
63
63
#[ naked]
64
64
unsafe extern "C" fn _stop ( ) -> ! {
65
- asm ! ( "wfi" , options( noreturn) )
65
+ asm ! ( "0: wfi" , "j 0b ", options( noreturn) )
66
66
}
67
67
68
68
/// rust 入口。
@@ -400,8 +400,9 @@ impl rustsbi::Hsm for Hsm {
400
400
csrrw {0}, mtvec, {0}
401
401
csrr {1}, mepc
402
402
csrrsi {2}, mstatus, {mie}
403
- wfi
404
- 1: csrw mstatus, {2}
403
+ 0: wfi
404
+ j 0b
405
+ 1: csrw mstatus, {2}
405
406
csrw mepc, {1}
406
407
csrw mtvec, {0}
407
408
" ,
You can’t perform that action at this time.
0 commit comments