Port: Stricter port bind/unbind semantics
[gem5.git] / src / cpu / exetrace.cc
index a6450ffe3b5a175fea1b4ff18742b6147237fcb2..fdefcc98053b97fc589ff7918b7f774176c0d9ac 100644 (file)
@@ -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,16 +74,16 @@ 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() << " : ";
 
     std::string sym_str;
     Addr sym_addr;
     Addr cur_pc = pc.instAddr();
-    if (debugSymbolTable && Debug::ExecSymbol
-#if FULL_SYSTEM
-        && !inUserMode(thread)
-#endif
+    if (debugSymbolTable && Debug::ExecSymbol && !inUserMode(thread)
         && debugSymbolTable->findNearestSymbol(cur_pc, sym_str, sym_addr)) {
         if (cur_pc != sym_addr)
             sym_str += csprintf("+%d",cur_pc - sym_addr);
@@ -165,4 +171,4 @@ Trace::ExeTracer *
 ExeTracerParams::create()
 {
     return new Trace::ExeTracer(this);
-};
+}