summaryrefslogtreecommitdiff
path: root/src/cpu
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
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')
-rw-r--r--src/cpu/SConscript12
-rw-r--r--src/cpu/exetrace.cc9
2 files changed, 18 insertions, 3 deletions
diff --git a/src/cpu/SConscript b/src/cpu/SConscript
index fb7c86845..f6ed80680 100644
--- a/src/cpu/SConscript
+++ b/src/cpu/SConscript
@@ -168,6 +168,9 @@ TraceFlag('ExecThread')
TraceFlag('ExecTicks')
TraceFlag('ExecMicro')
TraceFlag('ExecMacro')
+TraceFlag('ExecUser')
+TraceFlag('ExecKernel')
+TraceFlag('ExecAsid')
TraceFlag('Fetch')
TraceFlag('IntrControl')
TraceFlag('PCEvent')
@@ -176,8 +179,11 @@ TraceFlag('Quiesce')
CompoundFlag('ExecAll', [ 'ExecEnable', 'ExecCPSeq', 'ExecEffAddr',
'ExecFaulting', 'ExecFetchSeq', 'ExecOpClass', 'ExecRegDelta',
'ExecResult', 'ExecSpeculative', 'ExecSymbol', 'ExecThread',
- 'ExecTicks', 'ExecMicro', 'ExecMacro' ])
+ 'ExecTicks', 'ExecMicro', 'ExecMacro', 'ExecUser', 'ExecKernel',
+ 'ExecAsid' ])
CompoundFlag('Exec', [ 'ExecEnable', 'ExecTicks', 'ExecOpClass', 'ExecThread',
- 'ExecEffAddr', 'ExecResult', 'ExecSymbol', 'ExecMicro', 'ExecFaulting' ])
+ 'ExecEffAddr', 'ExecResult', 'ExecSymbol', 'ExecMicro', 'ExecFaulting',
+ 'ExecUser', 'ExecKernel' ])
CompoundFlag('ExecNoTicks', [ 'ExecEnable', 'ExecOpClass', 'ExecThread',
- 'ExecEffAddr', 'ExecResult', 'ExecMicro', 'ExecFaulting' ])
+ 'ExecEffAddr', 'ExecResult', 'ExecMicro', 'ExecFaulting',
+ 'ExecUser', 'ExecKernel' ])
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() << " : ";