* Steve Raasch
*/
+#include "cpu/exetrace.hh"
+
#include <iomanip>
#include "arch/isa_traits.hh"
#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"
}
void
-Trace::ExeTracerRecord::traceInst(StaticInstPtr inst, bool ran)
+Trace::ExeTracerRecord::traceInst(const StaticInstPtr &inst, bool ran)
{
ostream &outs = Trace::output();
outs << thread->getCpuPtr()->name() << " ";
- if (Debug::ExecSpeculative)
- outs << (misspeculating ? "-" : "+") << " ";
-
if (Debug::ExecAsid)
outs << "A" << dec << TheISA::getExecutingAsid(thread) << " ";
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;
outs << Enums::OpClassStrings[inst->opClass()] << " : ";
}
- if (Debug::ExecResult && predicate == false) {
+ if (Debug::ExecResult && !predicate) {
outs << "Predicated False";
}
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)
if (Debug::ExecCPSeq && cp_seq_valid)
outs << " CPSeq=" << dec << cp_seq;
+
+ if (Debug::ExecFlags) {
+ outs << " flags=(";
+ inst->printFlags(outs, "|");
+ outs << ")";
+ }
}
//
ExeTracerParams::create()
{
return new Trace::ExeTracer(this);
-};
+}