File tree Expand file tree Collapse file tree 2 files changed +8
-18
lines changed Expand file tree Collapse file tree 2 files changed +8
-18
lines changed Original file line number Diff line number Diff line change @@ -15,14 +15,10 @@ if (ZICFILP_xLPE(prev_virt, prev_prv)) {
15
15
s = set_field (s , MSTATUS_MPELP , elp_t ::NO_LP_EXPECTED );
16
16
17
17
s = set_field (s , MSTATUS_MDT , 0 );
18
- if (prev_prv == PRV_U || prev_virt ) {
18
+ if (prev_prv == PRV_U || prev_virt )
19
19
s = set_field (s , MSTATUS_SDT , 0 );
20
- }
21
- if (prev_virt && prev_prv == PRV_U ) {
22
- reg_t vs = STATE .vsstatus -> read ();
23
- vs = set_field (vs , SSTATUS_SDT , 0 );
24
- STATE .vsstatus -> write (vs );
25
- }
20
+ if (prev_virt && prev_prv == PRV_U )
21
+ STATE .vsstatus -> write (STATE .vsstatus -> read () & ~SSTATUS_SDT );
26
22
27
23
STATE .mstatus -> write (s );
28
24
if (STATE .mstatush ) STATE .mstatush -> write (s >> 32 ); // log mstatush change
Original file line number Diff line number Diff line change @@ -28,17 +28,11 @@ if (ZICFILP_xLPE(prev_virt, prev_prv)) {
28
28
}
29
29
30
30
if (STATE .prv == PRV_M ) {
31
- reg_t m = STATE .mstatus -> read ();
32
- m = set_field (m , MSTATUS_MDT , 0 );
33
- if (prev_prv == PRV_U || prev_virt ) {
34
- s = set_field (s , MSTATUS_SDT , 0 );
35
- }
36
- STATE .mstatus -> write (m );
37
- if (prev_virt && prev_prv == PRV_U ) {
38
- reg_t vs = STATE .vsstatus -> read ();
39
- vs = set_field (vs , SSTATUS_SDT , 0 );
40
- STATE .vsstatus -> write (vs );
41
- }
31
+ STATE .mstatus -> write (STATE .mstatus -> read () & ~MSTATUS_MDT );
32
+ if (prev_prv == PRV_U || prev_virt )
33
+ STATE .mstatus -> write (STATE .mstatus -> read () & ~MSTATUS_SDT );
34
+ if (prev_virt && prev_prv == PRV_U )
35
+ STATE .vsstatus -> write (STATE .vsstatus -> read () & ~SSTATUS_SDT );
42
36
}
43
37
44
38
s = set_field (s , SSTATUS_SPELP , elp_t ::NO_LP_EXPECTED );
You can’t perform that action at this time.
0 commit comments