Loading...
Searching...
No Matches
trc_etmv4_stack_elem.h
Go to the documentation of this file.
/*
* \file trc_etmv4_stack_elem.h
* \brief OpenCSD :
*
* \copyright Copyright (c) 2015, ARM Limited. All Rights Reserved.
*/
/*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef ARM_TRC_ETMV4_STACK_ELEM_H_INCLUDED
#define ARM_TRC_ETMV4_STACK_ELEM_H_INCLUDED
#include "opencsd/etmv4/trc_pkt_types_etmv4.h"
#include "opencsd/trc_gen_elem_types.h"
#include <deque>
#include <vector>
/* ETMv4 I trace stack elements
Speculation requires that we stack certain elements till they are committed or
cancelled. (P0 elements + other associated parts.)
*/
typedef enum _p0_elem_t
{
P0_UNKNOWN,
P0_ATOM,
P0_ADDR,
P0_CTXT,
P0_TRC_ON,
P0_EXCEP,
P0_EXCEP_RET,
P0_EVENT,
P0_TS,
P0_CC,
P0_TS_CC,
P0_MARKER,
P0_Q,
P0_OVERFLOW,
P0_FUNC_RET,
P0_SRC_ADDR,
P0_TRANS_TRACE_INIT,
P0_TRANS_START,
P0_TRANS_COMMIT,
P0_TRANS_FAIL,
P0_ITE,
} p0_elem_t;
/************************************************************/
/***Trace stack element base class -
record originating packet type and index in buffer*/
class TrcStackElem {
public:
TrcStackElem(const p0_elem_t p0_type, const bool isP0, const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index);
virtual ~TrcStackElem() {};
const p0_elem_t getP0Type() const { return m_P0_type; };
const ocsd_etmv4_i_pkt_type getRootPkt() const { return m_root_pkt; };
const ocsd_trc_index_t getRootIndex() const { return m_root_idx; };
const bool isP0() const { return m_is_P0; };
private:
ocsd_etmv4_i_pkt_type m_root_pkt;
ocsd_trc_index_t m_root_idx;
p0_elem_t m_P0_type;
protected:
bool m_is_P0; // true if genuine P0 - commit / cancellable, false otherwise
};
inline TrcStackElem::TrcStackElem(p0_elem_t p0_type, const bool isP0, ocsd_etmv4_i_pkt_type root_pkt, ocsd_trc_index_t root_index) :
m_root_pkt(root_pkt),
m_root_idx(root_index),
m_P0_type(p0_type),
m_is_P0(isP0)
{
}
/************************************************************/
class TrcStackElemAddr : public TrcStackElem
{
protected:
TrcStackElemAddr(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index);
TrcStackElemAddr(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const bool src_addr);
virtual ~TrcStackElemAddr() {};
friend class EtmV4P0Stack;
public:
void setAddr(const etmv4_addr_val_t &addr_val) { m_addr_val = addr_val; };
const etmv4_addr_val_t &getAddr() const { return m_addr_val; };
private:
etmv4_addr_val_t m_addr_val;
};
inline TrcStackElemAddr::TrcStackElemAddr(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index) :
TrcStackElem(P0_ADDR, false, root_pkt,root_index)
{
m_addr_val.val = 0;
m_addr_val.isa = 0;
}
inline TrcStackElemAddr::TrcStackElemAddr(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const bool src_addr) :
TrcStackElem(src_addr ? P0_SRC_ADDR : P0_ADDR, false, root_pkt, root_index)
{
m_addr_val.val = 0;
m_addr_val.isa = 0;
}
/************************************************************/
class TrcStackQElem : public TrcStackElem
{
protected:
TrcStackQElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index);
virtual ~TrcStackQElem() {};
friend class EtmV4P0Stack;
public:
void setInstrCount(const int instr_count) { m_instr_count = instr_count; };
const int getInstrCount() const { return m_instr_count; }
void setAddr(const etmv4_addr_val_t &addr_val)
{
m_addr_val = addr_val;
m_has_addr = true;
};
const etmv4_addr_val_t &getAddr() const { return m_addr_val; };
const bool hasAddr() const { return m_has_addr; };
private:
bool m_has_addr;
etmv4_addr_val_t m_addr_val;
int m_instr_count;
};
inline TrcStackQElem::TrcStackQElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index) :
TrcStackElem(P0_Q , true, root_pkt, root_index)
{
m_addr_val.val = 0;
m_addr_val.isa = 0;
m_has_addr = false;
m_instr_count = 0;
}
/************************************************************/
class TrcStackElemCtxt : public TrcStackElem
{
protected:
TrcStackElemCtxt(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index);
virtual ~TrcStackElemCtxt() {};
friend class EtmV4P0Stack;
public:
void setContext(const etmv4_context_t &ctxt) { m_context = ctxt; };
const etmv4_context_t &getContext() const { return m_context; };
void setIS(const uint8_t IS) { m_IS = IS; };
const uint8_t getIS() const { return m_IS; };
private:
etmv4_context_t m_context;
uint8_t m_IS;
};
inline TrcStackElemCtxt::TrcStackElemCtxt(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index) :
TrcStackElem(P0_CTXT, false, root_pkt,root_index)
{
}
/************************************************************/
class TrcStackElemExcept : public TrcStackElem
{
protected:
TrcStackElemExcept(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index);
virtual ~TrcStackElemExcept() {};
friend class EtmV4P0Stack;
public:
void setPrevSame(bool bSame) { m_prev_addr_same = bSame; };
const bool getPrevSame() const { return m_prev_addr_same; };
void setExcepNum(const uint16_t num) { m_excep_num = num; };
const uint16_t getExcepNum() const { return m_excep_num; };
private:
bool m_prev_addr_same;
uint16_t m_excep_num;
};
inline TrcStackElemExcept::TrcStackElemExcept(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index) :
TrcStackElem(P0_EXCEP, true, root_pkt,root_index),
m_prev_addr_same(false)
{
}
/************************************************************/
class TrcStackElemAtom : public TrcStackElem
{
protected:
TrcStackElemAtom(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index);
virtual ~TrcStackElemAtom() {};
friend class EtmV4P0Stack;
public:
void setAtom(const ocsd_pkt_atom &atom) { m_atom = atom; };
const ocsd_atm_val commitOldest();
int cancelNewest(const int nCancel);
void mispredictNewest();
const bool isEmpty() const { return (m_atom.num == 0); };
private:
ocsd_pkt_atom m_atom;
};
inline TrcStackElemAtom::TrcStackElemAtom(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index) :
TrcStackElem(P0_ATOM, true, root_pkt,root_index)
{
m_atom.num = 0;
}
// commit oldest - get value and remove it from pattern
inline const ocsd_atm_val TrcStackElemAtom::commitOldest()
{
ocsd_atm_val val = (m_atom.En_bits & 0x1) ? ATOM_E : ATOM_N;
m_atom.num--;
m_atom.En_bits >>= 1;
return val;
}
// cancel newest - just reduce the atom count.
inline int TrcStackElemAtom::cancelNewest(const int nCancel)
{
int nRemove = (nCancel <= m_atom.num) ? nCancel : m_atom.num;
m_atom.num -= nRemove;
return nRemove;
}
// mispredict newest - flip the bit of the newest atom
inline void TrcStackElemAtom::mispredictNewest()
{
uint32_t mask = 0x1 << (m_atom.num - 1);
if (m_atom.En_bits & mask)
m_atom.En_bits &= ~mask;
else
m_atom.En_bits |= mask;
}
/************************************************************/
class TrcStackElemParam : public TrcStackElem
{
protected:
TrcStackElemParam(const p0_elem_t p0_type, const bool isP0, const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index);
virtual ~TrcStackElemParam() {};
friend class EtmV4P0Stack;
public:
void setParam(const uint32_t param, const int nParamNum) { m_param[(nParamNum & 0x3)] = param; };
const uint32_t &getParam(const int nParamNum) const { return m_param[(nParamNum & 0x3)]; };
private:
uint32_t m_param[4];
};
inline TrcStackElemParam::TrcStackElemParam(const p0_elem_t p0_type, const bool isP0, const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index) :
TrcStackElem(p0_type, isP0, root_pkt,root_index)
{
}
/************************************************************/
class TrcStackElemMarker : public TrcStackElem
{
protected:
TrcStackElemMarker(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index);
virtual ~TrcStackElemMarker() {};
friend class EtmV4P0Stack;
public:
void setMarker(const trace_marker_payload_t &marker) { m_marker = marker; };
const trace_marker_payload_t &getMarker() const { return m_marker; };
private:
trace_marker_payload_t m_marker;
};
inline TrcStackElemMarker::TrcStackElemMarker(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index) :
TrcStackElem(P0_MARKER, false, root_pkt, root_index)
{
}
/************************************************************/
/* Instrumentation element
*/
class TrcStackElemITE : public TrcStackElem
{
protected:
TrcStackElemITE(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index);
virtual ~TrcStackElemITE() {};
friend class EtmV4P0Stack;
public:
void setITE(const trace_sw_ite_t &ite) { m_ite = ite; };
const trace_sw_ite_t &getITE() { return m_ite; };
private:
trace_sw_ite_t m_ite;
};
inline TrcStackElemITE::TrcStackElemITE(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index) :
TrcStackElem(P0_ITE, false, root_pkt, root_index)
{
}
/************************************************************/
/* P0 element stack that allows push of elements, and deletion of elements when done.
*/
class EtmV4P0Stack
{
public:
EtmV4P0Stack() {};
~EtmV4P0Stack();
void push_front(TrcStackElem *pElem);
void push_back(TrcStackElem *pElem); // insert element when processing
void pop_back(bool pend_delete = true);
void pop_front(bool pend_delete = true);
TrcStackElem *back();
TrcStackElem *front();
size_t size();
// iterate through stack from front
void from_front_init();
TrcStackElem *from_front_next();
void erase_curr_from_front(); // erase the element last returned
void delete_all();
void delete_back();
void delete_front();
void delete_popped();
// creation functions - create and push if successful.
TrcStackElemParam *createParamElem(const p0_elem_t p0_type, const bool isP0, const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const std::vector<uint32_t> &params);
TrcStackElem *createParamElemNoParam(const p0_elem_t p0_type, const bool isP0, const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, bool back = false);
TrcStackElemAtom *createAtomElem (const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const ocsd_pkt_atom &atom);
TrcStackElemExcept *createExceptElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const bool bSame, const uint16_t excepNum);
TrcStackElemCtxt *createContextElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const etmv4_context_t &context, const uint8_t IS, const bool back = false);
TrcStackElemAddr *createAddrElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const etmv4_addr_val_t &addr_val);
TrcStackQElem *createQElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const int count);
TrcStackElemMarker *createMarkerElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const trace_marker_payload_t &marker);
TrcStackElemAddr *createSrcAddrElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const etmv4_addr_val_t &addr_val);
TrcStackElemITE *createITEElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const trace_sw_ite_t &ite);
private:
std::deque<TrcStackElem *> m_P0_stack;
std::vector<TrcStackElem *> m_popped_elem;
std::deque<TrcStackElem *>::iterator m_iter;
};
inline EtmV4P0Stack::~EtmV4P0Stack()
{
delete_all();
delete_popped();
}
// put an element on the front of the stack
inline void EtmV4P0Stack::push_front(TrcStackElem *pElem)
{
m_P0_stack.push_front(pElem);
}
// put an element on the back of the stack
inline void EtmV4P0Stack::push_back(TrcStackElem *pElem)
{
m_P0_stack.push_back(pElem);
}
// pop last element pointer off the stack and stash it for later deletion
inline void EtmV4P0Stack::pop_back(bool pend_delete /* = true */)
{
if (pend_delete)
m_popped_elem.push_back(m_P0_stack.back());
m_P0_stack.pop_back();
}
inline void EtmV4P0Stack::pop_front(bool pend_delete /* = true */)
{
if (pend_delete)
m_popped_elem.push_back(m_P0_stack.front());
m_P0_stack.pop_front();
}
// pop last element pointer off the stack and delete immediately
inline void EtmV4P0Stack::delete_back()
{
if (m_P0_stack.size() > 0)
{
TrcStackElem* pElem = m_P0_stack.back();
delete pElem;
m_P0_stack.pop_back();
}
}
// pop first element pointer off the stack and delete immediately
inline void EtmV4P0Stack::delete_front()
{
if (m_P0_stack.size() > 0)
{
TrcStackElem* pElem = m_P0_stack.front();
delete pElem;
m_P0_stack.pop_front();
}
}
// get a pointer to the last element on the stack
inline TrcStackElem *EtmV4P0Stack::back()
{
return m_P0_stack.back();
}
inline TrcStackElem *EtmV4P0Stack::front()
{
return m_P0_stack.front();
}
// remove and delete all the elements left on the stack
inline void EtmV4P0Stack::delete_all()
{
while (m_P0_stack.size() > 0)
delete_back();
m_P0_stack.clear();
}
// delete list of popped elements.
inline void EtmV4P0Stack::delete_popped()
{
while (m_popped_elem.size() > 0)
{
delete m_popped_elem.back();
m_popped_elem.pop_back();
}
m_popped_elem.clear();
}
// get current number of elements on the stack
inline size_t EtmV4P0Stack::size()
{
return m_P0_stack.size();
}
#endif // ARM_TRC_ETMV4_STACK_ELEM_H_INCLUDED
/* End of File trc_etmv4_stack_elem.h */
EtmV4P0Stack::from_front_init
void from_front_init()
EtmV4P0Stack::delete_back
void delete_back()
Definition trc_etmv4_stack_elem.h:442
EtmV4P0Stack::from_front_next
TrcStackElem * from_front_next()
EtmV4P0Stack::createContextElem
TrcStackElemCtxt * createContextElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const etmv4_context_t &context, const uint8_t IS, const bool back=false)
EtmV4P0Stack::createSrcAddrElem
TrcStackElemAddr * createSrcAddrElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const etmv4_addr_val_t &addr_val)
EtmV4P0Stack::createAtomElem
TrcStackElemAtom * createAtomElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const ocsd_pkt_atom &atom)
EtmV4P0Stack::createITEElem
TrcStackElemITE * createITEElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const trace_sw_ite_t &ite)
EtmV4P0Stack::erase_curr_from_front
void erase_curr_from_front()
EtmV4P0Stack::size
size_t size()
Definition trc_etmv4_stack_elem.h:496
EtmV4P0Stack::pop_front
void pop_front(bool pend_delete=true)
Definition trc_etmv4_stack_elem.h:434
EtmV4P0Stack::front
TrcStackElem * front()
Definition trc_etmv4_stack_elem.h:471
EtmV4P0Stack::EtmV4P0Stack
EtmV4P0Stack()
Definition trc_etmv4_stack_elem.h:369
EtmV4P0Stack::delete_front
void delete_front()
Definition trc_etmv4_stack_elem.h:453
EtmV4P0Stack::delete_all
void delete_all()
Definition trc_etmv4_stack_elem.h:477
EtmV4P0Stack::push_front
void push_front(TrcStackElem *pElem)
Definition trc_etmv4_stack_elem.h:415
EtmV4P0Stack::createAddrElem
TrcStackElemAddr * createAddrElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const etmv4_addr_val_t &addr_val)
EtmV4P0Stack::back
TrcStackElem * back()
Definition trc_etmv4_stack_elem.h:466
EtmV4P0Stack::createMarkerElem
TrcStackElemMarker * createMarkerElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const trace_marker_payload_t &marker)
EtmV4P0Stack::createQElem
TrcStackQElem * createQElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const int count)
EtmV4P0Stack::push_back
void push_back(TrcStackElem *pElem)
Definition trc_etmv4_stack_elem.h:421
EtmV4P0Stack::pop_back
void pop_back(bool pend_delete=true)
Definition trc_etmv4_stack_elem.h:427
EtmV4P0Stack::delete_popped
void delete_popped()
Definition trc_etmv4_stack_elem.h:485
EtmV4P0Stack::createParamElemNoParam
TrcStackElem * createParamElemNoParam(const p0_elem_t p0_type, const bool isP0, const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, bool back=false)
EtmV4P0Stack::~EtmV4P0Stack
~EtmV4P0Stack()
Definition trc_etmv4_stack_elem.h:408
EtmV4P0Stack::createParamElem
TrcStackElemParam * createParamElem(const p0_elem_t p0_type, const bool isP0, const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const std::vector< uint32_t > &params)
EtmV4P0Stack::createExceptElem
TrcStackElemExcept * createExceptElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const bool bSame, const uint16_t excepNum)
TrcStackElemAddr
Definition trc_etmv4_stack_elem.h:109
TrcStackElemAddr::TrcStackElemAddr
TrcStackElemAddr(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
Definition trc_etmv4_stack_elem.h:125
TrcStackElemAddr::EtmV4P0Stack
friend class EtmV4P0Stack
Definition trc_etmv4_stack_elem.h:115
TrcStackElemAddr::~TrcStackElemAddr
virtual ~TrcStackElemAddr()
Definition trc_etmv4_stack_elem.h:113
TrcStackElemAddr::getAddr
const etmv4_addr_val_t & getAddr() const
Definition trc_etmv4_stack_elem.h:119
TrcStackElemAddr::setAddr
void setAddr(const etmv4_addr_val_t &addr_val)
Definition trc_etmv4_stack_elem.h:118
TrcStackElemAtom
Definition trc_etmv4_stack_elem.h:238
TrcStackElemAtom::~TrcStackElemAtom
virtual ~TrcStackElemAtom()
Definition trc_etmv4_stack_elem.h:241
TrcStackElemAtom::EtmV4P0Stack
friend class EtmV4P0Stack
Definition trc_etmv4_stack_elem.h:243
TrcStackElemAtom::mispredictNewest
void mispredictNewest()
Definition trc_etmv4_stack_elem.h:281
TrcStackElemAtom::cancelNewest
int cancelNewest(const int nCancel)
Definition trc_etmv4_stack_elem.h:273
TrcStackElemAtom::isEmpty
const bool isEmpty() const
Definition trc_etmv4_stack_elem.h:251
TrcStackElemAtom::setAtom
void setAtom(const ocsd_pkt_atom &atom)
Definition trc_etmv4_stack_elem.h:246
TrcStackElemAtom::TrcStackElemAtom
TrcStackElemAtom(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
Definition trc_etmv4_stack_elem.h:257
TrcStackElemAtom::commitOldest
const ocsd_atm_val commitOldest()
Definition trc_etmv4_stack_elem.h:264
TrcStackElemCtxt
Definition trc_etmv4_stack_elem.h:182
TrcStackElemCtxt::EtmV4P0Stack
friend class EtmV4P0Stack
Definition trc_etmv4_stack_elem.h:187
TrcStackElemCtxt::getContext
const etmv4_context_t & getContext() const
Definition trc_etmv4_stack_elem.h:191
TrcStackElemCtxt::setIS
void setIS(const uint8_t IS)
Definition trc_etmv4_stack_elem.h:192
TrcStackElemCtxt::TrcStackElemCtxt
TrcStackElemCtxt(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
Definition trc_etmv4_stack_elem.h:200
TrcStackElemCtxt::setContext
void setContext(const etmv4_context_t &ctxt)
Definition trc_etmv4_stack_elem.h:190
TrcStackElemCtxt::getIS
const uint8_t getIS() const
Definition trc_etmv4_stack_elem.h:193
TrcStackElemCtxt::~TrcStackElemCtxt
virtual ~TrcStackElemCtxt()
Definition trc_etmv4_stack_elem.h:185
TrcStackElemExcept
Definition trc_etmv4_stack_elem.h:209
TrcStackElemExcept::setPrevSame
void setPrevSame(bool bSame)
Definition trc_etmv4_stack_elem.h:217
TrcStackElemExcept::EtmV4P0Stack
friend class EtmV4P0Stack
Definition trc_etmv4_stack_elem.h:214
TrcStackElemExcept::getPrevSame
const bool getPrevSame() const
Definition trc_etmv4_stack_elem.h:218
TrcStackElemExcept::TrcStackElemExcept
TrcStackElemExcept(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
Definition trc_etmv4_stack_elem.h:228
TrcStackElemExcept::setExcepNum
void setExcepNum(const uint16_t num)
Definition trc_etmv4_stack_elem.h:220
TrcStackElemExcept::getExcepNum
const uint16_t getExcepNum() const
Definition trc_etmv4_stack_elem.h:221
TrcStackElemExcept::~TrcStackElemExcept
virtual ~TrcStackElemExcept()
Definition trc_etmv4_stack_elem.h:212
TrcStackElem
Definition trc_etmv4_stack_elem.h:77
TrcStackElem::getRootIndex
const ocsd_trc_index_t getRootIndex() const
Definition trc_etmv4_stack_elem.h:84
TrcStackElem::m_is_P0
bool m_is_P0
Definition trc_etmv4_stack_elem.h:93
TrcStackElem::TrcStackElem
TrcStackElem(const p0_elem_t p0_type, const bool isP0, const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
Definition trc_etmv4_stack_elem.h:97
TrcStackElem::~TrcStackElem
virtual ~TrcStackElem()
Definition trc_etmv4_stack_elem.h:80
TrcStackElem::isP0
const bool isP0() const
Definition trc_etmv4_stack_elem.h:85
TrcStackElem::getRootPkt
const ocsd_etmv4_i_pkt_type getRootPkt() const
Definition trc_etmv4_stack_elem.h:83
TrcStackElem::getP0Type
const p0_elem_t getP0Type() const
Definition trc_etmv4_stack_elem.h:82
TrcStackElemITE
Definition trc_etmv4_stack_elem.h:343
TrcStackElemITE::EtmV4P0Stack
friend class EtmV4P0Stack
Definition trc_etmv4_stack_elem.h:348
TrcStackElemITE::getITE
const trace_sw_ite_t & getITE()
Definition trc_etmv4_stack_elem.h:352
TrcStackElemITE::setITE
void setITE(const trace_sw_ite_t &ite)
Definition trc_etmv4_stack_elem.h:351
TrcStackElemITE::~TrcStackElemITE
virtual ~TrcStackElemITE()
Definition trc_etmv4_stack_elem.h:346
TrcStackElemITE::TrcStackElemITE
TrcStackElemITE(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
Definition trc_etmv4_stack_elem.h:358
TrcStackElemMarker
Definition trc_etmv4_stack_elem.h:318
TrcStackElemMarker::EtmV4P0Stack
friend class EtmV4P0Stack
Definition trc_etmv4_stack_elem.h:323
TrcStackElemMarker::TrcStackElemMarker
TrcStackElemMarker(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
Definition trc_etmv4_stack_elem.h:333
TrcStackElemMarker::setMarker
void setMarker(const trace_marker_payload_t &marker)
Definition trc_etmv4_stack_elem.h:326
TrcStackElemMarker::getMarker
const trace_marker_payload_t & getMarker() const
Definition trc_etmv4_stack_elem.h:327
TrcStackElemMarker::~TrcStackElemMarker
virtual ~TrcStackElemMarker()
Definition trc_etmv4_stack_elem.h:321
TrcStackElemParam
Definition trc_etmv4_stack_elem.h:294
TrcStackElemParam::EtmV4P0Stack
friend class EtmV4P0Stack
Definition trc_etmv4_stack_elem.h:299
TrcStackElemParam::setParam
void setParam(const uint32_t param, const int nParamNum)
Definition trc_etmv4_stack_elem.h:302
TrcStackElemParam::~TrcStackElemParam
virtual ~TrcStackElemParam()
Definition trc_etmv4_stack_elem.h:297
TrcStackElemParam::getParam
const uint32_t & getParam(const int nParamNum) const
Definition trc_etmv4_stack_elem.h:303
TrcStackElemParam::TrcStackElemParam
TrcStackElemParam(const p0_elem_t p0_type, const bool isP0, const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
Definition trc_etmv4_stack_elem.h:309
TrcStackQElem
Definition trc_etmv4_stack_elem.h:143
TrcStackQElem::~TrcStackQElem
virtual ~TrcStackQElem()
Definition trc_etmv4_stack_elem.h:146
TrcStackQElem::TrcStackQElem
TrcStackQElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
Definition trc_etmv4_stack_elem.h:169
TrcStackQElem::EtmV4P0Stack
friend class EtmV4P0Stack
Definition trc_etmv4_stack_elem.h:148
TrcStackQElem::setInstrCount
void setInstrCount(const int instr_count)
Definition trc_etmv4_stack_elem.h:151
TrcStackQElem::getInstrCount
const int getInstrCount() const
Definition trc_etmv4_stack_elem.h:152
TrcStackQElem::hasAddr
const bool hasAddr() const
Definition trc_etmv4_stack_elem.h:160
TrcStackQElem::getAddr
const etmv4_addr_val_t & getAddr() const
Definition trc_etmv4_stack_elem.h:159
TrcStackQElem::setAddr
void setAddr(const etmv4_addr_val_t &addr_val)
Definition trc_etmv4_stack_elem.h:154
trace_sw_ite_t
struct _sw_ite_t trace_sw_ite_t
trace_marker_payload_t
struct _trace_marker_payload_t trace_marker_payload_t
ocsd_trc_index_t
uint32_t ocsd_trc_index_t
Definition ocsd_if_types.h:59
etmv4_addr_val_t
struct _etmv4_addr_val_t etmv4_addr_val_t
ocsd_atm_val
enum _ocsd_atm_val ocsd_atm_val
ocsd_etmv4_i_pkt_type
enum _ocsd_etmv4_i_pkt_type ocsd_etmv4_i_pkt_type
ocsd_pkt_atom
struct _ocsd_pkt_atom ocsd_pkt_atom
etmv4_context_t
struct _etmv4_context_t etmv4_context_t
ATOM_N
@ ATOM_N
Definition trc_pkt_types.h:80
ATOM_E
@ ATOM_E
Definition trc_pkt_types.h:81
_p0_elem_t
_p0_elem_t
Definition trc_etmv4_stack_elem.h:48
P0_ADDR
@ P0_ADDR
Definition trc_etmv4_stack_elem.h:51
P0_TS
@ P0_TS
Definition trc_etmv4_stack_elem.h:57
P0_TRANS_START
@ P0_TRANS_START
Definition trc_etmv4_stack_elem.h:66
P0_Q
@ P0_Q
Definition trc_etmv4_stack_elem.h:61
P0_TRANS_TRACE_INIT
@ P0_TRANS_TRACE_INIT
Definition trc_etmv4_stack_elem.h:65
P0_FUNC_RET
@ P0_FUNC_RET
Definition trc_etmv4_stack_elem.h:63
P0_TRANS_FAIL
@ P0_TRANS_FAIL
Definition trc_etmv4_stack_elem.h:68
P0_CTXT
@ P0_CTXT
Definition trc_etmv4_stack_elem.h:52
P0_ITE
@ P0_ITE
Definition trc_etmv4_stack_elem.h:69
P0_EXCEP_RET
@ P0_EXCEP_RET
Definition trc_etmv4_stack_elem.h:55
P0_EVENT
@ P0_EVENT
Definition trc_etmv4_stack_elem.h:56
P0_MARKER
@ P0_MARKER
Definition trc_etmv4_stack_elem.h:60
P0_TRC_ON
@ P0_TRC_ON
Definition trc_etmv4_stack_elem.h:53
P0_TRANS_COMMIT
@ P0_TRANS_COMMIT
Definition trc_etmv4_stack_elem.h:67
P0_OVERFLOW
@ P0_OVERFLOW
Definition trc_etmv4_stack_elem.h:62
P0_TS_CC
@ P0_TS_CC
Definition trc_etmv4_stack_elem.h:59
P0_SRC_ADDR
@ P0_SRC_ADDR
Definition trc_etmv4_stack_elem.h:64
P0_ATOM
@ P0_ATOM
Definition trc_etmv4_stack_elem.h:50
P0_EXCEP
@ P0_EXCEP
Definition trc_etmv4_stack_elem.h:54
P0_CC
@ P0_CC
Definition trc_etmv4_stack_elem.h:58
P0_UNKNOWN
@ P0_UNKNOWN
Definition trc_etmv4_stack_elem.h:49
p0_elem_t
enum _p0_elem_t p0_elem_t
trc_gen_elem_types.h
OpenCSD : Decoder Output Generic Element types.
trc_pkt_types_etmv4.h