diff options
author | Chander Sudanthi <chander.sudanthi@arm.com> | 2011-05-13 17:27:00 -0500 |
---|---|---|
committer | Chander Sudanthi <chander.sudanthi@arm.com> | 2011-05-13 17:27:00 -0500 |
commit | 4bf48a11efd7253bdb7a61da42d2bc754033757b (patch) | |
tree | 6cfb8c58569c81b4daf9ccd86fbfa4ac7b643d02 /src/cpu | |
parent | 5299c75e62832aab2e200b22c73865ed9c51b335 (diff) | |
download | gem5-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/SConscript | 12 | ||||
-rw-r--r-- | src/cpu/exetrace.cc | 9 |
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() << " : "; |