self.pspec.dcache = self.dcache
# debugging output for gtkw
- self.debug0 = Signal(64)
- self.debug1 = Signal(64)
- self.debug2 = Signal(64)
- self.debug3 = Signal(64)
+ self.debug0 = Signal(4)
+ #self.debug1 = Signal(64)
+ #self.debug2 = Signal(64)
+ #self.debug3 = Signal(64)
# for SPR field number access
i = self.p.data_i
# responds ("done").
with m.Switch(op.insn_type):
with m.Case(MicrOp.OP_MTSPR):
- comb += self.debug0.eq(0xFF)
- comb += self.debug1.eq(spr)
- comb += self.debug2.eq(a_i)
- comb += self.debug3.eq(a_i[:32])
# subset SPR: first check a few bits
with m.If(~spr[9] & ~spr[5]):
with m.If(spr[0]):
comb += d_in.dcbz.eq(1) # dcbz mode
comb += d_in.addr.eq(a_i + b_i) # addr is (RA|0) + RB
comb += done.eq(d_out.store_done) # TODO
+ comb += self.debug0.eq(1)
+
with m.Case(MicrOp.OP_TLBIE):
# pass TLBIE request to MMU (spec: v3.0B p1034)
comb += l_in.sprn.eq(spr) # use sprn to send insn bits
comb += l_in.addr.eq(b_i) # incoming operand (RB)
comb += done.eq(l_out.done) # zzzz
+ comb += self.debug0.eq(2)
with m.If(self.n.ready_i & self.n.valid_o):
m.d.sync += busy.eq(0)
# this test case takes about half a minute to run on my Talos II
class MMUDataPathTestCase(TestAccumulatorBase):
- # MMU handles MTSPR, MFSPR, DCBZ and TLBIE.
+ # MMU on microwatt handles MTSPR, MFSPR, DCBZ and TLBIE.
+ # libre-soc has own SPR unit
# other instructions here -> must be load/store
def case_mfspr_after_invalid_load(self):
lst = [
- "tlbie 0,0,0,0,0" # RB,RS,RIC,PRS,R
+ "tlbie 0,0,0,0,0", # RB,RS,RIC,PRS,R
+ "dcbz 1,2"
]
initial_regs = [0] * 32