summaryrefslogtreecommitdiff
path: root/cpu/o3/commit_impl.hh
diff options
context:
space:
mode:
authorKevin Lim <ktlim@umich.edu>2006-08-24 17:43:08 -0400
committerKevin Lim <ktlim@umich.edu>2006-08-24 17:43:08 -0400
commitad2fa1e1c9587e8c2a2b7f3e5a9c592312042eb4 (patch)
treee52b0443cc937e127c5d31b49f0c2dcf280c4d50 /cpu/o3/commit_impl.hh
parent74e8abd37ecd637a607f90e36aed1a3a16eea7da (diff)
downloadgem5-ad2fa1e1c9587e8c2a2b7f3e5a9c592312042eb4.tar.xz
Support profiling.
--HG-- extra : convert_revision : eab02dea68442bd3f8c5d1d16b7f93f43cbda2a5
Diffstat (limited to 'cpu/o3/commit_impl.hh')
-rw-r--r--cpu/o3/commit_impl.hh14
1 files changed, 14 insertions, 0 deletions
diff --git a/cpu/o3/commit_impl.hh b/cpu/o3/commit_impl.hh
index 364e685c2..cd10ec6b2 100644
--- a/cpu/o3/commit_impl.hh
+++ b/cpu/o3/commit_impl.hh
@@ -1035,6 +1035,20 @@ DefaultCommit<Impl>::commitHead(DynInstPtr &head_inst, unsigned inst_num)
updateComInstStats(head_inst);
+#if FULL_SYSTEM
+ if (thread[tid]->profile) {
+// bool usermode =
+// (cpu->readMiscReg(AlphaISA::IPR_DTB_CM, tid) & 0x18) != 0;
+// thread[tid]->profilePC = usermode ? 1 : head_inst->readPC();
+ thread[tid]->profilePC = head_inst->readPC();
+ ProfileNode *node = thread[tid]->profile->consume(thread[tid]->getXCProxy(),
+ head_inst->staticInst);
+
+ if (node)
+ thread[tid]->profileNode = node;
+ }
+#endif
+
if (head_inst->traceData) {
head_inst->traceData->setFetchSeq(head_inst->seqNum);
head_inst->traceData->setCPSeq(thread[tid]->numInst);