46 #include "arch/utility.hh"
48 #include "config/the_isa.hh"
52 #include "debug/ExecAll.hh"
53 #include "debug/FmtTicksOff.hh"
54 #include "enums/OpClass.hh"
64 std::stringstream outs;
66 if (!Debug::ExecUser || !Debug::ExecKernel) {
68 if (in_user_mode && !Debug::ExecUser)
return;
69 if (!in_user_mode && !Debug::ExecKernel)
return;
75 if (Debug::ExecThread)
76 outs <<
"T" << thread->threadId() <<
" : ";
78 Addr cur_pc =
pc.instAddr();
83 Addr delta = cur_pc - it->address;
85 ccprintf(outs,
"@%s+%d", it->name, delta);
104 outs << setw(26) << left;
110 if (Debug::ExecOpClass) {
111 outs << Enums::OpClassStrings[inst->
opClass()] <<
" : ";
114 if (Debug::ExecResult && !predicate) {
115 outs <<
"Predicated False";
118 if (Debug::ExecResult && data_status != DataInvalid) {
119 switch (data_status) {
123 auto dv =
data.as_vec->as<uint32_t>();
137 auto pv =
data.as_pred->as<uint8_t>();
140 if (
i != 0 &&
i % 4 == 0) {
153 if (Debug::ExecEffAddr && getMemValid())
154 outs <<
" A=0x" << hex <<
addr;
156 if (Debug::ExecFetchSeq && fetch_seq_valid)
157 outs <<
" FetchSeq=" << dec << fetch_seq;
159 if (Debug::ExecCPSeq && cp_seq_valid)
160 outs <<
" CPSeq=" << dec << cp_seq;
162 if (Debug::ExecFlags) {
175 when, thread->getCpuPtr()->name(),
"ExecEnable",
"%s",
190 if (Debug::ExecMacro && staticInst->isMicroop() &&
191 ((Debug::ExecMicro &&
192 macroStaticInst && staticInst->isFirstMicroop()) ||
193 (!Debug::ExecMicro &&
194 macroStaticInst && staticInst->isLastMicroop()))) {
195 traceInst(macroStaticInst,
false);
197 if (Debug::ExecMicro || !staticInst->isMicroop()) {
198 traceInst(staticInst,
true);
209 ExeTracerParams::create()