summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKorey Sewell <ksewell@umich.edu>2011-06-19 21:43:42 -0400
committerKorey Sewell <ksewell@umich.edu>2011-06-19 21:43:42 -0400
commit3cb23bd3a21a50577aaaa12db41d2203f4a9d6eb (patch)
tree902ba75e94bf8233fc818b0d703fcca6596ff8e9
parentfe3a2aa4a31756d71440d25b2fe8fcc2f8ca4c67 (diff)
downloadgem5-3cb23bd3a21a50577aaaa12db41d2203f4a9d6eb.tar.xz
inorder:tracing: fix fault tracing bug
-rw-r--r--src/cpu/inorder/resource.cc12
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;
}