diff --git a/riscv/insns/sret.h b/riscv/insns/sret.h index b05ced35..ffe882e4 100644 --- a/riscv/insns/sret.h +++ b/riscv/insns/sret.h @@ -8,14 +8,14 @@ if (STATE.v) { } reg_t next_pc = p->get_state()->sepc->read(); set_pc_and_serialize(next_pc); -reg_t s = STATE.sstatus->read(); +reg_t s = STATE.mstatus->read(); reg_t prev_prv = get_field(s, MSTATUS_SPP); if (prev_prv != PRV_M) s = set_field(s, MSTATUS_MPRV, 0); s = set_field(s, MSTATUS_SIE, get_field(s, MSTATUS_SPIE)); s = set_field(s, MSTATUS_SPIE, 1); s = set_field(s, MSTATUS_SPP, PRV_U); -STATE.sstatus->write(s); +STATE.mstatus->write(s); p->set_privilege(prev_prv); if (!STATE.v) { reg_t prev_virt = get_field(prev_hstatus, HSTATUS_SPV);