diff options
Diffstat (limited to 'mips/mips_insts.sail')
| -rw-r--r-- | mips/mips_insts.sail | 38 |
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 *) |
