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.
This commit is contained in:
@@ -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' ])
|
||||
|
||||
@@ -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() << " : ";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user