this->interrupts->updateIntrInfo(this->threadContexts[0]);
DPRINTF(InOrderCPU, "Interrupt %s being handled\n", interrupt->name());
- this->trap(interrupt, 0);
+ static StaticInstPtr dummyStatic(TheISA::NoopMachInst, 0);
+ static DynInstPtr dummyDyn = new Impl::DynInst(dummyStatic);
+ this->trap(interrupt, dummyDyn);
}
// needed to update the state as soon as possible. This
// prevents external agents from changing any specific state
// that the trap need.
- cpu->trap(inst_fault, tid, head_inst);
+ cpu->trap(inst_fault, tid, head_inst->staticInst);
// Exit state update mode to avoid accidental updating.
thread[tid]->inSyscall = false;
this->interrupts->updateIntrInfo(this->threadContexts[0]);
DPRINTF(O3CPU, "Interrupt %s being handled\n", interrupt->name());
- DynInstPtr dummyInst;
- this->trap(interrupt, 0, dummyInst);
+ this->trap(interrupt, 0, NULL);
}
template <class Impl>
template <class Impl>
void
-FullO3CPU<Impl>::trap(Fault fault, ThreadID tid, DynInstPtr inst)
+FullO3CPU<Impl>::trap(Fault fault, ThreadID tid, StaticInstPtr inst)
{
// Pass the thread's TC into the invoke method.
- fault->invoke(this->threadContexts[tid], inst->staticInst);
+ fault->invoke(this->threadContexts[tid], inst);
}
#if !FULL_SYSTEM
{ return globalSeqNum++; }
/** Traps to handle given fault. */
- void trap(Fault fault, ThreadID tid, DynInstPtr inst);
+ void trap(Fault fault, ThreadID tid, StaticInstPtr inst);
#if FULL_SYSTEM
/** HW return from error interrupt. */
void
BaseO3DynInst<Impl>::trap(Fault fault)
{
- this->cpu->trap(fault, this->threadNumber, this);
+ this->cpu->trap(fault, this->threadNumber, this->staticInst);
}
template <class Impl>