76021319d41bd6742daa6d76c0723d4c00731534
[openocd.git] / src / target / xtensa / xtensa_regs.h
1 /***************************************************************************
2 * Generic Xtensa target API for OpenOCD *
3 * Copyright (C) 2016-2019 Espressif Systems Ltd. *
4 * Author: Angus Gratton gus@projectgus.com *
5 * Author: Jeroen Domburg <jeroen@espressif.com> *
6 * *
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
19 ***************************************************************************/
20 #ifndef OPENOCD_TARGET_XTENSA_REGS_H
21 #define OPENOCD_TARGET_XTENSA_REGS_H
22
23 struct reg_arch_type;
24
25 enum xtensa_reg_id {
26 XT_REG_IDX_PC = 0,
27 XT_REG_IDX_AR0,
28 XT_REG_IDX_AR1,
29 XT_REG_IDX_AR2,
30 XT_REG_IDX_AR3,
31 XT_REG_IDX_AR4,
32 XT_REG_IDX_AR5,
33 XT_REG_IDX_AR6,
34 XT_REG_IDX_AR7,
35 XT_REG_IDX_AR8,
36 XT_REG_IDX_AR9,
37 XT_REG_IDX_AR10,
38 XT_REG_IDX_AR11,
39 XT_REG_IDX_AR12,
40 XT_REG_IDX_AR13,
41 XT_REG_IDX_AR14,
42 XT_REG_IDX_AR15,
43 XT_REG_IDX_AR16,
44 XT_REG_IDX_AR17,
45 XT_REG_IDX_AR18,
46 XT_REG_IDX_AR19,
47 XT_REG_IDX_AR20,
48 XT_REG_IDX_AR21,
49 XT_REG_IDX_AR22,
50 XT_REG_IDX_AR23,
51 XT_REG_IDX_AR24,
52 XT_REG_IDX_AR25,
53 XT_REG_IDX_AR26,
54 XT_REG_IDX_AR27,
55 XT_REG_IDX_AR28,
56 XT_REG_IDX_AR29,
57 XT_REG_IDX_AR30,
58 XT_REG_IDX_AR31,
59 XT_REG_IDX_AR32,
60 XT_REG_IDX_AR33,
61 XT_REG_IDX_AR34,
62 XT_REG_IDX_AR35,
63 XT_REG_IDX_AR36,
64 XT_REG_IDX_AR37,
65 XT_REG_IDX_AR38,
66 XT_REG_IDX_AR39,
67 XT_REG_IDX_AR40,
68 XT_REG_IDX_AR41,
69 XT_REG_IDX_AR42,
70 XT_REG_IDX_AR43,
71 XT_REG_IDX_AR44,
72 XT_REG_IDX_AR45,
73 XT_REG_IDX_AR46,
74 XT_REG_IDX_AR47,
75 XT_REG_IDX_AR48,
76 XT_REG_IDX_AR49,
77 XT_REG_IDX_AR50,
78 XT_REG_IDX_AR51,
79 XT_REG_IDX_AR52,
80 XT_REG_IDX_AR53,
81 XT_REG_IDX_AR54,
82 XT_REG_IDX_AR55,
83 XT_REG_IDX_AR56,
84 XT_REG_IDX_AR57,
85 XT_REG_IDX_AR58,
86 XT_REG_IDX_AR59,
87 XT_REG_IDX_AR60,
88 XT_REG_IDX_AR61,
89 XT_REG_IDX_AR62,
90 XT_REG_IDX_AR63,
91 XT_REG_IDX_LBEG,
92 XT_REG_IDX_LEND,
93 XT_REG_IDX_LCOUNT,
94 XT_REG_IDX_SAR,
95 XT_REG_IDX_WINDOWBASE,
96 XT_REG_IDX_WINDOWSTART,
97 XT_REG_IDX_CONFIGID0,
98 XT_REG_IDX_CONFIGID1,
99 XT_REG_IDX_PS,
100 XT_REG_IDX_THREADPTR,
101 XT_REG_IDX_BR,
102 XT_REG_IDX_SCOMPARE1,
103 XT_REG_IDX_ACCLO,
104 XT_REG_IDX_ACCHI,
105 XT_REG_IDX_M0,
106 XT_REG_IDX_M1,
107 XT_REG_IDX_M2,
108 XT_REG_IDX_M3,
109 XT_REG_IDX_F0,
110 XT_REG_IDX_F1,
111 XT_REG_IDX_F2,
112 XT_REG_IDX_F3,
113 XT_REG_IDX_F4,
114 XT_REG_IDX_F5,
115 XT_REG_IDX_F6,
116 XT_REG_IDX_F7,
117 XT_REG_IDX_F8,
118 XT_REG_IDX_F9,
119 XT_REG_IDX_F10,
120 XT_REG_IDX_F11,
121 XT_REG_IDX_F12,
122 XT_REG_IDX_F13,
123 XT_REG_IDX_F14,
124 XT_REG_IDX_F15,
125 XT_REG_IDX_FCR,
126 XT_REG_IDX_FSR,
127 XT_REG_IDX_MMID,
128 XT_REG_IDX_IBREAKENABLE,
129 XT_REG_IDX_MEMCTL,
130 XT_REG_IDX_ATOMCTL,
131 XT_REG_IDX_IBREAKA0,
132 XT_REG_IDX_IBREAKA1,
133 XT_REG_IDX_DBREAKA0,
134 XT_REG_IDX_DBREAKA1,
135 XT_REG_IDX_DBREAKC0,
136 XT_REG_IDX_DBREAKC1,
137 XT_REG_IDX_EPC1,
138 XT_REG_IDX_EPC2,
139 XT_REG_IDX_EPC3,
140 XT_REG_IDX_EPC4,
141 XT_REG_IDX_EPC5,
142 XT_REG_IDX_EPC6,
143 XT_REG_IDX_EPC7,
144 XT_REG_IDX_DEPC,
145 XT_REG_IDX_EPS2,
146 XT_REG_IDX_EPS3,
147 XT_REG_IDX_EPS4,
148 XT_REG_IDX_EPS5,
149 XT_REG_IDX_EPS6,
150 XT_REG_IDX_EPS7,
151 XT_REG_IDX_EXCSAVE1,
152 XT_REG_IDX_EXCSAVE2,
153 XT_REG_IDX_EXCSAVE3,
154 XT_REG_IDX_EXCSAVE4,
155 XT_REG_IDX_EXCSAVE5,
156 XT_REG_IDX_EXCSAVE6,
157 XT_REG_IDX_EXCSAVE7,
158 XT_REG_IDX_CPENABLE,
159 XT_REG_IDX_INTERRUPT,
160 XT_REG_IDX_INTSET,
161 XT_REG_IDX_INTCLEAR,
162 XT_REG_IDX_INTENABLE,
163 XT_REG_IDX_VECBASE,
164 XT_REG_IDX_EXCCAUSE,
165 XT_REG_IDX_DEBUGCAUSE,
166 XT_REG_IDX_CCOUNT,
167 XT_REG_IDX_PRID,
168 XT_REG_IDX_ICOUNT,
169 XT_REG_IDX_ICOUNTLEVEL,
170 XT_REG_IDX_EXCVADDR,
171 XT_REG_IDX_CCOMPARE0,
172 XT_REG_IDX_CCOMPARE1,
173 XT_REG_IDX_CCOMPARE2,
174 XT_REG_IDX_MISC0,
175 XT_REG_IDX_MISC1,
176 XT_REG_IDX_MISC2,
177 XT_REG_IDX_MISC3,
178 XT_REG_IDX_LITBASE,
179 XT_REG_IDX_PTEVADDR,
180 XT_REG_IDX_RASID,
181 XT_REG_IDX_ITLBCFG,
182 XT_REG_IDX_DTLBCFG,
183 XT_REG_IDX_MEPC,
184 XT_REG_IDX_MEPS,
185 XT_REG_IDX_MESAVE,
186 XT_REG_IDX_MESR,
187 XT_REG_IDX_MECR,
188 XT_REG_IDX_MEVADDR,
189 XT_REG_IDX_A0,
190 XT_REG_IDX_A1,
191 XT_REG_IDX_A2,
192 XT_REG_IDX_A3,
193 XT_REG_IDX_A4,
194 XT_REG_IDX_A5,
195 XT_REG_IDX_A6,
196 XT_REG_IDX_A7,
197 XT_REG_IDX_A8,
198 XT_REG_IDX_A9,
199 XT_REG_IDX_A10,
200 XT_REG_IDX_A11,
201 XT_REG_IDX_A12,
202 XT_REG_IDX_A13,
203 XT_REG_IDX_A14,
204 XT_REG_IDX_A15,
205 XT_REG_IDX_PWRCTL,
206 XT_REG_IDX_PWRSTAT,
207 XT_REG_IDX_ERISTAT,
208 XT_REG_IDX_CS_ITCTRL,
209 XT_REG_IDX_CS_CLAIMSET,
210 XT_REG_IDX_CS_CLAIMCLR,
211 XT_REG_IDX_CS_LOCKACCESS,
212 XT_REG_IDX_CS_LOCKSTATUS,
213 XT_REG_IDX_CS_AUTHSTATUS,
214 XT_REG_IDX_FAULT_INFO,
215 XT_REG_IDX_TRAX_ID,
216 XT_REG_IDX_TRAX_CTRL,
217 XT_REG_IDX_TRAX_STAT,
218 XT_REG_IDX_TRAX_DATA,
219 XT_REG_IDX_TRAX_ADDR,
220 XT_REG_IDX_TRAX_PCTRIGGER,
221 XT_REG_IDX_TRAX_PCMATCH,
222 XT_REG_IDX_TRAX_DELAY,
223 XT_REG_IDX_TRAX_MEMSTART,
224 XT_REG_IDX_TRAX_MEMEND,
225 XT_REG_IDX_PMG,
226 XT_REG_IDX_PMPC,
227 XT_REG_IDX_PM0,
228 XT_REG_IDX_PM1,
229 XT_REG_IDX_PMCTRL0,
230 XT_REG_IDX_PMCTRL1,
231 XT_REG_IDX_PMSTAT0,
232 XT_REG_IDX_PMSTAT1,
233 XT_REG_IDX_OCD_ID,
234 XT_REG_IDX_OCD_DCRCLR,
235 XT_REG_IDX_OCD_DCRSET,
236 XT_REG_IDX_OCD_DSR,
237 XT_REG_IDX_OCD_DDR,
238 XT_NUM_REGS,
239 /* chip-specific user registers go after ISA-defined ones */
240 XT_USR_REG_START = XT_NUM_REGS
241 };
242
243 typedef uint32_t xtensa_reg_val_t;
244
245 enum xtensa_reg_type {
246 XT_REG_GENERAL = 0, /* General-purpose register; part of the windowed register set */
247 XT_REG_USER = 1, /* User register, needs RUR to read */
248 XT_REG_SPECIAL = 2, /* Special register, needs RSR to read */
249 XT_REG_DEBUG = 3, /* Register used for the debug interface. Don't mess with this. */
250 XT_REG_RELGEN = 4, /* Relative general address. Points to the absolute addresses plus the window
251 *index */
252 XT_REG_FR = 5, /* Floating-point register */
253 };
254
255 enum xtensa_reg_flags {
256 XT_REGF_NOREAD = 0x01, /* Register is write-only */
257 XT_REGF_COPROC0 = 0x02 /* Can't be read if coproc0 isn't enabled */
258 };
259
260 struct xtensa_reg_desc {
261 const char *name;
262 unsigned int reg_num; /* ISA register num (meaning depends on register type) */
263 enum xtensa_reg_type type;
264 enum xtensa_reg_flags flags;
265 };
266
267 struct xtensa_user_reg_desc {
268 const char *name;
269 /* ISA register num (meaning depends on register type) */
270 unsigned int reg_num;
271 enum xtensa_reg_flags flags;
272 uint32_t size;
273 const struct reg_arch_type *type;
274 };
275
276 extern const struct xtensa_reg_desc xtensa_regs[XT_NUM_REGS];
277
278 #endif /* OPENOCD_TARGET_XTENSA_REGS_H */

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)