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