diff --git a/riscv/insns/mret.h b/riscv/insns/mret.h index fa97b2c6..f3c44140 100644 --- a/riscv/insns/mret.h +++ b/riscv/insns/mret.h @@ -3,7 +3,7 @@ set_pc_and_serialize(p->get_state()->mepc); reg_t s = STATE.mstatus; reg_t prev_prv = get_field(s, MSTATUS_MPP); s = set_field(s, MSTATUS_UIE << prev_prv, get_field(s, MSTATUS_MPIE)); -s = set_field(s, MSTATUS_MPIE, 0); +s = set_field(s, MSTATUS_MPIE, 1); s = set_field(s, MSTATUS_MPP, PRV_U); p->set_privilege(prev_prv); p->set_csr(CSR_MSTATUS, s); diff --git a/riscv/insns/sret.h b/riscv/insns/sret.h index f5e89e44..b5931985 100644 --- a/riscv/insns/sret.h +++ b/riscv/insns/sret.h @@ -3,7 +3,7 @@ set_pc_and_serialize(p->get_state()->sepc); reg_t s = STATE.mstatus; reg_t prev_prv = get_field(s, MSTATUS_SPP); s = set_field(s, MSTATUS_UIE << prev_prv, get_field(s, MSTATUS_SPIE)); -s = set_field(s, MSTATUS_SPIE, 0); +s = set_field(s, MSTATUS_SPIE, 1); s = set_field(s, MSTATUS_SPP, PRV_U); p->set_privilege(prev_prv); p->set_csr(CSR_MSTATUS, s);