33 #ifndef ARM_TRC_ETMV4_STACK_ELEM_H_INCLUDED
34 #define ARM_TRC_ETMV4_STACK_ELEM_H_INCLUDED
98 m_root_idx(root_index),
155 m_addr_val = addr_val;
159 const bool hasAddr()
const {
return m_has_addr; };
191 void setIS(
const uint8_t IS) { m_IS = IS; };
192 const uint8_t
getIS()
const {
return m_IS; };
223 bool m_prev_addr_same;
224 uint16_t m_excep_num;
229 m_prev_addr_same(false)
274 int nRemove = (nCancel <= m_atom.
num) ? nCancel : m_atom.
num;
275 m_atom.
num -= nRemove;
282 uint32_t mask = 0x1 << (m_atom.
num - 1);
301 void setParam(
const uint32_t param,
const int nParamNum) { m_param[(nParamNum & 0x3)] = param; };
302 const uint32_t &
getParam(
const int nParamNum)
const {
return m_param[(nParamNum & 0x3)]; };
349 void pop_back(
bool pend_delete =
true);
377 std::deque<TrcStackElem *> m_P0_stack;
378 std::vector<TrcStackElem *> m_popped_elem;
379 std::deque<TrcStackElem *>::iterator m_iter;
391 m_P0_stack.push_front(pElem);
397 m_P0_stack.push_back(pElem);
404 m_popped_elem.push_back(m_P0_stack.back());
405 m_P0_stack.pop_back();
411 m_popped_elem.push_back(m_P0_stack.front());
412 m_P0_stack.pop_front();
418 if (m_P0_stack.size() > 0)
422 m_P0_stack.pop_back();
429 if (m_P0_stack.size() > 0)
433 m_P0_stack.pop_front();
442 return m_P0_stack.back();
447 return m_P0_stack.front();
453 while (m_P0_stack.size() > 0)
461 while (m_popped_elem.size() > 0)
463 delete m_popped_elem.back();
464 m_popped_elem.pop_back();
466 m_popped_elem.clear();
472 return m_P0_stack.size();
TrcStackElemMarker * createMarkerElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const trace_marker_payload_t &marker)
void erase_curr_from_front()
TrcStackElemExcept * createExceptElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const bool bSame, const uint16_t excepNum)
TrcStackElem * from_front_next()
void pop_front(bool pend_delete=true)
TrcStackQElem * createQElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const int count)
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)
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)
void push_front(TrcStackElem *pElem)
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 > ¶ms)
TrcStackElemAddr * createSrcAddrElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const etmv4_addr_val_t &addr_val)
void push_back(TrcStackElem *pElem)
void pop_back(bool pend_delete=true)
TrcStackElemAddr * createAddrElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index, const etmv4_addr_val_t &addr_val)
TrcStackElemAddr(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
virtual ~TrcStackElemAddr()
const etmv4_addr_val_t & getAddr() const
void setAddr(const etmv4_addr_val_t &addr_val)
virtual ~TrcStackElemAtom()
int cancelNewest(const int nCancel)
const bool isEmpty() const
void setAtom(const ocsd_pkt_atom &atom)
TrcStackElemAtom(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
const ocsd_atm_val commitOldest()
void setIS(const uint8_t IS)
TrcStackElemCtxt(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
void setContext(const etmv4_context_t &ctxt)
const etmv4_context_t & getContext() const
const uint8_t getIS() const
virtual ~TrcStackElemCtxt()
void setPrevSame(bool bSame)
const bool getPrevSame() const
TrcStackElemExcept(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
void setExcepNum(const uint16_t num)
const uint16_t getExcepNum() const
virtual ~TrcStackElemExcept()
const ocsd_trc_index_t getRootIndex() const
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)
const ocsd_etmv4_i_pkt_type getRootPkt() const
const p0_elem_t getP0Type() const
const trace_marker_payload_t & getMarker() const
TrcStackElemMarker(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
void setMarker(const trace_marker_payload_t &marker)
virtual ~TrcStackElemMarker()
void setParam(const uint32_t param, const int nParamNum)
const uint32_t & getParam(const int nParamNum) const
virtual ~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)
TrcStackQElem(const ocsd_etmv4_i_pkt_type root_pkt, const ocsd_trc_index_t root_index)
void setInstrCount(const int instr_count)
const int getInstrCount() const
const bool hasAddr() const
const etmv4_addr_val_t & getAddr() const
void setAddr(const etmv4_addr_val_t &addr_val)
uint32_t ocsd_trc_index_t
enum _ocsd_atm_val ocsd_atm_val
enum _ocsd_etmv4_i_pkt_type ocsd_etmv4_i_pkt_type
ocsd_vaddr_t val
Address value.
uint8_t isa
instruction set.
enum _p0_elem_t p0_elem_t
OpenCSD : Decoder Output Generic Element types.