82c82
< thread->setStatus(ThreadContext::Suspended);
---
> thread->setStatus(ThreadContext::Unallocated);
94,96d93
<
< fetchOffset = 0;
< stayAtPC = false;
341,343c338,340
< const Addr PCMask = ~(sizeof(MachInst) - 1);
< Addr fetchPC = thread->readPC() + fetchOffset;
< req->setVirt(0, fetchPC & PCMask, sizeof(MachInst), 0, thread->readPC());
---
> req->setVirt(0, thread->readPC() & ~3, sizeof(MachInst),
> (FULL_SYSTEM && (thread->readPC() & 1)) ? PHYSICAL : 0,
> thread->readPC());
371d367
<
374d369
<
381d375
< const Addr PCMask = ~(sizeof(MachInst) - 1);
383,384c377
< predecoder.moreBytes((thread->readPC() & PCMask) + fetchOffset,
< 0, inst);
---
> predecoder.moreBytes(thread->readPC(), 0, inst);
387,394c380,381
<
< //If an instruction is ready, decode it. Otherwise, we'll have to
< //fetch beyond the MachInst at the current pc.
< if (predecoder.extMachInstReady()) {
< #if THE_ISA == X86_ISA
< thread->setNextPC(thread->readPC() + predecoder.getInstSize());
< #endif // X86_ISA
< stayAtPC = false;
---
> //If an instruction is ready, decode it
> if (predecoder.extMachInstReady())
396,399d382
< } else {
< stayAtPC = true;
< fetchOffset += sizeof(MachInst);
< }
467,468d449
< //Since we're moving to a new pc, zero out the offset
< fetchOffset = 0;
474c455
< } else {
---
> } else if (predecoder.needMoreBytes()) {