diff options
-rw-r--r-- | src/cpu/o3/dyn_inst_impl.hh | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cpu/o3/dyn_inst_impl.hh b/src/cpu/o3/dyn_inst_impl.hh index 6f7c23b2f..268746655 100644 --- a/src/cpu/o3/dyn_inst_impl.hh +++ b/src/cpu/o3/dyn_inst_impl.hh @@ -113,8 +113,17 @@ template <class Impl> Fault BaseO3DynInst<Impl>::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; } |