diff options
author | Andrew Waterman <andrew@sifive.com> | 2017-02-01 22:33:38 -0800 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2017-02-01 22:33:38 -0800 |
commit | d392463e5c8e47cfa030eb4640585302f800207f (patch) | |
tree | bfb04a77aaaf79d35fd2d32729a55584f34eb23b | |
parent | e9e30598e08e4f162b523f9ef07f1510f3cfe0a6 (diff) | |
download | spike-d392463e5c8e47cfa030eb4640585302f800207f.zip spike-d392463e5c8e47cfa030eb4640585302f800207f.tar.gz spike-d392463e5c8e47cfa030eb4640585302f800207f.tar.bz2 |
Set xPIE=1 on xRET
Resolves #88.
-rw-r--r-- | riscv/insns/mret.h | 2 | ||||
-rw-r--r-- | riscv/insns/sret.h | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/riscv/insns/mret.h b/riscv/insns/mret.h index fa97b2c..f3c4414 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 f5e89e4..b593198 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); |