Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
ved-rivos committed Jul 5, 2024
1 parent e7fd2e8 commit 4f2e472
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 18 deletions.
10 changes: 3 additions & 7 deletions riscv/insns/mret.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,10 @@ if (ZICFILP_xLPE(prev_virt, prev_prv)) {
s = set_field(s, MSTATUS_MPELP, elp_t::NO_LP_EXPECTED);

s = set_field(s, MSTATUS_MDT, 0);
if (prev_prv == PRV_U || prev_virt) {
if (prev_prv == PRV_U || prev_virt)
s = set_field(s, MSTATUS_SDT, 0);
}
if (prev_virt && prev_prv == PRV_U) {
reg_t vs = STATE.vsstatus->read();
vs = set_field(vs, SSTATUS_SDT, 0);
STATE.vsstatus->write(vs);
}
if (prev_virt && prev_prv == PRV_U)
STATE.vsstatus->write(STATE.vsstatus->read() & ~SSTATUS_SDT);

STATE.mstatus->write(s);
if (STATE.mstatush) STATE.mstatush->write(s >> 32); // log mstatush change
Expand Down
16 changes: 5 additions & 11 deletions riscv/insns/sret.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,11 @@ if (ZICFILP_xLPE(prev_virt, prev_prv)) {
}

if (STATE.prv == PRV_M) {
reg_t m = STATE.mstatus->read();
m = set_field(m, MSTATUS_MDT, 0);
if (prev_prv == PRV_U || prev_virt) {
s = set_field(s, MSTATUS_SDT, 0);
}
STATE.mstatus->write(m);
if (prev_virt && prev_prv == PRV_U) {
reg_t vs = STATE.vsstatus->read();
vs = set_field(vs, SSTATUS_SDT, 0);
STATE.vsstatus->write(vs);
}
STATE.mstatus->write(STATE.mstatus->read() & ~MSTATUS_MDT);
if (prev_prv == PRV_U || prev_virt)
STATE.mstatus->write(STATE.mstatus->read() & ~MSTATUS_SDT);
if (prev_virt && prev_prv == PRV_U)
STATE.vsstatus->write(STATE.vsstatus->read() & ~SSTATUS_SDT);
}

s = set_field(s, SSTATUS_SPELP, elp_t::NO_LP_EXPECTED);
Expand Down

0 comments on commit 4f2e472

Please sign in to comment.