summaryrefslogtreecommitdiff
path: root/mips/mips_insts.sail
diff options
context:
space:
mode:
Diffstat (limited to 'mips/mips_insts.sail')
-rw-r--r--mips/mips_insts.sail38
1 files changed, 32 insertions, 6 deletions
diff --git a/mips/mips_insts.sail b/mips/mips_insts.sail
index ba0dc258..a265bd13 100644
--- a/mips/mips_insts.sail
+++ b/mips/mips_insts.sail
@@ -1344,13 +1344,39 @@ function clause execute (MFC0(rt, rd, sel, double)) = {
case (0b01111,0b111) -> 0 (* 15, sel 7: CHERI thread ID *)
case (0b10000,0b000) -> EXTZ(0b1 (* M *) (* 16, sel 0: Config0 *)
: 0b000000000000000 (* Impl *)
- : 0b1 (* BE *)
- : 0b10 (* AT *)
- : 0b000 (* AR *)
- : 0b000 (* MT no MMU *)
- : 0b0000 (* zero *)
+ : 0b1 (* BE *)
+ : 0b10 (* AT *)
+ : 0b000 (* AR *)
+ : 0b000 (* MT no MMU *)
+ : 0b0000 (* zero *)
: 0b000) (* K0 TODO should be writable*)
- case (0b10000,0b001) -> 0 (* 16, sel 1: Config1 *)
+ case (0b10000,0b001) -> EXTZ( (* 16, sel 1: Config1 *)
+ 0b1 (* M *)
+ : 0b000000 (* MMU size-1 *)
+ : 0b000 (* IS icache sets *)
+ : 0b000 (* IL icache lines *)
+ : 0b000 (* IA icache assoc. *)
+ : 0b000 (* DS dcache sets *)
+ : 0b000 (* DL dcache lines *)
+ : 0b000 (* DA dcache assoc. *)
+ : [have_cp2] (* C2 CP2 presence *)
+ : 0b0 (* MD MDMX implemented *)
+ : 0b0 (* PC performance counters *)
+ : 0b0 (* WR watch registers *)
+ : 0b0 (* CA 16e code compression *)
+ : 0b0 (* EP EJTAG *)
+ : 0b0) (* FP FPU present *)
+ case (0b10000,0b010) -> EXTZ( (* 16, sel 2: Config2 *)
+ 0b1 (* M *)
+ : 0b000 (* TU L3 control *)
+ : 0b0000 (* TS L3 sets *)
+ : 0b0000 (* TL L3 lines *)
+ : 0b0000 (* TA L3 assoc. *)
+ : 0b0000 (* SU L2 control *)
+ : 0b0000 (* SS L2 sets *)
+ : 0b0000 (* SL L2 lines *)
+ : 0b0000) (* SA L2 assoc. *)
+ case (0b10000,0b011) -> 0x0000000000002000 (* 16, sel 3: Config3 zero except for bit 13 == ulri *)
case (0b10001,0b000) -> CP0LLAddr (* 17, sel 0: LLAddr *)
case (0b10010,0b000) -> 0 (* 18, WatchLo *)
case (0b10011,0b000) -> 0 (* 19, WatchHi *)