1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 /***************************************************************************
4 * Generic Xtensa target API for OpenOCD *
5 * Copyright (C) 2020-2022 Cadence Design Systems, Inc. *
6 * Copyright (C) 2016-2019 Espressif Systems Ltd. *
7 * Author: Angus Gratton gus@projectgus.com *
8 ***************************************************************************/
10 #ifndef OPENOCD_TARGET_XTENSA_REGS_H
11 #define OPENOCD_TARGET_XTENSA_REGS_H
18 XT_REG_IDX_ARFIRST
= XT_REG_IDX_AR0
,
34 XT_REG_IDX_ARLAST
= 64, /* Max 64 ARs */
35 XT_REG_IDX_WINDOWBASE
,
36 XT_REG_IDX_WINDOWSTART
,
38 XT_REG_IDX_IBREAKENABLE
,
48 XT_REG_IDX_DEBUGCAUSE
,
50 XT_REG_IDX_ICOUNTLEVEL
,
70 typedef uint32_t xtensa_reg_val_t
;
72 #define XT_NUM_A_REGS 16
74 enum xtensa_reg_type
{
75 XT_REG_GENERAL
= 0, /* General-purpose register; part of the windowed register set */
76 XT_REG_USER
= 1, /* User register, needs RUR to read */
77 XT_REG_SPECIAL
= 2, /* Special register, needs RSR to read */
78 XT_REG_DEBUG
= 3, /* Register used for the debug interface. Don't mess with this. */
79 XT_REG_RELGEN
= 4, /* Relative general address. Points to the absolute addresses plus the window
81 XT_REG_FR
= 5, /* Floating-point register */
82 XT_REG_TIE
= 6, /* TIE (custom) register */
83 XT_REG_OTHER
= 7, /* Other (typically legacy) register */
86 /* enum names must be one of the above types + _VAL or _MASK */
87 XT_REG_GENERAL_MASK
= 0xFFC0,
88 XT_REG_GENERAL_VAL
= 0x0100,
89 XT_REG_USER_MASK
= 0xFF00,
90 XT_REG_USER_VAL
= 0x0300,
91 XT_REG_SPECIAL_MASK
= 0xFF00,
92 XT_REG_SPECIAL_VAL
= 0x0200,
93 XT_REG_DEBUG_MASK
= 0xFF00,
94 XT_REG_DEBUG_VAL
= 0x0200,
95 XT_REG_RELGEN_MASK
= 0xFFE0,
96 XT_REG_RELGEN_VAL
= 0x0000,
97 XT_REG_FR_MASK
= 0xFFF0,
98 XT_REG_FR_VAL
= 0x0030,
99 XT_REG_TIE_MASK
= 0xF000,
100 XT_REG_TIE_VAL
= 0xF000, /* unused */
101 XT_REG_OTHER_MASK
= 0xFFFF,
102 XT_REG_OTHER_VAL
= 0xF000, /* unused */
104 XT_REG_INDEX_MASK
= 0x00FF
107 enum xtensa_reg_flags
{
108 XT_REGF_NOREAD
= 0x01, /* Register is write-only */
109 XT_REGF_COPROC0
= 0x02, /* Can't be read if coproc0 isn't enabled */
113 struct xtensa_reg_desc
{
116 unsigned int reg_num
; /* ISA register num (meaning depends on register type) */
117 unsigned int dbreg_num
; /* Debugger-visible register num (reg type encoded) */
118 enum xtensa_reg_type type
;
119 enum xtensa_reg_flags flags
;
122 #define _XT_MK_DBREGN(reg_num, reg_type) \
123 ((reg_type ## _VAL) | (reg_num))
125 #define _XT_MK_DBREGN_MASK(reg_num, reg_mask) \
126 ((reg_mask) | (reg_num))
128 #define XT_MK_REG_DESC(n, r, t, f) \
129 { .name = (n), .exist = false, .reg_num = (r), \
130 .dbreg_num = _XT_MK_DBREGN(r, t), .type = (t), \
133 extern struct xtensa_reg_desc xtensa_regs
[XT_NUM_REGS
];
135 #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)