Implement TRAP instructions OP_RFID and OP_SC
authorcolepoirier <colepoirier@gmail.com>
Tue, 2 Jun 2020 23:41:37 +0000 (16:41 -0700)
committercolepoirier <colepoirier@gmail.com>
Tue, 2 Jun 2020 23:41:37 +0000 (16:41 -0700)
src/soc/fu/trap/main_stage.py

index bbd00b64c9919bfc6519a9cf22c1d904ae2ded12..03e5c2e4ab776564e755ec5b6407b2979b97977d 100644 (file)
@@ -163,7 +163,8 @@ class TrapMainStage(PipeModBase):
                     ctrl_tmp.msr(MSR_DR) <= '1';
                 end if;
                 """
-                pass
+                comb += self.o.msr.data.eq(Cat(b[63:31], b[26:22], b[15:0]))
+                comb += self.o.msr.ok.eq(a)
 
             # TODO
             with m.Case(InternalOp.OP_SC):
@@ -173,7 +174,8 @@ class TrapMainStage(PipeModBase):
                 ctrl_tmp.irq_nia <= std_logic_vector(to_unsigned(16#C00#, 64));
                 ctrl_tmp.srr1 <= msr_copy(ctrl.msr);
                 """
-                pass
+                comb += self.o.nia.eq(0xC00)
+                comb += self.o.nia.ok.eq(1)
 
             #with m.Case(InternalOp.OP_ADDPCIS):
             #    pass