41 #ifndef __CPU_O3_DYN_INST_IMPL_HH__
42 #define __CPU_O3_DYN_INST_IMPL_HH__
45 #include "debug/O3PipeView.hh"
52 :
BaseDynInst<Impl>(staticInst, macroop,
pc, predPC, seq_num, cpu)
69 Tick fetch = this->fetchTick;
74 DPRINTFR(O3PipeView,
"O3PipeView:fetch:%llu:0x%08llx:%d:%llu:%s\n",
79 this->staticInst->disassemble(this->instAddr()));
81 val = (this->decodeTick == -1) ? 0 : fetch + this->decodeTick;
82 DPRINTFR(O3PipeView,
"O3PipeView:decode:%llu\n",
val);
83 val = (this->renameTick == -1) ? 0 : fetch + this->renameTick;
84 DPRINTFR(O3PipeView,
"O3PipeView:rename:%llu\n",
val);
85 val = (this->dispatchTick == -1) ? 0 : fetch + this->dispatchTick;
86 DPRINTFR(O3PipeView,
"O3PipeView:dispatch:%llu\n",
val);
87 val = (this->issueTick == -1) ? 0 : fetch + this->issueTick;
88 DPRINTFR(O3PipeView,
"O3PipeView:issue:%llu\n",
val);
89 val = (this->completeTick == -1) ? 0 : fetch + this->completeTick;
90 DPRINTFR(O3PipeView,
"O3PipeView:complete:%llu\n",
val);
91 val = (this->commitTick == -1) ? 0 : fetch + this->commitTick;
93 Tick valS = (this->storeTick == -1) ? 0 : fetch + this->storeTick;
94 DPRINTFR(O3PipeView,
"O3PipeView:retire:%llu:store:%llu\n",
val, valS);
101 template <
class Impl>
105 this->_readySrcRegIdx.reset();
107 _numDestMiscRegs = 0;
123 template <
class Impl>
131 bool no_squash_from_TC = this->thread->noSquashFromTC;
132 this->thread->noSquashFromTC =
true;
134 this->fault = this->staticInst->execute(
this, this->traceData);
136 this->thread->noSquashFromTC = no_squash_from_TC;
141 template <
class Impl>
149 bool no_squash_from_TC = this->thread->noSquashFromTC;
150 this->thread->noSquashFromTC =
true;
152 this->fault = this->staticInst->initiateAcc(
this, this->traceData);
154 this->thread->noSquashFromTC = no_squash_from_TC;
159 template <
class Impl>
167 bool no_squash_from_TC = this->thread->noSquashFromTC;
168 this->thread->noSquashFromTC =
true;
170 if (this->cpu->checker) {
171 if (this->isStoreConditional()) {
172 this->reqToVerify->setExtraData(pkt->
req->getExtraData());
176 this->fault = this->staticInst->completeAcc(pkt,
this, this->traceData);
178 this->thread->noSquashFromTC = no_squash_from_TC;
183 template <
class Impl>
187 this->cpu->trap(fault, this->threadNumber, this->staticInst);
190 template <
class Impl>
198 this->cpu->syscall(this->threadNumber);
200 if (!(curPC == newPC)) {
201 this->pcState(newPC);
205 #endif//__CPU_O3_DYN_INST_IMPL_HH__