if self.funit == Function.LDST:
yield from dump_sim_memory(self, l0, sim, code)
- yield from self.iodef.check_cu_outputs(res, pdecode2,
- sim, cu.alu, code)
# sigh. hard-coded. test memory
if self.funit == Function.LDST:
yield from check_sim_memory(self, l0, sim, code)
+ yield from self.iodef.check_cu_outputs(res, pdecode2,
+ sim, cu,
+ code)
+ else:
+ yield from self.iodef.check_cu_outputs(res, pdecode2,
+ sim, cu.alu,
+ code)
sim.add_sync_process(process)
print ("check cu outputs", code, res)
- rc = yield dec2.e.rc.data
- op = yield dec2.e.insn_type
+ rc = yield dec2.e.do.rc.data
+ op = yield dec2.e.do.insn_type
cridx_ok = yield dec2.e.write_cr.ok
cridx = yield dec2.e.write_cr.data
a copy of the relevant subset information from Decode2Execute1Type
needed for LD/ST operations. use with eq_from_execute1 (below) to
grab subsets.
+
+ note: rc / oe is needed (later) for st*cx when it comes to setting OV/SO
"""
def __init__(self, name=None):
layout = (('insn_type', InternalOp),
('imm_data', Layout((("imm", 64), ("imm_ok", 1)))),
('zero_a', 1),
+ ('rc', Layout((("rc", 1), ("rc_ok", 1)))), # for later
+ ('oe', Layout((("oe", 1), ("oe_ok", 1)))), # for later
('is_32bit', 1),
('is_signed', 1),
('data_len', 4),
res['rc'] = sim.gpr(data3).value
# XER.so
- oe = yield dec2.e.oe.data[0] & dec2.e.oe.ok
+ oe = yield dec2.e.do.oe.data[0] & dec2.e.do.oe.ok
if oe:
so = 1 if sim.spr['XER'][XER_bits['SO']] else 0
res['xer_so'] = so