+ with m.If(self.req.alignstate == Misalign.ONEWORD):
+ # done if there is only one dcache operation
+ sync += self.state.eq(State.IDLE)
+ sync += ldst_r.eq(0)
+ with m.If(self.load):
+ m.d.comb += self.load_data.eq(d_in.data)
+ with m.Elif(self.req.alignstate == Misalign.WAITFIRST):
+ # first LD done: load data, initiate 2nd request
+ with m.If(self.load):
+ m.d.comb += self.load_data[0:63].eq(d_in.data)
+ m.d.comb += self.d_validblip.eq(1)
+ comb += self.req.eq(ldst_r) # from copy of request
+ comb += self.req.raddr.eq(ldst_r.raddr + 8)
+ comb += self.req.alignstate.eq(Misalign.WAITSECOND)