310,311c310
< MiscReg PC = tc->readPC();
< MiscReg NPC = tc->readNextPC();
---
> PCState pc = tc->pcState();
315,318c314
< if (bits(PSTATE, 3,3)) {
< PC &= mask(32);
< NPC &= mask(32);
< }
---
> Addr pcMask = bits(PSTATE, 3) ? mask(32) : mask(64);
335c331
< tc->setMiscRegNoEffect(MISCREG_TPC, PC);
---
> tc->setMiscRegNoEffect(MISCREG_TPC, pc.pc() & pcMask);
337c333
< tc->setMiscRegNoEffect(MISCREG_TNPC, NPC);
---
> tc->setMiscRegNoEffect(MISCREG_TNPC, pc.npc() & pcMask);
397,398c393
< MiscReg PC = tc->readPC();
< MiscReg NPC = tc->readNextPC();
---
> PCState pc = tc->pcState();
400,404d394
< if (bits(PSTATE, 3,3)) {
< PC &= mask(32);
< NPC &= mask(32);
< }
<
408a399,400
> Addr pcMask = bits(PSTATE, 3) ? mask(32) : mask(64);
>
426c418
< tc->setMiscRegNoEffect(MISCREG_TPC, PC);
---
> tc->setMiscRegNoEffect(MISCREG_TPC, pc.pc() & pcMask);
428c420
< tc->setMiscRegNoEffect(MISCREG_TNPC, NPC);
---
> tc->setMiscRegNoEffect(MISCREG_TNPC, pc.npc() & pcMask);
482c474
< void getREDVector(MiscReg TT, Addr & PC, Addr & NPC)
---
> void getREDVector(MiscReg TT, Addr &PC, Addr &NPC)
557,559c549,555
< tc->setPC(PC);
< tc->setNextPC(NPC);
< tc->setNextNPC(NPC + sizeof(MachInst));
---
> PCState pc;
> pc.pc(PC);
> pc.npc(NPC);
> pc.nnpc(NPC + sizeof(MachInst));
> pc.upc(0);
> pc.nupc(1);
> tc->pcState(pc);
596,598d591
< tc->setPC(PC);
< tc->setNextPC(NPC);
< tc->setNextNPC(NPC + sizeof(MachInst));
599a593,600
> PCState pc;
> pc.pc(PC);
> pc.npc(NPC);
> pc.nnpc(NPC + sizeof(MachInst));
> pc.upc(0);
> pc.nupc(1);
> tc->pcState(pc);
>
667,670c668
< Addr spillStart = lp->readSpillStart();
< tc->setPC(spillStart);
< tc->setNextPC(spillStart + sizeof(MachInst));
< tc->setNextNPC(spillStart + 2*sizeof(MachInst));
---
> tc->pcState(lp->readSpillStart());
684,687c682
< Addr fillStart = lp->readFillStart();
< tc->setPC(fillStart);
< tc->setNextPC(fillStart + sizeof(MachInst));
< tc->setNextNPC(fillStart + 2*sizeof(MachInst));
---
> tc->pcState(lp->readFillStart());
705,707c700,702
< tc->setPC(tc->readNextPC());
< tc->setNextPC(tc->readNextNPC());
< tc->setNextNPC(tc->readNextNPC() + sizeof(MachInst));
---
> PCState pc = tc->pcState();
> pc.advance();
> tc->pcState(pc);