sync += Display("request collision loadstore vs MMU")
with m.If(m_in.valid):
- sync += r.req.valid.eq(1)
- sync += r.req.load.eq(~(m_in.tlbie | m_in.tlbld))# no invalidate
- sync += r.req.dcbz.eq(0)
- sync += r.req.nc.eq(0)
- sync += r.req.reserve.eq(0)
- sync += r.req.virt_mode.eq(0)
- sync += r.req.priv_mode.eq(1)
- sync += r.req.addr.eq(m_in.addr)
- sync += r.req.data.eq(m_in.pte)
- sync += r.req.byte_sel.eq(~0) # Const -1 sets all to 0b111....
- sync += r.tlbie.eq(m_in.tlbie)
- sync += r.doall.eq(m_in.doall)
- sync += r.tlbld.eq(m_in.tlbld)
- sync += r.mmu_req.eq(1)
+ comb += r.req.valid.eq(1)
+ comb += r.req.load.eq(~(m_in.tlbie | m_in.tlbld))# no invalidate
+ comb += r.req.dcbz.eq(0)
+ comb += r.req.nc.eq(0)
+ comb += r.req.reserve.eq(0)
+ comb += r.req.virt_mode.eq(0)
+ comb += r.req.priv_mode.eq(1)
+ comb += r.req.addr.eq(m_in.addr)
+ comb += r.req.data.eq(m_in.pte)
+ comb += r.req.byte_sel.eq(~0) # Const -1 sets all to 0b111....
+ comb += r.tlbie.eq(m_in.tlbie)
+ comb += r.doall.eq(m_in.doall)
+ comb += r.tlbld.eq(m_in.tlbld)
+ comb += r.mmu_req.eq(1)
m.d.sync += Display(" DCACHE req mmu addr %x pte %x ld %d",
m_in.addr, m_in.pte, r.req.load)
with m.Else():
- sync += r.req.eq(d_in)
- sync += r.req.data.eq(0)
- sync += r.tlbie.eq(0)
- sync += r.doall.eq(0)
- sync += r.tlbld.eq(0)
- sync += r.mmu_req.eq(0)
- sync += r.d_valid.eq(0)
+ comb += r.req.eq(d_in)
+ comb += r.req.data.eq(0)
+ comb += r.tlbie.eq(0)
+ comb += r.doall.eq(0)
+ comb += r.tlbld.eq(0)
+ comb += r.mmu_req.eq(0)
with m.If((~r1.full & ~d_in.hold) | ~r0_full):
sync += r0.eq(r)