36 #ifndef ARM_TRC_PKT_ELEM_ETMV4I_H_INCLUDED
37 #define ARM_TRC_PKT_ELEM_ETMV4I_H_INCLUDED
66 m_v_addr[2] = m_v_addr[1];
67 m_v_addr[1] = m_v_addr[0];
69 m_v_addr_ISA[2] = m_v_addr_ISA[1];
70 m_v_addr_ISA[1] = m_v_addr_ISA[0];
71 m_v_addr_ISA[0] = isa;
78 vaddr = m_v_addr[idx];
79 isa = m_v_addr_ISA[idx];
86 for (
int i = 0; i < 3; i++)
99 uint8_t m_v_addr_ISA[3];
133 void setTS(
const uint64_t value,
const uint8_t
bits);
143 void setCondRF1(
const uint32_t key[2],
const uint8_t res[2],
const uint8_t CI[2],
const bool set2Keys);
144 void setCondRF2(
const uint8_t key_incr,
const uint8_t token);
148 void setContextInfo(
const bool update,
const uint8_t EL = 0,
const uint8_t NS = 0,
const uint8_t SF = 0,
const uint8_t NSE = 0);
156 void updateShortAddress(
const uint32_t addr,
const uint8_t IS,
const uint8_t update_bits);
162 void setQType(
const bool has_count,
const uint32_t count,
const bool has_addr,
const bool addr_match,
const uint8_t
type);
171 return pkt_valid.bits.commit_elem_valid ? true :
false;
208 virtual void toStringFmt(
const uint32_t fmtFlags, std::string &str)
const;
214 void contextStr(std::string &ctxtStr)
const;
215 void atomSeq(std::string &valStr)
const;
216 void addrMatchIdx(std::string &valStr)
const;
217 void exceptionInfo(std::string &valStr)
const;
220 void pop_vaddr_idx(
const uint8_t idx);
278 uint64_t mask = (uint64_t)-1LL;
279 if(
bits < 64) mask = (1ULL <<
bits) - 1;
280 ts.timestamp = (
ts.timestamp & ~mask) | (value & mask);
327 uint32_t bit_patt = En_bits & 0x1;
331 bit_patt = (bit_patt << num) - 1;
353 switch(c_elem_idx & 0x3)
518 inline void EtmV4ITrcPacket::setQType(
const bool has_count,
const uint32_t count,
const bool has_addr,
const bool addr_match,
const uint8_t type)
520 Q_pkt.q_count = count;
522 Q_pkt.count_present = has_count ? 1 : 0;
523 Q_pkt.addr_present = has_addr ? 1: 0;
532 inline void EtmV4ITrcPacket::push_vaddr()
537 inline void EtmV4ITrcPacket::pop_vaddr_idx(
const uint8_t idx)
ETMv4 Instuction Trace Protocol Packet.
virtual void toStringFmt(const uint32_t fmtFlags, std::string &str) const
void initNextPacket()
clear any single packet only flags / state.
const bool hasCommitElementsCount() const
return true if this packet has set the commit packet count.
virtual const void * c_pkt() const
return the underlying C API packet structure
void setProtocolVersion(const uint8_t version)
virtual void toString(std::string &str) const
const int getCommitElem() const
const int getNumAtoms() const
EtmV4ITrcPacket & operator=(const ocsd_etmv4_i_pkt *p_pkt)
const etmv4_trace_info_t & getTraceInfo() const
const uint64_t getTS() const
void setType(const ocsd_etmv4_i_pkt_type pkt_type)
const uint8_t & getAddrMatch() const
const ocsd_etmv4_i_pkt_type getType() const
const uint8_t & getAddrIS() const
const ocsd_pkt_atom & getAtom() const
const int getCancelElem() const
const bool getAddr64Bit() const
const uint32_t getCC() const
void initStartState()
Set to initial state - no intra packet state valid. Use on start of trace / discontinuities.
const etmv4_context_t & getContext() const
const ocsd_etmv4_i_pkt_type getErrType() const
const ocsd_vaddr_t & getAddrVal() const
ETMv4 Address packet values stack.
void push(const ocsd_pkt_vaddr vaddr, const uint8_t isa)
void get_idx(const uint8_t idx, ocsd_pkt_vaddr &vaddr, uint8_t &isa)
Class to provide trace element strings for printing.
#define OCSD_BIT_MASK(bits)
#define OCSD_MAX_VA_BITSIZE
const bool isBadPacket() const
void setAtomPacket(const ocsd_pkt_atm_type type, const uint32_t En_bits, const uint8_t num)
void setDataSyncMarker(const uint8_t dsm_val)
void set32BitAddress(const uint32_t addr, const uint8_t IS)
void updateShortAddress(const uint32_t addr, const uint8_t IS, const uint8_t update_bits)
const uint32_t getCurrSpecDepth() const
void setTS(const uint64_t value, const uint8_t bits)
void setCycleCount(const uint32_t value)
void setTraceInfoSpec(const uint32_t specVal)
void setCondRF2(const uint8_t key_incr, const uint8_t token)
const uint32_t getCCThreshold() const
void setCondRF3(const uint16_t tokens)
void setTraceInfo(const uint32_t infoVal)
void setExceptionInfo(const uint16_t excep_type, const uint8_t addr_interp, const uint8_t m_fault_pending, const uint8_t m_type)
void setContextCID(const uint32_t CID)
void clearTraceInfo()
clear all the trace info data prior to setting for new trace info packet.
enum _ocsd_etmv4_i_pkt_type ocsd_etmv4_i_pkt_type
void setContextVMID(const uint32_t VMID)
void updateErrType(const ocsd_etmv4_i_pkt_type err_pkt_type, const uint8_t val=0)
void setCondRF1(const uint32_t key[2], const uint8_t res[2], const uint8_t CI[2], const bool set2Keys)
void set64BitAddress(const uint64_t addr, const uint8_t IS)
enum _ocsd_pkt_atm_type ocsd_pkt_atm_type
void setCondIF2(uint8_t const c_elem_idx)
void setAddressExactMatch(const uint8_t idx)
void setQType(const bool has_count, const uint32_t count, const bool has_addr, const bool addr_match, const uint8_t type)
void setTraceInfoKey(const uint32_t keyVal)
void setCancelElements(const uint32_t cancel_elem)
void setCondIF3(uint8_t const num_c_elem, const bool finalElem)
void setEvent(const uint8_t event_val)
void setCommitElements(const uint32_t commit_elem)
void setCondIF1(uint32_t const cond_key)
void setCondRF4(const uint8_t token)
void setTraceInfoCyct(const uint32_t cyctVal)
const uint32_t getP0Key() const
void setContextInfo(const bool update, const uint8_t EL=0, const uint8_t NS=0, const uint8_t SF=0, const uint8_t NSE=0)
@ ETM4_PKT_I_BAD_SEQUENCE
uint32_t SF
sixty four bit
uint32_t VMID
current VMID
uint32_t NSE
PE FEAT_RME: root / realm indicator.
uint32_t updated_v
updated VMID
uint32_t updated_c
updated CtxtID
uint32_t ctxtID
Current ctxtID.
uint32_t updated
updated this context packet (otherwise same as last time)
uint32_t EL
exception level.
struct _ocsd_etmv4_i_pkt::@17::@24 bits
uint8_t dsm_val
Data Sync Marker number, or unnumbered atom count - packet type determines.
struct _ocsd_etmv4_i_pkt::@13 exception_info
ocsd_etmv4_i_pkt_type type
struct _ocsd_etmv4_i_pkt::@16 Q_pkt
uint32_t p0_key
current P0 key value for data packet synchronisation
etmv4_trace_info_t trace_info
trace info structure - programmed configuration of trace capture.
ocsd_pkt_vaddr v_addr
most recently broadcast address packet
uint32_t addr_interp
address value interpretation
struct _ocsd_etmv4_i_pkt::@14 cond_instr
ocsd_etmv4_i_pkt_type err_type
uint32_t m_fault_pending
M class fault pending.
uint32_t curr_spec_depth
current speculation depth
uint8_t v_addr_ISA
ISA for the address packet. (0 = IS0 / 1 = IS1)
struct _ocsd_etmv4_i_pkt::@12 ts
uint32_t cc_threshold
cycle count threshold - from trace info.
struct _ocsd_etmv4_i_pkt::@15 cond_result
uint32_t cycle_count
cycle count
ocsd_pkt_atom atom
atom elements - number of atoms indicates validity of packet
etmv4_context_t context
current context for PE
uint8_t event_val
Event value on event packet.
uint8_t addr_exact_match_idx
address match index in this packet.
union _ocsd_etmv4_i_pkt::@17 pkt_valid
valid bits for packet elements (addresses have their own valid bits).
uint32_t m_type
1 if M class exception.
OpenCSD : Standard printable element base class.
uint32_t val
trace info full value.