diff options
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() << " : "; |