Set xPIE=1 on xRET
authorAndrew Waterman <andrew@sifive.com>
Thu, 2 Feb 2017 06:33:38 +0000 (22:33 -0800)
committerAndrew Waterman <andrew@sifive.com>
Thu, 2 Feb 2017 06:33:38 +0000 (22:33 -0800)
Resolves #88.

riscv/insns/mret.h
riscv/insns/sret.h

index fa97b2c6b1b6400f4090711b393d51192607c958..f3c441406c5cf7af22746c5eb21172660cb679eb 100644 (file)
@@ -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);
index f5e89e44686e740860c60c9c7d317826add6febe..b593198514115bbec7d1b3684f9a69d0edd81106 100644 (file)
@@ -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);