summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/alpha/utility.cc1
-rw-r--r--src/arch/alpha/utility.hh7
-rw-r--r--src/arch/arm/utility.hh7
-rw-r--r--src/arch/mips/utility.hh6
-rw-r--r--src/arch/power/utility.hh13
-rw-r--r--src/arch/sparc/utility.hh6
-rw-r--r--src/arch/x86/utility.hh7
-rw-r--r--src/cpu/SConscript12
-rw-r--r--src/cpu/exetrace.cc9
9 files changed, 63 insertions, 5 deletions
diff --git a/src/arch/alpha/utility.cc b/src/arch/alpha/utility.cc
index 2d56ca9b8..5d40f85d7 100644
--- a/src/arch/alpha/utility.cc
+++ b/src/arch/alpha/utility.cc
@@ -29,7 +29,6 @@
* Ali Saidi
*/
-#include "arch/alpha/ev5.hh"
#include "arch/alpha/utility.hh"
#if FULL_SYSTEM
diff --git a/src/arch/alpha/utility.hh b/src/arch/alpha/utility.hh
index 8759b49ce..c0c985c34 100644
--- a/src/arch/alpha/utility.hh
+++ b/src/arch/alpha/utility.hh
@@ -39,6 +39,7 @@
#include "config/full_system.hh"
#include "cpu/static_inst.hh"
#include "cpu/thread_context.hh"
+#include "arch/alpha/ev5.hh"
namespace AlphaISA {
@@ -111,6 +112,12 @@ advancePC(PCState &pc, const StaticInstPtr inst)
pc.advance();
}
+inline uint64_t
+getExecutingAsid(ThreadContext *tc)
+{
+ return DTB_ASN_ASN(tc->readMiscRegNoEffect(IPR_DTB_ASN));
+}
+
} // namespace AlphaISA
#endif // __ARCH_ALPHA_UTILITY_HH__
diff --git a/src/arch/arm/utility.hh b/src/arch/arm/utility.hh
index 20cb9b426..8ad3de66a 100644
--- a/src/arch/arm/utility.hh
+++ b/src/arch/arm/utility.hh
@@ -173,7 +173,12 @@ advancePC(PCState &pc, const StaticInstPtr inst)
Addr truncPage(Addr addr);
Addr roundPage(Addr addr);
-};
+inline uint64_t
+getExecutingAsid(ThreadContext *tc)
+{
+ return tc->readMiscReg(MISCREG_CONTEXTIDR);
+}
+};
#endif
diff --git a/src/arch/mips/utility.hh b/src/arch/mips/utility.hh
index 61c43a158..a2995b098 100644
--- a/src/arch/mips/utility.hh
+++ b/src/arch/mips/utility.hh
@@ -120,6 +120,12 @@ advancePC(PCState &pc, const StaticInstPtr inst)
pc.advance();
}
+inline uint64_t
+getExecutingAsid(ThreadContext *tc)
+{
+ return 0;
+}
+
};
diff --git a/src/arch/power/utility.hh b/src/arch/power/utility.hh
index cbb9bb646..349054774 100644
--- a/src/arch/power/utility.hh
+++ b/src/arch/power/utility.hh
@@ -78,6 +78,19 @@ advancePC(PCState &pc, const StaticInstPtr inst)
pc.advance();
}
+static inline bool
+inUserMode(ThreadContext *tc)
+{
+ return 0;
+}
+
+inline uint64_t
+getExecutingAsid(ThreadContext *tc)
+{
+ return 0;
+}
+
} // namespace PowerISA
+
#endif // __ARCH_POWER_UTILITY_HH__
diff --git a/src/arch/sparc/utility.hh b/src/arch/sparc/utility.hh
index b702e6838..76b551ac8 100644
--- a/src/arch/sparc/utility.hh
+++ b/src/arch/sparc/utility.hh
@@ -94,6 +94,12 @@ advancePC(PCState &pc, const StaticInstPtr inst)
inst->advancePC(pc);
}
+inline uint64_t
+getExecutingAsid(ThreadContext *tc)
+{
+ return tc->readMiscRegNoEffect(MISCREG_MMU_P_CONTEXT);
+}
+
} // namespace SparcISA
#endif
diff --git a/src/arch/x86/utility.hh b/src/arch/x86/utility.hh
index 143fde00c..4cfbe77db 100644
--- a/src/arch/x86/utility.hh
+++ b/src/arch/x86/utility.hh
@@ -102,6 +102,13 @@ namespace X86ISA
{
inst->advancePC(pc);
}
+
+ inline uint64_t
+ getExecutingAsid(ThreadContext *tc)
+ {
+ return 0;
+ }
+
};
#endif // __ARCH_X86_UTILITY_HH__
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() << " : ";