summaryrefslogtreecommitdiff
path: root/decoder/source/trc_gen_elem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'decoder/source/trc_gen_elem.cpp')
-rw-r--r--decoder/source/trc_gen_elem.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/decoder/source/trc_gen_elem.cpp b/decoder/source/trc_gen_elem.cpp
index d2536f5758a0..b3ec75f059d4 100644
--- a/decoder/source/trc_gen_elem.cpp
+++ b/decoder/source/trc_gen_elem.cpp
@@ -49,7 +49,7 @@ static const char *s_elem_descs[][2] =
{"OCSD_GEN_TRC_ELEM_ADDR_NACC","Tracing in inaccessible memory area."},
{"OCSD_GEN_TRC_ELEM_ADDR_UNKNOWN","Tracing unknown address area."},
{"OCSD_GEN_TRC_ELEM_EXCEPTION","Exception"},
- {"OCSD_GEN_TRC_ELEM_EXCEPTION_RET","Expection return"},
+ {"OCSD_GEN_TRC_ELEM_EXCEPTION_RET","Exception return"},
{"OCSD_GEN_TRC_ELEM_TIMESTAMP","Timestamp - preceding elements happeded before this time."},
{"OCSD_GEN_TRC_ELEM_CYCLE_COUNT","Cycle count - cycles since last cycle count value - associated with a preceding instruction range."},
{"OCSD_GEN_TRC_ELEM_EVENT","Event - numbered event or trigger"},
@@ -71,7 +71,8 @@ static const char *instr_sub_type[] = {
"--- ",
"b+link ",
"A64:ret ",
- "A64:eret "
+ "A64:eret ",
+ "V7:impl ret",
};
#define ST_SIZE (sizeof(instr_sub_type) / sizeof(const char *))
@@ -105,12 +106,16 @@ void OcsdTraceElement::toString(std::string &str) const
{
case OCSD_GEN_TRC_ELEM_INSTR_RANGE:
oss << "exec range=0x" << std::hex << st_addr << ":[0x" << en_addr << "] ";
+ oss << "num_i(" << std::dec << num_instr_range << ") ";
+ oss << "last_sz(" << last_instr_sz << ") ";
oss << "(ISA=" << s_isa_str[(int)isa] << ") ";
oss << ((last_instr_exec == 1) ? "E " : "N ");
if((int)last_i_type < T_SIZE)
oss << instr_type[last_i_type];
if((last_i_subtype != OCSD_S_INSTR_NONE) && ((int)last_i_subtype < ST_SIZE))
oss << instr_sub_type[last_i_subtype];
+ if (last_instr_cond)
+ oss << " <cond>";
break;
case OCSD_GEN_TRC_ELEM_ADDR_NACC:
@@ -118,9 +123,14 @@ void OcsdTraceElement::toString(std::string &str) const
break;
case OCSD_GEN_TRC_ELEM_EXCEPTION:
- if(excep_ret_addr == 1)
+ if (excep_ret_addr == 1)
{
- oss << "pref ret addr:0x" << std::hex << en_addr << "; ";
+ oss << "pref ret addr:0x" << std::hex << en_addr;
+ if (excep_ret_addr_br_tgt)
+ {
+ oss << " [addr also prev br tgt]";
+ }
+ oss << "; ";
}
oss << "excep num (0x" << std::setfill('0') << std::setw(2) << std::hex << exception_number << ") ";
break;
@@ -150,6 +160,13 @@ void OcsdTraceElement::toString(std::string &str) const
printSWInfoPkt(oss);
break;
+ case OCSD_GEN_TRC_ELEM_EVENT:
+ if(trace_event.ev_type == EVENT_TRIGGER)
+ oss << " Trigger; ";
+ else if(trace_event.ev_type == EVENT_NUMBERED)
+ oss << " Numbered:" << std::dec << trace_event.ev_number << "; ";
+ break;
+
default: break;
}
if(has_cc)