#include "config/full_system.hh"
#include "cpu/static_inst.hh"
#include "cpu/thread_context.hh"
+#include "arch/alpha/ev5.hh"
namespace AlphaISA {
pc.advance();
}
+inline uint64_t
+getExecutingAsid(ThreadContext *tc)
+{
+ return DTB_ASN_ASN(tc->readMiscRegNoEffect(IPR_DTB_ASN));
+}
+
} // namespace AlphaISA
#endif // __ARCH_ALPHA_UTILITY_HH__
TraceFlag('ExecTicks')
TraceFlag('ExecMicro')
TraceFlag('ExecMacro')
+TraceFlag('ExecUser')
+TraceFlag('ExecKernel')
+TraceFlag('ExecAsid')
TraceFlag('Fetch')
TraceFlag('IntrControl')
TraceFlag('PCEvent')
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' ])
{
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);
if (Debug::ExecSpeculative)
outs << (misspeculating ? "-" : "+") << " ";
+ if (Debug::ExecAsid)
+ outs << "A" << dec << TheISA::getExecutingAsid(thread) << " ";
+
if (Debug::ExecThread)
outs << "T" << thread->threadId() << " : ";