1
2
3
10
11
12
13
14
15
16
17
18
19
20
23
24
25
26
27
28
29
30
31
32
37
38
42
43
47
48
57
58
63
64
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
133
134
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
176
177
/* ... */
#ifndef OPENOCD_TARGET_XSCALE_H
#define OPENOCD_TARGET_XSCALE_H
#include "arm.h"
#include "armv4_5_mmu.h"
#include "trace.h"
#define XSCALE_COMMON_MAGIC 0x58534341U
/* ... */
#define XSCALE_DBGRX 0x02
#define XSCALE_DBGTX 0x10
#define XSCALE_LDIC 0x07
#define XSCALE_SELDCSR 0x09
#define XSCALE_IXP4XX_PXA2XX 0x0
#define XSCALE_PXA3XX 0x4
7 defines
enum xscale_debug_reason {
XSCALE_DBG_REASON_GENERIC,
XSCALE_DBG_REASON_RESET,
XSCALE_DBG_REASON_TB_FULL,
...};
enum xscale_trace_entry_type {
XSCALE_TRACE_MESSAGE = 0x0,
XSCALE_TRACE_ADDRESS = 0x1,
...};
struct xscale_trace_entry {
uint8_t data;
enum xscale_trace_entry_type type;
...};
struct xscale_trace_data {
struct xscale_trace_entry *entries;
int depth;
uint32_t chkpt0;
uint32_t chkpt1;
uint32_t last_instruction;
unsigned int num_checkpoints;
struct xscale_trace_data *next;
...};
enum trace_mode {
XSCALE_TRACE_DISABLED,
XSCALE_TRACE_FILL,
XSCALE_TRACE_WRAP
...};
struct xscale_trace {
struct image *image;
struct xscale_trace_data *data;
int buffer_fill;
int fill_counter;
enum trace_mode mode;
enum arm_state core_state;
...};
struct xscale_common {
unsigned int common_magic;
struct arm arm;
struct reg_cache *reg_cache;
uint32_t handler_address;
uint32_t low_vectors[8];
uint32_t high_vectors[8];
uint8_t static_low_vectors_set;
uint8_t static_high_vectors_set;
uint32_t static_low_vectors[8];
uint32_t static_high_vectors[8];
uint32_t cache_clean_address;
int hold_rst;
int external_debug_break;
int dbr_available;
int dbr0_used;
int dbr1_used;
int ibcr_available;
int ibcr0_used;
int ibcr1_used;
uint32_t arm_bkpt;
uint16_t thumb_bkpt;
uint8_t vector_catch;
struct xscale_trace trace;
int arch_debug_reason;
struct armv4_5_mmu_common armv4_5_mmu;
uint32_t cp15_control_reg;
int fast_memory_access;
int xscale_variant;
...};
static inline struct xscale_common *
target_to_xscale(struct target *target)
{
return container_of(target->arch_info, struct xscale_common, arm);
}{ ... }
struct xscale_reg {
int dbg_handler_number;
struct target *target;
...};
enum {
XSCALE_MAINID,
XSCALE_CACHETYPE,
XSCALE_CTRL,
XSCALE_AUXCTRL,
XSCALE_TTB,
XSCALE_DAC,
XSCALE_FSR,
XSCALE_FAR,
XSCALE_PID,
XSCALE_CPACCESS,
XSCALE_IBCR0,
XSCALE_IBCR1,
XSCALE_DBR0,
XSCALE_DBR1,
XSCALE_DBCON,
XSCALE_TBREG,
XSCALE_CHKPT0,
XSCALE_CHKPT1,
XSCALE_DCSR,
XSCALE_TX,
XSCALE_RX,
XSCALE_TXRXCTRL,
...};
#define ERROR_XSCALE_NO_TRACE_DATA (-700)
#define DCSR_TR (1 << 16)
#define DCSR_TU (1 << 17)
#define DCSR_TS (1 << 18)
#define DCSR_TA (1 << 19)
#define DCSR_TD (1 << 20)
#define DCSR_TI (1 << 22)
#define DCSR_TF (1 << 23)
#define DCSR_TRAP_MASK \
(DCSR_TF | DCSR_TI | DCSR_TD | DCSR_TA | DCSR_TS | DCSR_TU | DCSR_TR)...
9 defines
/* ... */#endif