From e2c6185e3280c4ff26b2f20aa689a7ab521dd785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Fri, 18 Sep 2020 09:31:11 +0200 Subject: [PATCH] Clear MPRV on xret as per spec. --- src/main/java/li/cil/circuity/vm/riscv/R5CPU.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/li/cil/circuity/vm/riscv/R5CPU.java b/src/main/java/li/cil/circuity/vm/riscv/R5CPU.java index b90f2f4b..dc60e4ed 100644 --- a/src/main/java/li/cil/circuity/vm/riscv/R5CPU.java +++ b/src/main/java/li/cil/circuity/vm/riscv/R5CPU.java @@ -1428,8 +1428,7 @@ public class R5CPU implements Steppable, RealTimeCounter, InterruptController { (spie << spp); mstatus |= R5.STATUS_SPIE_MASK; mstatus &= ~R5.STATUS_SPP_MASK; - - // set MPRV = 0 + mstatus &= ~R5.STATUS_MPRV_MASK; setPrivilege(spp); @@ -1446,9 +1445,8 @@ public class R5CPU implements Steppable, RealTimeCounter, InterruptController { mstatus = (mstatus & ~R5.STATUS_MIE_MASK) | ((R5.STATUS_MIE_MASK * mpie) << R5.STATUS_MIE_SHIFT); mstatus |= R5.STATUS_MPIE_MASK; mstatus &= ~R5.STATUS_MPP_MASK; - if (mpp != R5.PRIVILEGE_M) { - // set MPRV = 0 + mstatus &= ~R5.STATUS_MPRV_MASK; } setPrivilege(mpp);