Revert "fix Bug 607 - unnecessary code added related to MMU in PowerDecoder2"
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 1 Mar 2021 19:35:31 +0000 (19:35 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 1 Mar 2021 19:35:31 +0000 (19:35 +0000)
This reverts commit 0b31706069567c4124ebac487f238342cc540d79.

src/soc/decoder/power_decoder2.py

index 0a204904b34b40f733c579b1b3f4054ee4b8e2d7..6b3530813943dd37a07bc68d42c4c4cbaf7deac2 100644 (file)
@@ -771,8 +771,16 @@ class PowerDecodeSubset(Elaboratable):
 
         # set up instruction type
         # no op: defaults to OP_ILLEGAL
-        # FIX https://bugs.libre-soc.org/show_bug.cgi?id=607
-        comb += self.do_copy("insn_type", self.op_get("internal_op"))
+        if self.fn_name=="MMU":
+            # mmu is special case: needs SPR opcode as well
+            mmu0 = self.mmu0_spr_dec
+            with m.If(((mmu0.dec.op.internal_op == MicrOp.OP_MTSPR) |
+                       (mmu0.dec.op.internal_op == MicrOp.OP_MFSPR))):
+                comb += self.do_copy("insn_type", mmu0.op_get("internal_op"))
+            with m.Else():
+                comb += self.do_copy("insn_type", self.op_get("internal_op"))
+        else:
+            comb += self.do_copy("insn_type", self.op_get("internal_op"))
 
         # function unit for decoded instruction: requires minor redirect
         # for SPR set/get