1 /*!
2  * \file       opencsd/trc_pkt_types.h
3  * \brief      OpenCSD: Common "C" types for trace packets.
4  *
5  * \copyright  Copyright (c) 2015, ARM Limited. All Rights Reserved.
6  */
7 
8 
9 /*
10  * Redistribution and use in source and binary forms, with or without modification,
11  * are permitted provided that the following conditions are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright notice,
14  * this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright notice,
17  * this list of conditions and the following disclaimer in the documentation
18  * and/or other materials provided with the distribution.
19  *
20  * 3. Neither the name of the copyright holder nor the names of its contributors
21  * may be used to endorse or promote products derived from this software without
22  * specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
25  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27  * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
28  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  */
35 
36 #ifndef ARM_TRC_PKT_TYPES_H_INCLUDED
37 #define ARM_TRC_PKT_TYPES_H_INCLUDED
38 
39 #include <stdint.h>
40 #include "opencsd/ocsd_if_types.h"
41 
42 /** @defgroup trc_pkts  OpenCSD Library : Trace Packet Types
43 
44     @brief Types used in trace packet description structures.
45 
46 @{*/
47 
48 
49 /** @name Common Packet Types
50 @{*/
51 
52 typedef enum _ocsd_pkt_va_size
53 {
54     VA_32BIT,
55     VA_64BIT
56 } ocsd_pkt_va_size;
57 
58 typedef struct _ocsd_pkt_vaddr
59 {
60     ocsd_pkt_va_size size;     /**< Virtual address size. */
61     ocsd_vaddr_t val;  /**< Current value */
62     uint8_t pkt_bits;   /**< Bits updated this packet */
63     uint8_t valid_bits; /**< Currently valid bits */
64 } ocsd_pkt_vaddr;
65 
66 typedef struct _ocsd_pkt_byte_sz_val
67 {
68     uint32_t val;
69     uint8_t  size_bytes;
70     uint8_t  valid_bytes;
71 } ocsd_pkt_byte_sz_val;
72 
73 typedef enum _ocsd_pkt_atm_type
74 {
75     ATOM_PATTERN,   /**< set atom packet using pattern supplied */
76     ATOM_REPEAT     /**< set atom packet using repeat value (convert to pattern) */
77 } ocsd_pkt_atm_type;
78 
79 typedef enum _ocsd_atm_val {
80     ATOM_N,
81     ATOM_E
82 } ocsd_atm_val;
83 
84 typedef struct _ocsd_pkt_atom
85 {
86     /** pattern across num bits.
87         Bit sequence:- ls bit = oldest atom (1st instruction executed), ms bit = newest (last instruction executed),
88         Bit values  :-  1'b1 = E atom, 1'b0 = N atom.
89       */
90     uint32_t En_bits;
91     uint8_t num;                /**< number of atoms represented */
92 } ocsd_pkt_atom;
93 
94 /** Isync Reason - common to PTM and ETMv3 **/
95 typedef enum _ocsd_iSync_reason {
96     iSync_Periodic = 0,
97     iSync_TraceEnable,
98     iSync_TraceRestartAfterOverflow,
99     iSync_DebugExit
100 } ocsd_iSync_reason;
101 
102 
103 typedef enum _ocsd_armv7_exception {
104     Excp_Reserved,
105     Excp_NoException,
106     Excp_Reset,
107     Excp_IRQ,
108     Excp_FIQ,
109     Excp_AsyncDAbort,
110     Excp_DebugHalt,
111     Excp_Jazelle,
112     Excp_SVC,
113     Excp_SMC,
114     Excp_Hyp,
115     Excp_Undef,
116     Excp_PrefAbort,
117     Excp_Generic,
118     Excp_SyncDataAbort,
119     Excp_CMUsageFault,
120     Excp_CMNMI,
121     Excp_CMDebugMonitor,
122     Excp_CMMemManage,
123     Excp_CMPendSV,
124     Excp_CMSysTick,
125     Excp_CMBusFault,
126     Excp_CMHardFault,
127     Excp_CMIRQn,
128     Excp_ThumbEECheckFail,
129 } ocsd_armv7_exception;
130 
131 /** @}*/
132 
133 /** @}*/
134 
135 #endif // ARM_TRC_PKT_TYPES_H_INCLUDED
136 
137 /* End of File opencsd/trc_pkt_types.h */
138