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