summaryrefslogtreecommitdiff
path: root/src/cpu/exetrace.cc
diff options
context:
space:
mode:
authorChander Sudanthi <chander.sudanthi@arm.com>2011-05-13 17:27:00 -0500
committerChander Sudanthi <chander.sudanthi@arm.com>2011-05-13 17:27:00 -0500
commit4bf48a11efd7253bdb7a61da42d2bc754033757b (patch)
tree6cfb8c58569c81b4daf9ccd86fbfa4ac7b643d02 /src/cpu/exetrace.cc
parent5299c75e62832aab2e200b22c73865ed9c51b335 (diff)
downloadgem5-4bf48a11efd7253bdb7a61da42d2bc754033757b.tar.xz
Trace: Allow printing ASIDs and selectively tracing based on user/kernel code.
Debug flags are ExecUser, ExecKernel, and ExecAsid. ExecUser and ExecKernel are set by default when Exec is specified. Use minus sign with ExecUser or ExecKernel to remove user or kernel tracing respectively.
Diffstat (limited to 'src/cpu/exetrace.cc')
-rw-r--r--src/cpu/exetrace.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cpu/exetrace.cc b/src/cpu/exetrace.cc
index a6450ffe3..40991652d 100644
--- a/src/cpu/exetrace.cc
+++ b/src/cpu/exetrace.cc
@@ -60,6 +60,12 @@ Trace::ExeTracerRecord::traceInst(StaticInstPtr inst, bool ran)
{
ostream &outs = Trace::output();
+ if (!Debug::ExecUser || !Debug::ExecKernel) {
+ bool in_user_mode = TheISA::inUserMode(thread);
+ if (in_user_mode && !Debug::ExecUser) return;
+ if (!in_user_mode && !Debug::ExecKernel) return;
+ }
+
if (Debug::ExecTicks)
dumpTicks(outs);
@@ -68,6 +74,9 @@ Trace::ExeTracerRecord::traceInst(StaticInstPtr inst, bool ran)
if (Debug::ExecSpeculative)
outs << (misspeculating ? "-" : "+") << " ";
+ if (Debug::ExecAsid)
+ outs << "A" << dec << TheISA::getExecutingAsid(thread) << " ";
+
if (Debug::ExecThread)
outs << "T" << thread->threadId() << " : ";