70c70
< def emitHelper(self, base = 'Memory', wbDecl = None, instFlags = []):
---
> def emitHelper(self, base = 'Memory', wbDecl = None, instFlags = [], pcDecl = None):
79c79,80
< self.memFlags, instFlags, base, wbDecl)
---
> self.memFlags, instFlags, base,
> wbDecl, pcDecl)
107,119c108,110
< SCTLR sctlr = Sctlr;
< // Use the version of NPC that gets set before NextThumb
< pNPC = cSwap<uint32_t>(Mem.ud, cpsr.e);
< uint32_t tempSpsr = cSwap<uint32_t>(Mem.ud >> 32, cpsr.e);
< uint32_t newCpsr =
< cpsrWriteByInstr(cpsr | CondCodes, tempSpsr,
< 0xF, true, sctlr.nmfi);
< Cpsr = ~CondCodesMask & newCpsr;
< NextThumb = ((CPSR)newCpsr).t;
< NextJazelle = ((CPSR)newCpsr).j;
< ForcedItState = ((((CPSR)tempSpsr).it2 << 2) & 0xFC)
< | (((CPSR)tempSpsr).it1 & 0x3);
< CondCodes = CondCodesMask & newCpsr;
---
> URc = cpsr | CondCodes;
> URa = cSwap<uint32_t>(Mem.ud, cpsr.e);
> URb = cSwap<uint32_t>(Mem.ud >> 32, cpsr.e);
123a115,116
> pcDecl = "MicroUopSetPCCPSR(machInst, INTREG_UREG0, INTREG_UREG1, INTREG_UREG2);"
>
126c119
< self.emitHelper('RfeOp', wbDecl, ["IsSerializeAfter", "IsNonSpeculative"])
---
> self.emitHelper('RfeOp', wbDecl, ["IsSerializeAfter", "IsNonSpeculative"], pcDecl)