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"
61 std::stringstream outs;
63 const bool in_user_mode = thread->getIsaPtr()->inUserMode();
64 if (in_user_mode && !Debug::ExecUser)
66 if (!in_user_mode && !Debug::ExecKernel)
69 if (Debug::ExecAsid) {
70 outs <<
"A" << std::dec <<
71 thread->getIsaPtr()->getExecutingAsid() <<
" ";
74 if (Debug::ExecThread)
75 outs <<
"T" << thread->threadId() <<
" : ";
77 Addr cur_pc =
pc.instAddr();
80 if (Debug::ExecSymbol && (!
FullSystem || !in_user_mode) &&
83 Addr delta = cur_pc - it->address;
85 ccprintf(outs,
" @%s+%d", it->name, delta);
102 outs << std::setw(26) << std::left;
108 if (Debug::ExecOpClass) {
109 outs << Enums::OpClassStrings[inst->
opClass()] <<
" : ";
112 if (Debug::ExecResult && !predicate) {
113 outs <<
"Predicated False";
116 if (Debug::ExecResult && data_status != DataInvalid) {
117 switch (data_status) {
121 auto dv =
data.as_vec->as<uint32_t>();
135 auto pv =
data.as_pred->as<uint8_t>();
138 if (
i != 0 &&
i % 4 == 0) {
151 if (Debug::ExecEffAddr && getMemValid())
152 outs <<
" A=0x" << std::hex <<
addr;
154 if (Debug::ExecFetchSeq && fetch_seq_valid)
155 outs <<
" FetchSeq=" << std::dec << fetch_seq;
157 if (Debug::ExecCPSeq && cp_seq_valid)
158 outs <<
" CPSeq=" << std::dec << cp_seq;
160 if (Debug::ExecFlags) {
173 when, thread->getCpuPtr()->name(),
"ExecEnable",
"%s",
188 if (Debug::ExecMacro && staticInst->isMicroop() &&
189 ((Debug::ExecMicro &&
190 macroStaticInst && staticInst->isFirstMicroop()) ||
191 (!Debug::ExecMicro &&
192 macroStaticInst && staticInst->isLastMicroop()))) {
193 traceInst(macroStaticInst,
false);
195 if (Debug::ExecMicro || !staticInst->isMicroop()) {
196 traceInst(staticInst,
true);