Cortex-M3: remove exports and forward decls
[openocd.git] / src / target / cortex_m3.h
1 /***************************************************************************
2 * Copyright (C) 2005 by Dominic Rath *
3 * Dominic.Rath@gmx.de *
4 * *
5 * Copyright (C) 2006 by Magnus Lundin *
6 * lundin@mlu.mine.nu *
7 * *
8 * Copyright (C) 2008 by Spencer Oliver *
9 * spen@spen-soft.co.uk *
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 * This program is distributed in the hope that it will be useful, *
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
19 * GNU General Public License for more details. *
20 * *
21 * You should have received a copy of the GNU General Public License *
22 * along with this program; if not, write to the *
23 * Free Software Foundation, Inc., *
24 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
25 ***************************************************************************/
26 #ifndef CORTEX_M3_H
27 #define CORTEX_M3_H
28
29 #include "register.h"
30 #include "target.h"
31 #include "armv7m.h"
32
33
34 #define CORTEX_M3_COMMON_MAGIC 0x1A451A45
35
36 #define SYSTEM_CONTROL_BASE 0x400FE000
37
38 #define CPUID 0xE000ED00
39 /* Debug Control Block */
40 #define DCB_DHCSR 0xE000EDF0
41 #define DCB_DCRSR 0xE000EDF4
42 #define DCB_DCRDR 0xE000EDF8
43 #define DCB_DEMCR 0xE000EDFC
44
45 #define DCRSR_WnR (1 << 16)
46
47 #define DWT_CTRL 0xE0001000
48 #define DWT_COMP0 0xE0001020
49 #define DWT_MASK0 0xE0001024
50 #define DWT_FUNCTION0 0xE0001028
51
52 #define FP_CTRL 0xE0002000
53 #define FP_REMAP 0xE0002004
54 #define FP_COMP0 0xE0002008
55 #define FP_COMP1 0xE000200C
56 #define FP_COMP2 0xE0002010
57 #define FP_COMP3 0xE0002014
58 #define FP_COMP4 0xE0002018
59 #define FP_COMP5 0xE000201C
60 #define FP_COMP6 0xE0002020
61 #define FP_COMP7 0xE0002024
62
63 #define DWT_CTRL 0xE0001000
64
65 /* DCB_DHCSR bit and field definitions */
66 #define DBGKEY (0xA05F << 16)
67 #define C_DEBUGEN (1 << 0)
68 #define C_HALT (1 << 1)
69 #define C_STEP (1 << 2)
70 #define C_MASKINTS (1 << 3)
71 #define S_REGRDY (1 << 16)
72 #define S_HALT (1 << 17)
73 #define S_SLEEP (1 << 18)
74 #define S_LOCKUP (1 << 19)
75 #define S_RETIRE_ST (1 << 24)
76 #define S_RESET_ST (1 << 25)
77
78 /* DCB_DEMCR bit and field definitions */
79 #define TRCENA (1 << 24)
80 #define VC_HARDERR (1 << 10)
81 #define VC_INTERR (1 << 9)
82 #define VC_BUSERR (1 << 8)
83 #define VC_STATERR (1 << 7)
84 #define VC_CHKERR (1 << 6)
85 #define VC_NOCPERR (1 << 5)
86 #define VC_MMERR (1 << 4)
87 #define VC_CORERESET (1 << 0)
88
89 #define NVIC_ICTR 0xE000E004
90 #define NVIC_ISE0 0xE000E100
91 #define NVIC_ICSR 0xE000ED04
92 #define NVIC_AIRCR 0xE000ED0C
93 #define NVIC_SHCSR 0xE000ED24
94 #define NVIC_CFSR 0xE000ED28
95 #define NVIC_MMFSRb 0xE000ED28
96 #define NVIC_BFSRb 0xE000ED29
97 #define NVIC_USFSRh 0xE000ED2A
98 #define NVIC_HFSR 0xE000ED2C
99 #define NVIC_DFSR 0xE000ED30
100 #define NVIC_MMFAR 0xE000ED34
101 #define NVIC_BFAR 0xE000ED38
102
103 /* NVIC_AIRCR bits */
104 #define AIRCR_VECTKEY (0x5FA << 16)
105 #define AIRCR_SYSRESETREQ (1 << 2)
106 #define AIRCR_VECTCLRACTIVE (1 << 1)
107 #define AIRCR_VECTRESET (1 << 0)
108 /* NVIC_SHCSR bits */
109 #define SHCSR_BUSFAULTENA (1 << 17)
110 /* NVIC_DFSR bits */
111 #define DFSR_HALTED 1
112 #define DFSR_BKPT 2
113 #define DFSR_DWTTRAP 4
114 #define DFSR_VCATCH 8
115
116 #define FPCR_CODE 0
117 #define FPCR_LITERAL 1
118 #define FPCR_REPLACE_REMAP (0 << 30)
119 #define FPCR_REPLACE_BKPT_LOW (1 << 30)
120 #define FPCR_REPLACE_BKPT_HIGH (2 << 30)
121 #define FPCR_REPLACE_BKPT_BOTH (3 << 30)
122
123 typedef struct cortex_m3_fp_comparator_s
124 {
125 int used;
126 int type;
127 uint32_t fpcr_value;
128 uint32_t fpcr_address;
129 } cortex_m3_fp_comparator_t;
130
131 typedef struct cortex_m3_dwt_comparator_s
132 {
133 int used;
134 uint32_t comp;
135 uint32_t mask;
136 uint32_t function;
137 uint32_t dwt_comparator_address;
138 } cortex_m3_dwt_comparator_t;
139
140 typedef struct cortex_m3_common_s
141 {
142 int common_magic;
143 arm_jtag_t jtag_info;
144
145 /* Context information */
146 uint32_t dcb_dhcsr;
147 uint32_t nvic_dfsr; /* Debug Fault Status Register - shows reason for debug halt */
148 uint32_t nvic_icsr; /* Interrupt Control State Register - shows active and pending IRQ */
149
150 /* Flash Patch and Breakpoint (FPB) */
151 int fp_num_lit;
152 int fp_num_code;
153 int fp_code_available;
154 int fpb_enabled;
155 int auto_bp_type;
156 cortex_m3_fp_comparator_t *fp_comparator_list;
157
158 /* Data Watchpoint and Trace (DWT) */
159 int dwt_num_comp;
160 int dwt_comp_available;
161 cortex_m3_dwt_comparator_t *dwt_comparator_list;
162
163 /* Interrupts */
164 int intlinesnum;
165 uint32_t *intsetenable;
166
167 armv7m_common_t armv7m;
168 void *arch_info;
169 } cortex_m3_common_t;
170
171 #endif /* CORTEX_M3_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)