34 #ifndef ARM_TRC_GEN_ELEM_H_INCLUDED 35 #define ARM_TRC_GEN_ELEM_H_INCLUDED 37 #include "opencsd/trc_gen_elem_types.h" 60 void setType(
const ocsd_gen_trc_elem_t type);
61 void updateType(
const ocsd_gen_trc_elem_t type);
63 void setContext(
const ocsd_pe_context &new_context) { context = new_context; };
64 void setISA(
const ocsd_isa isa_update);
67 void setEvent(
const event_t ev_type,
const uint16_t number);
68 void setTS(
const uint64_t ts,
const bool freqChange =
false);
76 void setAddrRange(
const ocsd_vaddr_t st_addr,
const ocsd_vaddr_t en_addr);
77 void setLastInstrInfo(
const bool exec,
const ocsd_instr_type last_i_type,
const ocsd_instr_subtype last_i_subtype);
78 void setAddrStart(
const ocsd_vaddr_t st_addr) { this->st_addr = st_addr; };
80 void setSWTInfo(
const ocsd_swt_info_t swt_info) { sw_trace_info = swt_info; };
85 virtual void toString(std::string &str)
const;
91 const ocsd_gen_trc_elem_t
getType()
const {
return elem_type; };
94 const ocsd_pe_context &
getContext()
const {
return context; };
98 void printSWInfoPkt(std::ostringstream &oss)
const;
99 void clearPerPktData();
110 elem_type = OCSD_GEN_TRC_ELEM_UNKNOWN;
115 cycle_count = cycleCount;
121 trace_event.ev_type = (uint16_t)ev_type;
122 trace_event.ev_number = ev_type == EVENT_NUMBERED ? number : 0;
127 this->st_addr = st_addr;
128 this->en_addr = en_addr;
133 last_instr_exec = exec ? 1 : 0;
134 this->last_i_type = last_i_type;
135 this->last_i_subtype = last_i_subtype;
153 st_addr = en_addr = (ocsd_vaddr_t)-1;
154 isa = ocsd_isa_unknown;
159 context.ctxt_id_valid = 0;
160 context.vmid_valid = 0;
161 context.el_valid = 0;
163 last_i_type = OCSD_INSTR_OTHER;
164 last_i_subtype = OCSD_S_INSTR_NONE;
169 inline void OcsdTraceElement::clearPerPktData()
173 ptr_extended_data = 0;
178 trace_on_reason = reason;
184 if(isa > ocsd_isa_unknown)
185 isa = ocsd_isa_unknown;
191 cpu_freq_change = freqChange ? 1 : 0;
198 ptr_extended_data = data_ptr;
204 #endif // ARM_TRC_GEN_ELEM_H_INCLUDED void setAddrStart(const ocsd_vaddr_t st_addr)
void setEvent(const event_t ev_type, const uint16_t number)
const ocsd_pe_context & getContext() const
void setContext(const ocsd_pe_context &new_context)
void updateType(const ocsd_gen_trc_elem_t type)
change type only - no init
void setExceptionNum(uint32_t excepNum)
OpenCSD : Standard printable element base class.
OcsdTraceElement & operator=(const ocsd_generic_trace_elem *p_elem)
virtual ~OcsdTraceElement()
void setLastInstrInfo(const bool exec, const ocsd_instr_type last_i_type, const ocsd_instr_subtype last_i_subtype)
void setAddrRange(const ocsd_vaddr_t st_addr, const ocsd_vaddr_t en_addr)
void setISA(const ocsd_isa isa_update)
void setSWTInfo(const ocsd_swt_info_t swt_info)
void setTS(const uint64_t ts, const bool freqChange=false)
Generic trace element class.
Class to provide trace element strings for printing.
void setTraceOnReason(const trace_on_reason_t reason)
void setCycleCount(const uint32_t cycleCount)
void setExtendedDataPtr(const void *data_ptr)
virtual void toString(std::string &str) const
void setType(const ocsd_gen_trc_elem_t type)
set type and init flags
const ocsd_gen_trc_elem_t getType() const