blob: 61576dc58ede98d6079902510b361d21f834e170 [file] [log] [blame]
Kyle Swenson8d8f6542021-03-15 11:02:55 -06001/* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#ifndef __ASM_HARDWARE_CP14_H
14#define __ASM_HARDWARE_CP14_H
15
16#include <linux/types.h>
17
18/* Accessors for CP14 registers */
19#define dbg_read(reg) RCP14_##reg()
20#define dbg_write(val, reg) WCP14_##reg(val)
21#define etm_read(reg) RCP14_##reg()
22#define etm_write(val, reg) WCP14_##reg(val)
23
24/* MRC14 and MCR14 */
25#define MRC14(op1, crn, crm, op2) \
26({ \
27u32 val; \
28asm volatile("mrc p14, "#op1", %0, "#crn", "#crm", "#op2 : "=r" (val)); \
29val; \
30})
31
32#define MCR14(val, op1, crn, crm, op2) \
33({ \
34asm volatile("mcr p14, "#op1", %0, "#crn", "#crm", "#op2 : : "r" (val));\
35})
36
37/*
38 * Debug Registers
39 *
40 * Available only in DBGv7
41 * DBGECR, DBGDSCCR, DBGDSMCR, DBGDRCR
42 *
43 * Available only in DBGv7.1
44 * DBGBXVRm, DBGOSDLR, DBGDEVID2, DBGDEVID1
45 *
46 * Read only
47 * DBGDIDR, DBGDSCRint, DBGDTRRXint, DBGDRAR, DBGOSLSR, DBGOSSRR, DBGPRSR,
48 * DBGPRSR, DBGDSAR, DBGAUTHSTATUS, DBGDEVID2, DBGDEVID1, DBGDEVID
49 *
50 * Write only
51 * DBGDTRTXint, DBGOSLAR
52 */
53#define RCP14_DBGDIDR() MRC14(0, c0, c0, 0)
54#define RCP14_DBGDSCRint() MRC14(0, c0, c1, 0)
55#define RCP14_DBGDTRRXint() MRC14(0, c0, c5, 0)
56#define RCP14_DBGWFAR() MRC14(0, c0, c6, 0)
57#define RCP14_DBGVCR() MRC14(0, c0, c7, 0)
58#define RCP14_DBGECR() MRC14(0, c0, c9, 0)
59#define RCP14_DBGDSCCR() MRC14(0, c0, c10, 0)
60#define RCP14_DBGDSMCR() MRC14(0, c0, c11, 0)
61#define RCP14_DBGDTRRXext() MRC14(0, c0, c0, 2)
62#define RCP14_DBGDSCRext() MRC14(0, c0, c2, 2)
63#define RCP14_DBGDTRTXext() MRC14(0, c0, c3, 2)
64#define RCP14_DBGDRCR() MRC14(0, c0, c4, 2)
65#define RCP14_DBGBVR0() MRC14(0, c0, c0, 4)
66#define RCP14_DBGBVR1() MRC14(0, c0, c1, 4)
67#define RCP14_DBGBVR2() MRC14(0, c0, c2, 4)
68#define RCP14_DBGBVR3() MRC14(0, c0, c3, 4)
69#define RCP14_DBGBVR4() MRC14(0, c0, c4, 4)
70#define RCP14_DBGBVR5() MRC14(0, c0, c5, 4)
71#define RCP14_DBGBVR6() MRC14(0, c0, c6, 4)
72#define RCP14_DBGBVR7() MRC14(0, c0, c7, 4)
73#define RCP14_DBGBVR8() MRC14(0, c0, c8, 4)
74#define RCP14_DBGBVR9() MRC14(0, c0, c9, 4)
75#define RCP14_DBGBVR10() MRC14(0, c0, c10, 4)
76#define RCP14_DBGBVR11() MRC14(0, c0, c11, 4)
77#define RCP14_DBGBVR12() MRC14(0, c0, c12, 4)
78#define RCP14_DBGBVR13() MRC14(0, c0, c13, 4)
79#define RCP14_DBGBVR14() MRC14(0, c0, c14, 4)
80#define RCP14_DBGBVR15() MRC14(0, c0, c15, 4)
81#define RCP14_DBGBCR0() MRC14(0, c0, c0, 5)
82#define RCP14_DBGBCR1() MRC14(0, c0, c1, 5)
83#define RCP14_DBGBCR2() MRC14(0, c0, c2, 5)
84#define RCP14_DBGBCR3() MRC14(0, c0, c3, 5)
85#define RCP14_DBGBCR4() MRC14(0, c0, c4, 5)
86#define RCP14_DBGBCR5() MRC14(0, c0, c5, 5)
87#define RCP14_DBGBCR6() MRC14(0, c0, c6, 5)
88#define RCP14_DBGBCR7() MRC14(0, c0, c7, 5)
89#define RCP14_DBGBCR8() MRC14(0, c0, c8, 5)
90#define RCP14_DBGBCR9() MRC14(0, c0, c9, 5)
91#define RCP14_DBGBCR10() MRC14(0, c0, c10, 5)
92#define RCP14_DBGBCR11() MRC14(0, c0, c11, 5)
93#define RCP14_DBGBCR12() MRC14(0, c0, c12, 5)
94#define RCP14_DBGBCR13() MRC14(0, c0, c13, 5)
95#define RCP14_DBGBCR14() MRC14(0, c0, c14, 5)
96#define RCP14_DBGBCR15() MRC14(0, c0, c15, 5)
97#define RCP14_DBGWVR0() MRC14(0, c0, c0, 6)
98#define RCP14_DBGWVR1() MRC14(0, c0, c1, 6)
99#define RCP14_DBGWVR2() MRC14(0, c0, c2, 6)
100#define RCP14_DBGWVR3() MRC14(0, c0, c3, 6)
101#define RCP14_DBGWVR4() MRC14(0, c0, c4, 6)
102#define RCP14_DBGWVR5() MRC14(0, c0, c5, 6)
103#define RCP14_DBGWVR6() MRC14(0, c0, c6, 6)
104#define RCP14_DBGWVR7() MRC14(0, c0, c7, 6)
105#define RCP14_DBGWVR8() MRC14(0, c0, c8, 6)
106#define RCP14_DBGWVR9() MRC14(0, c0, c9, 6)
107#define RCP14_DBGWVR10() MRC14(0, c0, c10, 6)
108#define RCP14_DBGWVR11() MRC14(0, c0, c11, 6)
109#define RCP14_DBGWVR12() MRC14(0, c0, c12, 6)
110#define RCP14_DBGWVR13() MRC14(0, c0, c13, 6)
111#define RCP14_DBGWVR14() MRC14(0, c0, c14, 6)
112#define RCP14_DBGWVR15() MRC14(0, c0, c15, 6)
113#define RCP14_DBGWCR0() MRC14(0, c0, c0, 7)
114#define RCP14_DBGWCR1() MRC14(0, c0, c1, 7)
115#define RCP14_DBGWCR2() MRC14(0, c0, c2, 7)
116#define RCP14_DBGWCR3() MRC14(0, c0, c3, 7)
117#define RCP14_DBGWCR4() MRC14(0, c0, c4, 7)
118#define RCP14_DBGWCR5() MRC14(0, c0, c5, 7)
119#define RCP14_DBGWCR6() MRC14(0, c0, c6, 7)
120#define RCP14_DBGWCR7() MRC14(0, c0, c7, 7)
121#define RCP14_DBGWCR8() MRC14(0, c0, c8, 7)
122#define RCP14_DBGWCR9() MRC14(0, c0, c9, 7)
123#define RCP14_DBGWCR10() MRC14(0, c0, c10, 7)
124#define RCP14_DBGWCR11() MRC14(0, c0, c11, 7)
125#define RCP14_DBGWCR12() MRC14(0, c0, c12, 7)
126#define RCP14_DBGWCR13() MRC14(0, c0, c13, 7)
127#define RCP14_DBGWCR14() MRC14(0, c0, c14, 7)
128#define RCP14_DBGWCR15() MRC14(0, c0, c15, 7)
129#define RCP14_DBGDRAR() MRC14(0, c1, c0, 0)
130#define RCP14_DBGBXVR0() MRC14(0, c1, c0, 1)
131#define RCP14_DBGBXVR1() MRC14(0, c1, c1, 1)
132#define RCP14_DBGBXVR2() MRC14(0, c1, c2, 1)
133#define RCP14_DBGBXVR3() MRC14(0, c1, c3, 1)
134#define RCP14_DBGBXVR4() MRC14(0, c1, c4, 1)
135#define RCP14_DBGBXVR5() MRC14(0, c1, c5, 1)
136#define RCP14_DBGBXVR6() MRC14(0, c1, c6, 1)
137#define RCP14_DBGBXVR7() MRC14(0, c1, c7, 1)
138#define RCP14_DBGBXVR8() MRC14(0, c1, c8, 1)
139#define RCP14_DBGBXVR9() MRC14(0, c1, c9, 1)
140#define RCP14_DBGBXVR10() MRC14(0, c1, c10, 1)
141#define RCP14_DBGBXVR11() MRC14(0, c1, c11, 1)
142#define RCP14_DBGBXVR12() MRC14(0, c1, c12, 1)
143#define RCP14_DBGBXVR13() MRC14(0, c1, c13, 1)
144#define RCP14_DBGBXVR14() MRC14(0, c1, c14, 1)
145#define RCP14_DBGBXVR15() MRC14(0, c1, c15, 1)
146#define RCP14_DBGOSLSR() MRC14(0, c1, c1, 4)
147#define RCP14_DBGOSSRR() MRC14(0, c1, c2, 4)
148#define RCP14_DBGOSDLR() MRC14(0, c1, c3, 4)
149#define RCP14_DBGPRCR() MRC14(0, c1, c4, 4)
150#define RCP14_DBGPRSR() MRC14(0, c1, c5, 4)
151#define RCP14_DBGDSAR() MRC14(0, c2, c0, 0)
152#define RCP14_DBGITCTRL() MRC14(0, c7, c0, 4)
153#define RCP14_DBGCLAIMSET() MRC14(0, c7, c8, 6)
154#define RCP14_DBGCLAIMCLR() MRC14(0, c7, c9, 6)
155#define RCP14_DBGAUTHSTATUS() MRC14(0, c7, c14, 6)
156#define RCP14_DBGDEVID2() MRC14(0, c7, c0, 7)
157#define RCP14_DBGDEVID1() MRC14(0, c7, c1, 7)
158#define RCP14_DBGDEVID() MRC14(0, c7, c2, 7)
159
160#define WCP14_DBGDTRTXint(val) MCR14(val, 0, c0, c5, 0)
161#define WCP14_DBGWFAR(val) MCR14(val, 0, c0, c6, 0)
162#define WCP14_DBGVCR(val) MCR14(val, 0, c0, c7, 0)
163#define WCP14_DBGECR(val) MCR14(val, 0, c0, c9, 0)
164#define WCP14_DBGDSCCR(val) MCR14(val, 0, c0, c10, 0)
165#define WCP14_DBGDSMCR(val) MCR14(val, 0, c0, c11, 0)
166#define WCP14_DBGDTRRXext(val) MCR14(val, 0, c0, c0, 2)
167#define WCP14_DBGDSCRext(val) MCR14(val, 0, c0, c2, 2)
168#define WCP14_DBGDTRTXext(val) MCR14(val, 0, c0, c3, 2)
169#define WCP14_DBGDRCR(val) MCR14(val, 0, c0, c4, 2)
170#define WCP14_DBGBVR0(val) MCR14(val, 0, c0, c0, 4)
171#define WCP14_DBGBVR1(val) MCR14(val, 0, c0, c1, 4)
172#define WCP14_DBGBVR2(val) MCR14(val, 0, c0, c2, 4)
173#define WCP14_DBGBVR3(val) MCR14(val, 0, c0, c3, 4)
174#define WCP14_DBGBVR4(val) MCR14(val, 0, c0, c4, 4)
175#define WCP14_DBGBVR5(val) MCR14(val, 0, c0, c5, 4)
176#define WCP14_DBGBVR6(val) MCR14(val, 0, c0, c6, 4)
177#define WCP14_DBGBVR7(val) MCR14(val, 0, c0, c7, 4)
178#define WCP14_DBGBVR8(val) MCR14(val, 0, c0, c8, 4)
179#define WCP14_DBGBVR9(val) MCR14(val, 0, c0, c9, 4)
180#define WCP14_DBGBVR10(val) MCR14(val, 0, c0, c10, 4)
181#define WCP14_DBGBVR11(val) MCR14(val, 0, c0, c11, 4)
182#define WCP14_DBGBVR12(val) MCR14(val, 0, c0, c12, 4)
183#define WCP14_DBGBVR13(val) MCR14(val, 0, c0, c13, 4)
184#define WCP14_DBGBVR14(val) MCR14(val, 0, c0, c14, 4)
185#define WCP14_DBGBVR15(val) MCR14(val, 0, c0, c15, 4)
186#define WCP14_DBGBCR0(val) MCR14(val, 0, c0, c0, 5)
187#define WCP14_DBGBCR1(val) MCR14(val, 0, c0, c1, 5)
188#define WCP14_DBGBCR2(val) MCR14(val, 0, c0, c2, 5)
189#define WCP14_DBGBCR3(val) MCR14(val, 0, c0, c3, 5)
190#define WCP14_DBGBCR4(val) MCR14(val, 0, c0, c4, 5)
191#define WCP14_DBGBCR5(val) MCR14(val, 0, c0, c5, 5)
192#define WCP14_DBGBCR6(val) MCR14(val, 0, c0, c6, 5)
193#define WCP14_DBGBCR7(val) MCR14(val, 0, c0, c7, 5)
194#define WCP14_DBGBCR8(val) MCR14(val, 0, c0, c8, 5)
195#define WCP14_DBGBCR9(val) MCR14(val, 0, c0, c9, 5)
196#define WCP14_DBGBCR10(val) MCR14(val, 0, c0, c10, 5)
197#define WCP14_DBGBCR11(val) MCR14(val, 0, c0, c11, 5)
198#define WCP14_DBGBCR12(val) MCR14(val, 0, c0, c12, 5)
199#define WCP14_DBGBCR13(val) MCR14(val, 0, c0, c13, 5)
200#define WCP14_DBGBCR14(val) MCR14(val, 0, c0, c14, 5)
201#define WCP14_DBGBCR15(val) MCR14(val, 0, c0, c15, 5)
202#define WCP14_DBGWVR0(val) MCR14(val, 0, c0, c0, 6)
203#define WCP14_DBGWVR1(val) MCR14(val, 0, c0, c1, 6)
204#define WCP14_DBGWVR2(val) MCR14(val, 0, c0, c2, 6)
205#define WCP14_DBGWVR3(val) MCR14(val, 0, c0, c3, 6)
206#define WCP14_DBGWVR4(val) MCR14(val, 0, c0, c4, 6)
207#define WCP14_DBGWVR5(val) MCR14(val, 0, c0, c5, 6)
208#define WCP14_DBGWVR6(val) MCR14(val, 0, c0, c6, 6)
209#define WCP14_DBGWVR7(val) MCR14(val, 0, c0, c7, 6)
210#define WCP14_DBGWVR8(val) MCR14(val, 0, c0, c8, 6)
211#define WCP14_DBGWVR9(val) MCR14(val, 0, c0, c9, 6)
212#define WCP14_DBGWVR10(val) MCR14(val, 0, c0, c10, 6)
213#define WCP14_DBGWVR11(val) MCR14(val, 0, c0, c11, 6)
214#define WCP14_DBGWVR12(val) MCR14(val, 0, c0, c12, 6)
215#define WCP14_DBGWVR13(val) MCR14(val, 0, c0, c13, 6)
216#define WCP14_DBGWVR14(val) MCR14(val, 0, c0, c14, 6)
217#define WCP14_DBGWVR15(val) MCR14(val, 0, c0, c15, 6)
218#define WCP14_DBGWCR0(val) MCR14(val, 0, c0, c0, 7)
219#define WCP14_DBGWCR1(val) MCR14(val, 0, c0, c1, 7)
220#define WCP14_DBGWCR2(val) MCR14(val, 0, c0, c2, 7)
221#define WCP14_DBGWCR3(val) MCR14(val, 0, c0, c3, 7)
222#define WCP14_DBGWCR4(val) MCR14(val, 0, c0, c4, 7)
223#define WCP14_DBGWCR5(val) MCR14(val, 0, c0, c5, 7)
224#define WCP14_DBGWCR6(val) MCR14(val, 0, c0, c6, 7)
225#define WCP14_DBGWCR7(val) MCR14(val, 0, c0, c7, 7)
226#define WCP14_DBGWCR8(val) MCR14(val, 0, c0, c8, 7)
227#define WCP14_DBGWCR9(val) MCR14(val, 0, c0, c9, 7)
228#define WCP14_DBGWCR10(val) MCR14(val, 0, c0, c10, 7)
229#define WCP14_DBGWCR11(val) MCR14(val, 0, c0, c11, 7)
230#define WCP14_DBGWCR12(val) MCR14(val, 0, c0, c12, 7)
231#define WCP14_DBGWCR13(val) MCR14(val, 0, c0, c13, 7)
232#define WCP14_DBGWCR14(val) MCR14(val, 0, c0, c14, 7)
233#define WCP14_DBGWCR15(val) MCR14(val, 0, c0, c15, 7)
234#define WCP14_DBGBXVR0(val) MCR14(val, 0, c1, c0, 1)
235#define WCP14_DBGBXVR1(val) MCR14(val, 0, c1, c1, 1)
236#define WCP14_DBGBXVR2(val) MCR14(val, 0, c1, c2, 1)
237#define WCP14_DBGBXVR3(val) MCR14(val, 0, c1, c3, 1)
238#define WCP14_DBGBXVR4(val) MCR14(val, 0, c1, c4, 1)
239#define WCP14_DBGBXVR5(val) MCR14(val, 0, c1, c5, 1)
240#define WCP14_DBGBXVR6(val) MCR14(val, 0, c1, c6, 1)
241#define WCP14_DBGBXVR7(val) MCR14(val, 0, c1, c7, 1)
242#define WCP14_DBGBXVR8(val) MCR14(val, 0, c1, c8, 1)
243#define WCP14_DBGBXVR9(val) MCR14(val, 0, c1, c9, 1)
244#define WCP14_DBGBXVR10(val) MCR14(val, 0, c1, c10, 1)
245#define WCP14_DBGBXVR11(val) MCR14(val, 0, c1, c11, 1)
246#define WCP14_DBGBXVR12(val) MCR14(val, 0, c1, c12, 1)
247#define WCP14_DBGBXVR13(val) MCR14(val, 0, c1, c13, 1)
248#define WCP14_DBGBXVR14(val) MCR14(val, 0, c1, c14, 1)
249#define WCP14_DBGBXVR15(val) MCR14(val, 0, c1, c15, 1)
250#define WCP14_DBGOSLAR(val) MCR14(val, 0, c1, c0, 4)
251#define WCP14_DBGOSSRR(val) MCR14(val, 0, c1, c2, 4)
252#define WCP14_DBGOSDLR(val) MCR14(val, 0, c1, c3, 4)
253#define WCP14_DBGPRCR(val) MCR14(val, 0, c1, c4, 4)
254#define WCP14_DBGITCTRL(val) MCR14(val, 0, c7, c0, 4)
255#define WCP14_DBGCLAIMSET(val) MCR14(val, 0, c7, c8, 6)
256#define WCP14_DBGCLAIMCLR(val) MCR14(val, 0, c7, c9, 6)
257
258/*
259 * ETM Registers
260 *
261 * Available only in ETMv3.3, 3.4, 3.5
262 * ETMASICCR, ETMTECR2, ETMFFRR, ETMVDEVR, ETMVDCR1, ETMVDCR2, ETMVDCR3,
263 * ETMDCVRn, ETMDCMRn
264 *
265 * Available only in ETMv3.5 as read only
266 * ETMIDR2
267 *
268 * Available only in ETMv3.5, PFTv1.0, 1.1
269 * ETMTSEVR, ETMVMIDCVR, ETMPDCR
270 *
271 * Read only
272 * ETMCCR, ETMSCR, ETMIDR, ETMCCER, ETMOSLSR
273 * ETMLSR, ETMAUTHSTATUS, ETMDEVID, ETMDEVTYPE, ETMPIDR4, ETMPIDR5, ETMPIDR6,
274 * ETMPIDR7, ETMPIDR0, ETMPIDR1, ETMPIDR2, ETMPIDR2, ETMPIDR3, ETMCIDR0,
275 * ETMCIDR1, ETMCIDR2, ETMCIDR3
276 *
277 * Write only
278 * ETMOSLAR, ETMLAR
279 * Note: ETMCCER[11] controls WO nature of certain regs. Refer ETM arch spec.
280 */
281#define RCP14_ETMCR() MRC14(1, c0, c0, 0)
282#define RCP14_ETMCCR() MRC14(1, c0, c1, 0)
283#define RCP14_ETMTRIGGER() MRC14(1, c0, c2, 0)
284#define RCP14_ETMASICCR() MRC14(1, c0, c3, 0)
285#define RCP14_ETMSR() MRC14(1, c0, c4, 0)
286#define RCP14_ETMSCR() MRC14(1, c0, c5, 0)
287#define RCP14_ETMTSSCR() MRC14(1, c0, c6, 0)
288#define RCP14_ETMTECR2() MRC14(1, c0, c7, 0)
289#define RCP14_ETMTEEVR() MRC14(1, c0, c8, 0)
290#define RCP14_ETMTECR1() MRC14(1, c0, c9, 0)
291#define RCP14_ETMFFRR() MRC14(1, c0, c10, 0)
292#define RCP14_ETMFFLR() MRC14(1, c0, c11, 0)
293#define RCP14_ETMVDEVR() MRC14(1, c0, c12, 0)
294#define RCP14_ETMVDCR1() MRC14(1, c0, c13, 0)
295#define RCP14_ETMVDCR2() MRC14(1, c0, c14, 0)
296#define RCP14_ETMVDCR3() MRC14(1, c0, c15, 0)
297#define RCP14_ETMACVR0() MRC14(1, c0, c0, 1)
298#define RCP14_ETMACVR1() MRC14(1, c0, c1, 1)
299#define RCP14_ETMACVR2() MRC14(1, c0, c2, 1)
300#define RCP14_ETMACVR3() MRC14(1, c0, c3, 1)
301#define RCP14_ETMACVR4() MRC14(1, c0, c4, 1)
302#define RCP14_ETMACVR5() MRC14(1, c0, c5, 1)
303#define RCP14_ETMACVR6() MRC14(1, c0, c6, 1)
304#define RCP14_ETMACVR7() MRC14(1, c0, c7, 1)
305#define RCP14_ETMACVR8() MRC14(1, c0, c8, 1)
306#define RCP14_ETMACVR9() MRC14(1, c0, c9, 1)
307#define RCP14_ETMACVR10() MRC14(1, c0, c10, 1)
308#define RCP14_ETMACVR11() MRC14(1, c0, c11, 1)
309#define RCP14_ETMACVR12() MRC14(1, c0, c12, 1)
310#define RCP14_ETMACVR13() MRC14(1, c0, c13, 1)
311#define RCP14_ETMACVR14() MRC14(1, c0, c14, 1)
312#define RCP14_ETMACVR15() MRC14(1, c0, c15, 1)
313#define RCP14_ETMACTR0() MRC14(1, c0, c0, 2)
314#define RCP14_ETMACTR1() MRC14(1, c0, c1, 2)
315#define RCP14_ETMACTR2() MRC14(1, c0, c2, 2)
316#define RCP14_ETMACTR3() MRC14(1, c0, c3, 2)
317#define RCP14_ETMACTR4() MRC14(1, c0, c4, 2)
318#define RCP14_ETMACTR5() MRC14(1, c0, c5, 2)
319#define RCP14_ETMACTR6() MRC14(1, c0, c6, 2)
320#define RCP14_ETMACTR7() MRC14(1, c0, c7, 2)
321#define RCP14_ETMACTR8() MRC14(1, c0, c8, 2)
322#define RCP14_ETMACTR9() MRC14(1, c0, c9, 2)
323#define RCP14_ETMACTR10() MRC14(1, c0, c10, 2)
324#define RCP14_ETMACTR11() MRC14(1, c0, c11, 2)
325#define RCP14_ETMACTR12() MRC14(1, c0, c12, 2)
326#define RCP14_ETMACTR13() MRC14(1, c0, c13, 2)
327#define RCP14_ETMACTR14() MRC14(1, c0, c14, 2)
328#define RCP14_ETMACTR15() MRC14(1, c0, c15, 2)
329#define RCP14_ETMDCVR0() MRC14(1, c0, c0, 3)
330#define RCP14_ETMDCVR2() MRC14(1, c0, c2, 3)
331#define RCP14_ETMDCVR4() MRC14(1, c0, c4, 3)
332#define RCP14_ETMDCVR6() MRC14(1, c0, c6, 3)
333#define RCP14_ETMDCVR8() MRC14(1, c0, c8, 3)
334#define RCP14_ETMDCVR10() MRC14(1, c0, c10, 3)
335#define RCP14_ETMDCVR12() MRC14(1, c0, c12, 3)
336#define RCP14_ETMDCVR14() MRC14(1, c0, c14, 3)
337#define RCP14_ETMDCMR0() MRC14(1, c0, c0, 4)
338#define RCP14_ETMDCMR2() MRC14(1, c0, c2, 4)
339#define RCP14_ETMDCMR4() MRC14(1, c0, c4, 4)
340#define RCP14_ETMDCMR6() MRC14(1, c0, c6, 4)
341#define RCP14_ETMDCMR8() MRC14(1, c0, c8, 4)
342#define RCP14_ETMDCMR10() MRC14(1, c0, c10, 4)
343#define RCP14_ETMDCMR12() MRC14(1, c0, c12, 4)
344#define RCP14_ETMDCMR14() MRC14(1, c0, c14, 4)
345#define RCP14_ETMCNTRLDVR0() MRC14(1, c0, c0, 5)
346#define RCP14_ETMCNTRLDVR1() MRC14(1, c0, c1, 5)
347#define RCP14_ETMCNTRLDVR2() MRC14(1, c0, c2, 5)
348#define RCP14_ETMCNTRLDVR3() MRC14(1, c0, c3, 5)
349#define RCP14_ETMCNTENR0() MRC14(1, c0, c4, 5)
350#define RCP14_ETMCNTENR1() MRC14(1, c0, c5, 5)
351#define RCP14_ETMCNTENR2() MRC14(1, c0, c6, 5)
352#define RCP14_ETMCNTENR3() MRC14(1, c0, c7, 5)
353#define RCP14_ETMCNTRLDEVR0() MRC14(1, c0, c8, 5)
354#define RCP14_ETMCNTRLDEVR1() MRC14(1, c0, c9, 5)
355#define RCP14_ETMCNTRLDEVR2() MRC14(1, c0, c10, 5)
356#define RCP14_ETMCNTRLDEVR3() MRC14(1, c0, c11, 5)
357#define RCP14_ETMCNTVR0() MRC14(1, c0, c12, 5)
358#define RCP14_ETMCNTVR1() MRC14(1, c0, c13, 5)
359#define RCP14_ETMCNTVR2() MRC14(1, c0, c14, 5)
360#define RCP14_ETMCNTVR3() MRC14(1, c0, c15, 5)
361#define RCP14_ETMSQ12EVR() MRC14(1, c0, c0, 6)
362#define RCP14_ETMSQ21EVR() MRC14(1, c0, c1, 6)
363#define RCP14_ETMSQ23EVR() MRC14(1, c0, c2, 6)
364#define RCP14_ETMSQ31EVR() MRC14(1, c0, c3, 6)
365#define RCP14_ETMSQ32EVR() MRC14(1, c0, c4, 6)
366#define RCP14_ETMSQ13EVR() MRC14(1, c0, c5, 6)
367#define RCP14_ETMSQR() MRC14(1, c0, c7, 6)
368#define RCP14_ETMEXTOUTEVR0() MRC14(1, c0, c8, 6)
369#define RCP14_ETMEXTOUTEVR1() MRC14(1, c0, c9, 6)
370#define RCP14_ETMEXTOUTEVR2() MRC14(1, c0, c10, 6)
371#define RCP14_ETMEXTOUTEVR3() MRC14(1, c0, c11, 6)
372#define RCP14_ETMCIDCVR0() MRC14(1, c0, c12, 6)
373#define RCP14_ETMCIDCVR1() MRC14(1, c0, c13, 6)
374#define RCP14_ETMCIDCVR2() MRC14(1, c0, c14, 6)
375#define RCP14_ETMCIDCMR() MRC14(1, c0, c15, 6)
376#define RCP14_ETMIMPSPEC0() MRC14(1, c0, c0, 7)
377#define RCP14_ETMIMPSPEC1() MRC14(1, c0, c1, 7)
378#define RCP14_ETMIMPSPEC2() MRC14(1, c0, c2, 7)
379#define RCP14_ETMIMPSPEC3() MRC14(1, c0, c3, 7)
380#define RCP14_ETMIMPSPEC4() MRC14(1, c0, c4, 7)
381#define RCP14_ETMIMPSPEC5() MRC14(1, c0, c5, 7)
382#define RCP14_ETMIMPSPEC6() MRC14(1, c0, c6, 7)
383#define RCP14_ETMIMPSPEC7() MRC14(1, c0, c7, 7)
384#define RCP14_ETMSYNCFR() MRC14(1, c0, c8, 7)
385#define RCP14_ETMIDR() MRC14(1, c0, c9, 7)
386#define RCP14_ETMCCER() MRC14(1, c0, c10, 7)
387#define RCP14_ETMEXTINSELR() MRC14(1, c0, c11, 7)
388#define RCP14_ETMTESSEICR() MRC14(1, c0, c12, 7)
389#define RCP14_ETMEIBCR() MRC14(1, c0, c13, 7)
390#define RCP14_ETMTSEVR() MRC14(1, c0, c14, 7)
391#define RCP14_ETMAUXCR() MRC14(1, c0, c15, 7)
392#define RCP14_ETMTRACEIDR() MRC14(1, c1, c0, 0)
393#define RCP14_ETMIDR2() MRC14(1, c1, c2, 0)
394#define RCP14_ETMVMIDCVR() MRC14(1, c1, c0, 1)
395#define RCP14_ETMOSLSR() MRC14(1, c1, c1, 4)
396/* Not available in PFTv1.1 */
397#define RCP14_ETMOSSRR() MRC14(1, c1, c2, 4)
398#define RCP14_ETMPDCR() MRC14(1, c1, c4, 4)
399#define RCP14_ETMPDSR() MRC14(1, c1, c5, 4)
400#define RCP14_ETMITCTRL() MRC14(1, c7, c0, 4)
401#define RCP14_ETMCLAIMSET() MRC14(1, c7, c8, 6)
402#define RCP14_ETMCLAIMCLR() MRC14(1, c7, c9, 6)
403#define RCP14_ETMLSR() MRC14(1, c7, c13, 6)
404#define RCP14_ETMAUTHSTATUS() MRC14(1, c7, c14, 6)
405#define RCP14_ETMDEVID() MRC14(1, c7, c2, 7)
406#define RCP14_ETMDEVTYPE() MRC14(1, c7, c3, 7)
407#define RCP14_ETMPIDR4() MRC14(1, c7, c4, 7)
408#define RCP14_ETMPIDR5() MRC14(1, c7, c5, 7)
409#define RCP14_ETMPIDR6() MRC14(1, c7, c6, 7)
410#define RCP14_ETMPIDR7() MRC14(1, c7, c7, 7)
411#define RCP14_ETMPIDR0() MRC14(1, c7, c8, 7)
412#define RCP14_ETMPIDR1() MRC14(1, c7, c9, 7)
413#define RCP14_ETMPIDR2() MRC14(1, c7, c10, 7)
414#define RCP14_ETMPIDR3() MRC14(1, c7, c11, 7)
415#define RCP14_ETMCIDR0() MRC14(1, c7, c12, 7)
416#define RCP14_ETMCIDR1() MRC14(1, c7, c13, 7)
417#define RCP14_ETMCIDR2() MRC14(1, c7, c14, 7)
418#define RCP14_ETMCIDR3() MRC14(1, c7, c15, 7)
419
420#define WCP14_ETMCR(val) MCR14(val, 1, c0, c0, 0)
421#define WCP14_ETMTRIGGER(val) MCR14(val, 1, c0, c2, 0)
422#define WCP14_ETMASICCR(val) MCR14(val, 1, c0, c3, 0)
423#define WCP14_ETMSR(val) MCR14(val, 1, c0, c4, 0)
424#define WCP14_ETMTSSCR(val) MCR14(val, 1, c0, c6, 0)
425#define WCP14_ETMTECR2(val) MCR14(val, 1, c0, c7, 0)
426#define WCP14_ETMTEEVR(val) MCR14(val, 1, c0, c8, 0)
427#define WCP14_ETMTECR1(val) MCR14(val, 1, c0, c9, 0)
428#define WCP14_ETMFFRR(val) MCR14(val, 1, c0, c10, 0)
429#define WCP14_ETMFFLR(val) MCR14(val, 1, c0, c11, 0)
430#define WCP14_ETMVDEVR(val) MCR14(val, 1, c0, c12, 0)
431#define WCP14_ETMVDCR1(val) MCR14(val, 1, c0, c13, 0)
432#define WCP14_ETMVDCR2(val) MCR14(val, 1, c0, c14, 0)
433#define WCP14_ETMVDCR3(val) MCR14(val, 1, c0, c15, 0)
434#define WCP14_ETMACVR0(val) MCR14(val, 1, c0, c0, 1)
435#define WCP14_ETMACVR1(val) MCR14(val, 1, c0, c1, 1)
436#define WCP14_ETMACVR2(val) MCR14(val, 1, c0, c2, 1)
437#define WCP14_ETMACVR3(val) MCR14(val, 1, c0, c3, 1)
438#define WCP14_ETMACVR4(val) MCR14(val, 1, c0, c4, 1)
439#define WCP14_ETMACVR5(val) MCR14(val, 1, c0, c5, 1)
440#define WCP14_ETMACVR6(val) MCR14(val, 1, c0, c6, 1)
441#define WCP14_ETMACVR7(val) MCR14(val, 1, c0, c7, 1)
442#define WCP14_ETMACVR8(val) MCR14(val, 1, c0, c8, 1)
443#define WCP14_ETMACVR9(val) MCR14(val, 1, c0, c9, 1)
444#define WCP14_ETMACVR10(val) MCR14(val, 1, c0, c10, 1)
445#define WCP14_ETMACVR11(val) MCR14(val, 1, c0, c11, 1)
446#define WCP14_ETMACVR12(val) MCR14(val, 1, c0, c12, 1)
447#define WCP14_ETMACVR13(val) MCR14(val, 1, c0, c13, 1)
448#define WCP14_ETMACVR14(val) MCR14(val, 1, c0, c14, 1)
449#define WCP14_ETMACVR15(val) MCR14(val, 1, c0, c15, 1)
450#define WCP14_ETMACTR0(val) MCR14(val, 1, c0, c0, 2)
451#define WCP14_ETMACTR1(val) MCR14(val, 1, c0, c1, 2)
452#define WCP14_ETMACTR2(val) MCR14(val, 1, c0, c2, 2)
453#define WCP14_ETMACTR3(val) MCR14(val, 1, c0, c3, 2)
454#define WCP14_ETMACTR4(val) MCR14(val, 1, c0, c4, 2)
455#define WCP14_ETMACTR5(val) MCR14(val, 1, c0, c5, 2)
456#define WCP14_ETMACTR6(val) MCR14(val, 1, c0, c6, 2)
457#define WCP14_ETMACTR7(val) MCR14(val, 1, c0, c7, 2)
458#define WCP14_ETMACTR8(val) MCR14(val, 1, c0, c8, 2)
459#define WCP14_ETMACTR9(val) MCR14(val, 1, c0, c9, 2)
460#define WCP14_ETMACTR10(val) MCR14(val, 1, c0, c10, 2)
461#define WCP14_ETMACTR11(val) MCR14(val, 1, c0, c11, 2)
462#define WCP14_ETMACTR12(val) MCR14(val, 1, c0, c12, 2)
463#define WCP14_ETMACTR13(val) MCR14(val, 1, c0, c13, 2)
464#define WCP14_ETMACTR14(val) MCR14(val, 1, c0, c14, 2)
465#define WCP14_ETMACTR15(val) MCR14(val, 1, c0, c15, 2)
466#define WCP14_ETMDCVR0(val) MCR14(val, 1, c0, c0, 3)
467#define WCP14_ETMDCVR2(val) MCR14(val, 1, c0, c2, 3)
468#define WCP14_ETMDCVR4(val) MCR14(val, 1, c0, c4, 3)
469#define WCP14_ETMDCVR6(val) MCR14(val, 1, c0, c6, 3)
470#define WCP14_ETMDCVR8(val) MCR14(val, 1, c0, c8, 3)
471#define WCP14_ETMDCVR10(val) MCR14(val, 1, c0, c10, 3)
472#define WCP14_ETMDCVR12(val) MCR14(val, 1, c0, c12, 3)
473#define WCP14_ETMDCVR14(val) MCR14(val, 1, c0, c14, 3)
474#define WCP14_ETMDCMR0(val) MCR14(val, 1, c0, c0, 4)
475#define WCP14_ETMDCMR2(val) MCR14(val, 1, c0, c2, 4)
476#define WCP14_ETMDCMR4(val) MCR14(val, 1, c0, c4, 4)
477#define WCP14_ETMDCMR6(val) MCR14(val, 1, c0, c6, 4)
478#define WCP14_ETMDCMR8(val) MCR14(val, 1, c0, c8, 4)
479#define WCP14_ETMDCMR10(val) MCR14(val, 1, c0, c10, 4)
480#define WCP14_ETMDCMR12(val) MCR14(val, 1, c0, c12, 4)
481#define WCP14_ETMDCMR14(val) MCR14(val, 1, c0, c14, 4)
482#define WCP14_ETMCNTRLDVR0(val) MCR14(val, 1, c0, c0, 5)
483#define WCP14_ETMCNTRLDVR1(val) MCR14(val, 1, c0, c1, 5)
484#define WCP14_ETMCNTRLDVR2(val) MCR14(val, 1, c0, c2, 5)
485#define WCP14_ETMCNTRLDVR3(val) MCR14(val, 1, c0, c3, 5)
486#define WCP14_ETMCNTENR0(val) MCR14(val, 1, c0, c4, 5)
487#define WCP14_ETMCNTENR1(val) MCR14(val, 1, c0, c5, 5)
488#define WCP14_ETMCNTENR2(val) MCR14(val, 1, c0, c6, 5)
489#define WCP14_ETMCNTENR3(val) MCR14(val, 1, c0, c7, 5)
490#define WCP14_ETMCNTRLDEVR0(val) MCR14(val, 1, c0, c8, 5)
491#define WCP14_ETMCNTRLDEVR1(val) MCR14(val, 1, c0, c9, 5)
492#define WCP14_ETMCNTRLDEVR2(val) MCR14(val, 1, c0, c10, 5)
493#define WCP14_ETMCNTRLDEVR3(val) MCR14(val, 1, c0, c11, 5)
494#define WCP14_ETMCNTVR0(val) MCR14(val, 1, c0, c12, 5)
495#define WCP14_ETMCNTVR1(val) MCR14(val, 1, c0, c13, 5)
496#define WCP14_ETMCNTVR2(val) MCR14(val, 1, c0, c14, 5)
497#define WCP14_ETMCNTVR3(val) MCR14(val, 1, c0, c15, 5)
498#define WCP14_ETMSQ12EVR(val) MCR14(val, 1, c0, c0, 6)
499#define WCP14_ETMSQ21EVR(val) MCR14(val, 1, c0, c1, 6)
500#define WCP14_ETMSQ23EVR(val) MCR14(val, 1, c0, c2, 6)
501#define WCP14_ETMSQ31EVR(val) MCR14(val, 1, c0, c3, 6)
502#define WCP14_ETMSQ32EVR(val) MCR14(val, 1, c0, c4, 6)
503#define WCP14_ETMSQ13EVR(val) MCR14(val, 1, c0, c5, 6)
504#define WCP14_ETMSQR(val) MCR14(val, 1, c0, c7, 6)
505#define WCP14_ETMEXTOUTEVR0(val) MCR14(val, 1, c0, c8, 6)
506#define WCP14_ETMEXTOUTEVR1(val) MCR14(val, 1, c0, c9, 6)
507#define WCP14_ETMEXTOUTEVR2(val) MCR14(val, 1, c0, c10, 6)
508#define WCP14_ETMEXTOUTEVR3(val) MCR14(val, 1, c0, c11, 6)
509#define WCP14_ETMCIDCVR0(val) MCR14(val, 1, c0, c12, 6)
510#define WCP14_ETMCIDCVR1(val) MCR14(val, 1, c0, c13, 6)
511#define WCP14_ETMCIDCVR2(val) MCR14(val, 1, c0, c14, 6)
512#define WCP14_ETMCIDCMR(val) MCR14(val, 1, c0, c15, 6)
513#define WCP14_ETMIMPSPEC0(val) MCR14(val, 1, c0, c0, 7)
514#define WCP14_ETMIMPSPEC1(val) MCR14(val, 1, c0, c1, 7)
515#define WCP14_ETMIMPSPEC2(val) MCR14(val, 1, c0, c2, 7)
516#define WCP14_ETMIMPSPEC3(val) MCR14(val, 1, c0, c3, 7)
517#define WCP14_ETMIMPSPEC4(val) MCR14(val, 1, c0, c4, 7)
518#define WCP14_ETMIMPSPEC5(val) MCR14(val, 1, c0, c5, 7)
519#define WCP14_ETMIMPSPEC6(val) MCR14(val, 1, c0, c6, 7)
520#define WCP14_ETMIMPSPEC7(val) MCR14(val, 1, c0, c7, 7)
521/* Can be read only in ETMv3.4, ETMv3.5 */
522#define WCP14_ETMSYNCFR(val) MCR14(val, 1, c0, c8, 7)
523#define WCP14_ETMEXTINSELR(val) MCR14(val, 1, c0, c11, 7)
524#define WCP14_ETMTESSEICR(val) MCR14(val, 1, c0, c12, 7)
525#define WCP14_ETMEIBCR(val) MCR14(val, 1, c0, c13, 7)
526#define WCP14_ETMTSEVR(val) MCR14(val, 1, c0, c14, 7)
527#define WCP14_ETMAUXCR(val) MCR14(val, 1, c0, c15, 7)
528#define WCP14_ETMTRACEIDR(val) MCR14(val, 1, c1, c0, 0)
529#define WCP14_ETMIDR2(val) MCR14(val, 1, c1, c2, 0)
530#define WCP14_ETMVMIDCVR(val) MCR14(val, 1, c1, c0, 1)
531#define WCP14_ETMOSLAR(val) MCR14(val, 1, c1, c0, 4)
532/* Not available in PFTv1.1 */
533#define WCP14_ETMOSSRR(val) MCR14(val, 1, c1, c2, 4)
534#define WCP14_ETMPDCR(val) MCR14(val, 1, c1, c4, 4)
535#define WCP14_ETMPDSR(val) MCR14(val, 1, c1, c5, 4)
536#define WCP14_ETMITCTRL(val) MCR14(val, 1, c7, c0, 4)
537#define WCP14_ETMCLAIMSET(val) MCR14(val, 1, c7, c8, 6)
538#define WCP14_ETMCLAIMCLR(val) MCR14(val, 1, c7, c9, 6)
539/* Writes to this from CP14 interface are ignored */
540#define WCP14_ETMLAR(val) MCR14(val, 1, c7, c12, 6)
541
542#endif