kvm, mem: Refactor some Event subclasses into lambdas
[gem5.git] / src / cpu / exetrace.cc
index 0b21a1270cae3d800e6b7c7665cf0bfee2fc3ccd..bbde89c006b029971e4dfb19e871c2ea4b06ea4c 100644 (file)
@@ -31,6 +31,8 @@
  *          Steve Raasch
  */
 
+#include "cpu/exetrace.hh"
+
 #include <iomanip>
 
 #include "arch/isa_traits.hh"
@@ -38,7 +40,6 @@
 #include "base/loader/symtab.hh"
 #include "config/the_isa.hh"
 #include "cpu/base.hh"
-#include "cpu/exetrace.hh"
 #include "cpu/static_inst.hh"
 #include "cpu/thread_context.hh"
 #include "debug/ExecAll.hh"
@@ -56,7 +57,7 @@ ExeTracerRecord::dumpTicks(ostream &outs)
 }
 
 void
-Trace::ExeTracerRecord::traceInst(StaticInstPtr inst, bool ran)
+Trace::ExeTracerRecord::traceInst(const StaticInstPtr &inst, bool ran)
 {
     ostream &outs = Trace::output();
 
@@ -71,9 +72,6 @@ Trace::ExeTracerRecord::traceInst(StaticInstPtr inst, bool ran)
 
     outs << thread->getCpuPtr()->name() << " ";
 
-    if (Debug::ExecSpeculative)
-        outs << (misspeculating ? "-" : "+") << " ";
-
     if (Debug::ExecAsid)
         outs << "A" << dec << TheISA::getExecutingAsid(thread) << " ";
 
@@ -83,8 +81,9 @@ Trace::ExeTracerRecord::traceInst(StaticInstPtr inst, bool ran)
     std::string sym_str;
     Addr sym_addr;
     Addr cur_pc = pc.instAddr();
-    if (debugSymbolTable && Debug::ExecSymbol && !inUserMode(thread)
-        && debugSymbolTable->findNearestSymbol(cur_pc, sym_str, sym_addr)) {
+    if (debugSymbolTable && Debug::ExecSymbol &&
+            (!FullSystem || !inUserMode(thread)) &&
+            debugSymbolTable->findNearestSymbol(cur_pc, sym_str, sym_addr)) {
         if (cur_pc != sym_addr)
             sym_str += csprintf("+%d",cur_pc - sym_addr);
         outs << "@" << sym_str;
@@ -114,7 +113,7 @@ Trace::ExeTracerRecord::traceInst(StaticInstPtr inst, bool ran)
             outs << Enums::OpClassStrings[inst->opClass()] << " : ";
         }
 
-        if (Debug::ExecResult && predicate == false) {
+        if (Debug::ExecResult && !predicate) {
             outs << "Predicated False";
         }
 
@@ -122,7 +121,7 @@ Trace::ExeTracerRecord::traceInst(StaticInstPtr inst, bool ran)
             ccprintf(outs, " D=%#018x", data.as_int);
         }
 
-        if (Debug::ExecEffAddr && addr_valid)
+        if (Debug::ExecEffAddr && getMemValid())
             outs << " A=0x" << hex << addr;
 
         if (Debug::ExecFetchSeq && fetch_seq_valid)
@@ -130,6 +129,12 @@ Trace::ExeTracerRecord::traceInst(StaticInstPtr inst, bool ran)
 
         if (Debug::ExecCPSeq && cp_seq_valid)
             outs << "  CPSeq=" << dec << cp_seq;
+
+        if (Debug::ExecFlags) {
+            outs << "  flags=(";
+            inst->printFlags(outs, "|");
+            outs << ")";
+        }
     }
 
     //
@@ -171,4 +176,4 @@ Trace::ExeTracer *
 ExeTracerParams::create()
 {
     return new Trace::ExeTracer(this);
-};
+}