|
|
|
@ -10,5 +10,11 @@ if (prev_prv != PRV_M) { |
|
|
|
STATE.mstatus->write(mstatus); |
|
|
|
} |
|
|
|
s = set_field(s, MNSTATUS_NMIE, 1); |
|
|
|
if (ZICFILP_xLPE(prev_virt, prev_prv)) { |
|
|
|
STATE.elp = static_cast<elp_t>(get_field(s, MNSTATUS_MNPELP)); |
|
|
|
} |
|
|
|
if (p->extension_enabled(EXT_ZICFILP)) { |
|
|
|
s = set_field(s, MNSTATUS_MNPELP, elp_t::NO_LP_EXPECTED); |
|
|
|
} |
|
|
|
STATE.mnstatus->write(s); |
|
|
|
p->set_privilege(prev_prv, prev_virt); |
|
|
|
|