diff --git a/src/cpu/o3/dyn_inst_impl.hh b/src/cpu/o3/dyn_inst_impl.hh index 6f7c23b2fb..2687466552 100644 --- a/src/cpu/o3/dyn_inst_impl.hh +++ b/src/cpu/o3/dyn_inst_impl.hh @@ -113,8 +113,17 @@ template Fault BaseO3DynInst::completeAcc(PacketPtr pkt) { + // @todo: Pretty convoluted way to avoid squashing from happening + // when using the TC during an instruction's execution + // (specifically for instructions that have side-effects that use + // the TC). Fix this. + bool in_syscall = this->thread->inSyscall; + this->thread->inSyscall = true; + this->fault = this->staticInst->completeAcc(pkt, this, this->traceData); + this->thread->inSyscall = in_syscall; + return this->fault; }