summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Norton2016-05-10 16:49:44 +0100
committerRobert Norton2016-05-10 16:49:44 +0100
commit2881758c6fa86460329e27e419cedca5b4921f15 (patch)
treedd68a1fad5b19b450c8f09ca1de8edbce1519ff1
parent1877e8051dd9865f98df810550014537cf42a744 (diff)
Implement mfc0/mtc0 ErrorEPC.
-rw-r--r--mips/mips_insts.sail2
1 files changed, 2 insertions, 0 deletions
diff --git a/mips/mips_insts.sail b/mips/mips_insts.sail
index 853397fa..76ec25d7 100644
--- a/mips/mips_insts.sail
+++ b/mips/mips_insts.sail
@@ -1352,6 +1352,7 @@ function clause execute (MFC0(rt, rd, sel, double)) =
case (0b10010,0b000) -> 0 (* 18, WatchLo *)
case (0b10011,0b000) -> 0 (* 19, WatchHi *)
case (0b10100,0b000) -> 0 (* 20, XContext *)
+ case (0b11110,0b000) -> CP0ErrorEPC (* 30, ErrorEPC *)
case _ -> {exit (SignalException(ResI)); 0}
} in
wGPR(rt) := if (double) then result else EXTS(result[31..0])
@@ -1387,6 +1388,7 @@ function clause execute (MTC0(rt, rd, sel, double)) =
(CP0Cause.IP)[9..8] := reg_val[9..8];
}
case (0b01110,0b000) -> CP0EPC := reg_val (* 14, EPC *)
+ case (0b11110,0b000) -> CP0ErrorEPC := reg_val (* 30, ErrorEPC *)
case _ -> exit (SignalException(ResI))
}