OpenCSD - CoreSight Trace Decode Library
1.8.3
Toggle main menu visibility
Loading...
Searching...
No Matches
include
common
trc_ret_stack.h
Go to the documentation of this file.
1
/*
2
* \file trc_ret_stack.h
3
* \brief OpenCSD : trace decoder return stack feature.
4
*
5
* \copyright Copyright (c) 2017, ARM Limited. All Rights Reserved.
6
*/
7
8
/*
9
* Redistribution and use in source and binary forms, with or without modification,
10
* are permitted provided that the following conditions are met:
11
*
12
* 1. Redistributions of source code must retain the above copyright notice,
13
* this list of conditions and the following disclaimer.
14
*
15
* 2. Redistributions in binary form must reproduce the above copyright notice,
16
* this list of conditions and the following disclaimer in the documentation
17
* and/or other materials provided with the distribution.
18
*
19
* 3. Neither the name of the copyright holder nor the names of its contributors
20
* may be used to endorse or promote products derived from this software without
21
* specific prior written permission.
22
*
23
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
24
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
27
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
30
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
*/
34
35
#ifndef ARM_TRC_RET_STACK_H_INCLUDED
36
#define ARM_TRC_RET_STACK_H_INCLUDED
37
38
#include "
opencsd/ocsd_if_types.h
"
39
40
// uncomment below for return stack logging
41
// #define TRC_RET_STACK_DEBUG
42
43
#ifdef TRC_RET_STACK_DEBUG
44
class
TraceComponent
;
45
#endif
46
47
typedef
struct
_retStackElement
48
{
49
ocsd_vaddr_t
ret_addr
;
50
ocsd_isa
ret_isa
;
51
}
retStackElement
;
52
53
class
TrcAddrReturnStack
54
{
55
public
:
56
TrcAddrReturnStack
();
57
~TrcAddrReturnStack
() {};
58
59
void
set_active
(
bool
active)
60
{
61
m_active = active;
62
};
63
64
bool
is_active
()
const
65
{
66
return
m_active;
67
};
68
69
void
push
(
const
ocsd_vaddr_t
addr,
const
ocsd_isa
isa);
70
ocsd_vaddr_t
pop
(
ocsd_isa
&isa);
71
void
flush
();
72
73
bool
overflow
()
const
74
{
75
return
(
bool
)(num_entries < 0);
76
};
77
78
void
set_tinfo_wait_addr
()
79
{
80
m_t_info_wait_addr =
true
;
81
}
82
83
void
clear_t_info_wait_addr
()
84
{
85
m_t_info_wait_addr =
false
;
86
}
87
88
const
bool
is_t_info_wait_addr
()
const
89
{
90
return
m_t_info_wait_addr;
91
}
92
93
private
:
94
bool
m_active;
95
bool
m_t_info_wait_addr;
// push not permitted if waiting for tinfo address
96
97
int
head_idx;
98
int
num_entries;
99
retStackElement
m_stack[16];
100
101
#ifdef TRC_RET_STACK_DEBUG
102
public
:
103
void
set_dbg_logger(
TraceComponent
*pLogger) { m_p_debug_logger = pLogger; };
104
private
:
105
void
LogOp(
const
char
*pszOpString,
ocsd_vaddr_t
addr,
int
head_off,
ocsd_isa
isa);
106
107
TraceComponent *m_p_debug_logger;
108
#endif
// TRC_RET_STACK_DEBUG
109
};
110
111
#endif
// ARM_TRC_RET_STACK_H_INCLUDED
112
113
/* End of File trc_ret_stack.h */
TraceComponent
Base class for all decode components in the library.
Definition
trc_component.h:57
TrcAddrReturnStack::set_tinfo_wait_addr
void set_tinfo_wait_addr()
Definition
trc_ret_stack.h:78
TrcAddrReturnStack::is_active
bool is_active() const
Definition
trc_ret_stack.h:64
TrcAddrReturnStack::clear_t_info_wait_addr
void clear_t_info_wait_addr()
Definition
trc_ret_stack.h:83
TrcAddrReturnStack::flush
void flush()
TrcAddrReturnStack::set_active
void set_active(bool active)
Definition
trc_ret_stack.h:59
TrcAddrReturnStack::overflow
bool overflow() const
Definition
trc_ret_stack.h:73
TrcAddrReturnStack::is_t_info_wait_addr
const bool is_t_info_wait_addr() const
Definition
trc_ret_stack.h:88
TrcAddrReturnStack::pop
ocsd_vaddr_t pop(ocsd_isa &isa)
TrcAddrReturnStack::push
void push(const ocsd_vaddr_t addr, const ocsd_isa isa)
TrcAddrReturnStack::~TrcAddrReturnStack
~TrcAddrReturnStack()
Definition
trc_ret_stack.h:57
TrcAddrReturnStack::TrcAddrReturnStack
TrcAddrReturnStack()
ocsd_isa
enum _ocsd_isa ocsd_isa
ocsd_vaddr_t
uint64_t ocsd_vaddr_t
Definition
ocsd_if_types.h:306
ocsd_if_types.h
OpenCSD : Standard Types used in the library interfaces.
_retStackElement
Definition
trc_ret_stack.h:48
_retStackElement::ret_addr
ocsd_vaddr_t ret_addr
Definition
trc_ret_stack.h:49
_retStackElement::ret_isa
ocsd_isa ret_isa
Definition
trc_ret_stack.h:50
retStackElement
struct _retStackElement retStackElement
Generated on
for OpenCSD - CoreSight Trace Decode Library by
1.17.0