David Brownell The rest of the Cortex-A8 support from Magnus: replace the previous
[openocd.git] / src / target / cortex_a8.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 * Copyright (C) 2009 by Dirk Behme *
12 * dirk.behme@gmail.com - copy from cortex_m3 *
13 * *
14 * This program is free software; you can redistribute it and/or modify *
15 * it under the terms of the GNU General Public License as published by *
16 * the Free Software Foundation; either version 2 of the License, or *
17 * (at your option) any later version. *
18 * *
19 * This program is distributed in the hope that it will be useful, *
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
22 * GNU General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU General Public License *
25 * along with this program; if not, write to the *
26 * Free Software Foundation, Inc., *
27 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
28 ***************************************************************************/
29 #ifndef CORTEX_A8_H
30 #define CORTEX_A8_H
31
32 #include "register.h"
33 #include "target.h"
34 #include "armv7a.h"
35 #include "arm7_9_common.h"
36
37 extern char* cortex_a8_state_strings[];
38
39 #define CORTEX_A8_COMMON_MAGIC 0x411fc082
40
41 #define CPUID 0x54011D00
42 /* Debug Control Block */
43 #define CPUDBG_DIDR 0x000
44 #define CPUDBG_WFAR 0x018
45 #define CPUDBG_DSCCR 0x028
46 #define CPUDBG_DTRRX 0x080
47 #define CPUDBG_ITR 0x084
48 #define CPUDBG_DSCR 0x088
49 #define CPUDBG_DTRTX 0x08c
50 #define CPUDBG_DRCR 0x090
51 #define CPUDBG_BVR_BASE 0x100
52 #define CPUDBG_BCR_BASE 0x140
53 #define CPUDBG_WVR_BASE 0x180
54
55 #define CPUDBG_CPUID 0xD00
56 #define CPUDBG_CTYPR 0xD04
57 #define CPUDBG_TTYPR 0xD0C
58
59 #define BRP_NORMAL 0
60 #define BRP_CONTEXT 1
61
62 typedef struct cortex_a8_brp_s
63 {
64 int used;
65 int type;
66 uint32_t value;
67 uint32_t control;
68 uint8_t BRPn;
69 } cortex_a8_brp_t;
70
71 typedef struct cortex_a8_wrp_s
72 {
73 int used;
74 int type;
75 uint32_t value;
76 uint32_t control;
77 uint8_t WRPn;
78 } cortex_a8_wrp_t;
79
80 typedef struct cortex_a8_common_s
81 {
82 int common_magic;
83 arm_jtag_t jtag_info;
84
85 /* Core Debug Unit */
86 uint32_t debug_base;
87 uint8_t debug_ap;
88 uint8_t memory_ap;
89
90 /* Context information */
91 uint32_t cpudbg_dscr;
92 uint32_t nvic_dfsr; /* Debug Fault Status Register - shows reason for debug halt */
93 uint32_t nvic_icsr; /* Interrupt Control State Register - shows active and pending IRQ */
94
95 /* Saved cp15 registers */
96 uint32_t cp15_control_reg;
97 uint32_t cp15_aux_control_reg;
98
99 /* Breakpoint register pairs */
100 int brp_num_context;
101 int brp_num;
102 int brp_num_available;
103 // int brp_enabled;
104 cortex_a8_brp_t *brp_list;
105
106 /* Watchpoint register pairs */
107 int wrp_num;
108 int wrp_num_available;
109 cortex_a8_wrp_t *wrp_list;
110
111 /* Interrupts */
112 int intlinesnum;
113 uint32_t *intsetenable;
114
115 /* Use cortex_a8_read_regs_through_mem for fast register reads */
116 int fast_reg_read;
117
118 armv7a_common_t armv7a_common;
119 void *arch_info;
120 } cortex_a8_common_t;
121
122 extern int cortex_a8_init_arch_info(target_t *target, cortex_a8_common_t *cortex_a8, jtag_tap_t *tap);
123 int cortex_a8_read_memory(struct target_s *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer);
124 int cortex_a8_write_memory(struct target_s *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer);
125
126 #endif /* CORTEX_A8_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)