36#ifndef ARM_TRC_PKT_ELEM_ETMV3_H_INCLUDED
37#define ARM_TRC_PKT_ELEM_ETMV3_H_INCLUDED
68 virtual const void *
c_pkt()
const {
return &m_pkt_data; };
78 const uint16_t number,
82 const int resume = 0);
107 const int AltISA()
const {
return m_pkt_data.context.curr_alt_isa; };
109 const bool changedISA()
const {
return m_pkt_data.curr_isa != m_pkt_data.prev_isa; };
114 const bool isNS()
const {
return m_pkt_data.context.curr_NS; };
115 const bool isHyp()
const {
return m_pkt_data.context.curr_Hyp; };
118 const uint32_t
getCtxtID()
const {
return m_pkt_data.context.ctxtID; };
119 const bool isVMIDUpdated()
const {
return (m_pkt_data.context.updated_v == 1); }
120 const uint32_t
getVMID()
const {
return m_pkt_data.context.VMID; };
123 const uint64_t
getTS()
const {
return m_pkt_data.timestamp; };
125 const bool isExcepPkt()
const {
return (m_pkt_data.exception.bits.present == 1); };
127 const uint16_t
excepNum()
const {
return m_pkt_data.exception.number; };
128 const bool isExcepCancel()
const {
return (m_pkt_data.exception.bits.present == 1) && (m_pkt_data.exception.bits.cancel == 1); };
131 const bool getISyncHasCC()
const {
return m_pkt_data.isync_info.has_cycle_count; };
139 const uint8_t
getPHdrFmt()
const {
return m_pkt_data.p_hdr_fmt; };
144 virtual void toStringFmt(
const uint32_t fmtFlags, std::string &str)
const;
148 void getBranchAddressStr(std::string &valStr)
const;
149 void getAtomStr(std::string &valStr)
const;
150 void getISyncStr(std::string &valStr)
const;
151 void getISAStr(std::string &isaStr)
const;
152 void getExcepStr(std::string &excepStr)
const;
159 m_pkt_data.context.curr_NS = NS;
160 m_pkt_data.context.updated = 1;
165 m_pkt_data.context.curr_alt_isa =
AltISA;
166 m_pkt_data.context.updated = 1;
171 m_pkt_data.context.curr_Hyp = Hyp;
172 m_pkt_data.context.updated = 1;
177 m_pkt_data.prev_isa = m_pkt_data.curr_isa;
178 m_pkt_data.curr_isa = isa;
183 m_pkt_data.type = p_type;
188 m_pkt_data.err_type = m_pkt_data.type;
189 m_pkt_data.type = e_type;
199 m_pkt_data.data.ooo_tag = tag;
204 m_pkt_data.data.value = value;
205 m_pkt_data.data.update_dval = 1;
210 m_pkt_data.context.updated_c = 1;
211 m_pkt_data.context.ctxtID = contextID;
216 m_pkt_data.context.updated_v = 1;
217 m_pkt_data.context.VMID = VMID;
222 m_pkt_data.data.be = BE_Val;
223 m_pkt_data.data.update_be = 1;
228 m_pkt_data.cycle_count = cycleCount;
233 m_pkt_data.isync_info.reason = reason;
238 m_pkt_data.isync_info.has_cycle_count = 1;
243 m_pkt_data.isync_info.has_LSipAddress = 1;
248 m_pkt_data.isync_info.no_address = 1;
253 return (m_pkt_data.context.updated_v == 1) ||
254 (m_pkt_data.context.updated == 1) ||
255 (m_pkt_data.context.updated_c == 1);
bool UpdateAtomFromPHdr(const uint8_t pHdr, const bool cycleAccurate)
Interpret P Hdr, return true if valid, false if not.
const bool isExcepCancel() const
const uint8_t getPHdrFmt() const
void UpdateAddress(const ocsd_vaddr_t partAddrVal, const int updateBits)
const uint32_t getCycleCount() const
void SetException(const ocsd_armv7_exception type, const uint16_t number, const bool cancel, const bool cm_type, const int irq_n=0, const int resume=0)
void ResetState()
reset intra packet state data -on full decoder reset.
const bool getISyncHasCC() const
const uint32_t getVMID() const
const ocsd_iSync_reason getISyncReason() const
const bool getISyncIsLSiPAddr() const
const bool isVMIDUpdated() const
const bool isExcepPkt() const
const uint64_t getTS() const
const uint32_t getCtxtID() const
void UpdateDataAddress(const uint32_t value, const uint8_t valid_bits)
EtmV3TrcPacket & operator=(const ocsd_etmv3_pkt *p_pkt)
const ocsd_etmv3_pkt_type getType() const
virtual const void * c_pkt() const
return the underlying C API packet structure
virtual void toStringFmt(const uint32_t fmtFlags, std::string &str) const
void UpdateTimestamp(const uint64_t tsVal, const uint8_t updateBits)
const ocsd_vaddr_t getAddr() const
const uint16_t excepNum() const
const ocsd_pkt_atom & getAtom() const
virtual void toString(std::string &str) const
const ocsd_isa ISA() const
const bool isCtxtIDUpdated() const
const bool changedISA() const
const ocsd_vaddr_t getDataAddr() const
void Clear()
clear update data in packet ready for new one.
const bool getISyncNoAddr() const
const ocsd_armv7_exception excepType() const
const bool isCtxtFlagsUpdated() const
struct _ocsd_etmv3_pkt ocsd_etmv3_pkt
void SetISyncReason(const ocsd_iSync_reason reason)
enum _ocsd_etmv3_pkt_type ocsd_etmv3_pkt_type
void SetDataOOOTag(const uint8_t tag)
void UpdateAltISA(const int AltISA)
const bool isBadPacket() const
enum _ocsd_armv7_exception ocsd_armv7_exception
void UpdateContextID(const uint32_t contextID)
void UpdateISA(const ocsd_isa isa)
const bool isCtxtUpdated() const
void SetDataValue(const uint32_t value)
void UpdateHyp(const int Hyp)
void UpdateNS(const int NS)
void SetCycleCount(const uint32_t cycleCount)
void UpdateDataEndian(const uint8_t BE_Val)
struct _ocsd_pkt_atom ocsd_pkt_atom
void SetErrType(const ocsd_etmv3_pkt_type e_type)
enum _ocsd_iSync_reason ocsd_iSync_reason
void SetType(const ocsd_etmv3_pkt_type p_type)
void UpdateVMID(const uint8_t VMID)
@ ETM3_PKT_BAD_SEQUENCE
invalid sequence for packet type
OpenCSD : Standard printable element base class.