forward microwatt mmu specific SPR: PID and PRTBL
authorTobias Platen <tplaten@posteo.de>
Sat, 13 Feb 2021 17:07:43 +0000 (18:07 +0100)
committerTobias Platen <tplaten@posteo.de>
Sat, 13 Feb 2021 17:07:43 +0000 (18:07 +0100)
src/soc/decoder/power_decoder2.py

index 4e5b9eb38b1df98ee65f428ceecdb538c3199007..3dcc5a373e06abec1544ee1ff9507595862d546e 100644 (file)
@@ -906,11 +906,13 @@ class PowerDecodeSubset(Elaboratable):
         spr = Signal(10, reset_less=True)
         comb += spr.eq(decode_spr_num(self.dec.SPR)) # from XFX
 
-        # for first test only forward SPRs 18 and 19 to MMU, when
-        # operation is MTSPR or MFSPR.  TODO: add other MMU SPRs
+        SPR_PID   = 48  # TODO read docs for POWER9
+        # Microwatt doesn't implement the partition table
+        # instead has PRTBL register (SPR) to point to process table
+        SPR_PRTBL = 720 # see common.vhdl in microwatt, not in POWER9
         with m.If(((self.dec.op.internal_op == MicrOp.OP_MTSPR) |
                    (self.dec.op.internal_op == MicrOp.OP_MFSPR)) &
-                  ((spr == SPR.DSISR) | (spr == SPR.DAR))):
+                  ((spr == SPR.DSISR) | (spr == SPR.DAR) | (spr==SPR_PRTBL) | (spr==SPR_PID))):
             comb += self.do_copy("fn_unit", Function.MMU)
         with m.Else():
             comb += self.do_copy("fn_unit",fn)