diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/inorder/resource.cc | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/cpu/inorder/resource.cc b/src/cpu/inorder/resource.cc index 8bc355f5c..dfca83a8f 100644 --- a/src/cpu/inorder/resource.cc +++ b/src/cpu/inorder/resource.cc @@ -348,10 +348,14 @@ Resource::squashThenTrap(int stage_num, DynInstPtr inst) inst->setSquashInfo(stage_num); setupSquash(inst, stage_num, tid); - if (inst->traceData && DTRACE(ExecFaulting)) { - inst->traceData->setStageCycle(stage_num, curTick()); - inst->traceData->setFetchSeq(inst->seqNum); - inst->traceData->dump(); + if (inst->traceData) { + if (inst->staticInst && + inst->fault != NoFault && DTRACE(ExecFaulting)) { + inst->traceData->setStageCycle(stage_num, curTick()); + inst->traceData->setFetchSeq(inst->seqNum); + inst->traceData->dump(); + } + delete inst->traceData; inst->traceData = NULL; } |