Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
0003  */
0004 
0005 #ifndef __ASM_HARDWARE_CP14_H
0006 #define __ASM_HARDWARE_CP14_H
0007 
0008 #include <linux/types.h>
0009 
0010 /* Accessors for CP14 registers */
0011 #define dbg_read(reg)           RCP14_##reg()
0012 #define dbg_write(val, reg)     WCP14_##reg(val)
0013 #define etm_read(reg)           RCP14_##reg()
0014 #define etm_write(val, reg)     WCP14_##reg(val)
0015 
0016 /* MRC14 and MCR14 */
0017 #define MRC14(op1, crn, crm, op2)                   \
0018 ({                                  \
0019 u32 val;                                \
0020 asm volatile("mrc p14, "#op1", %0, "#crn", "#crm", "#op2 : "=r" (val)); \
0021 val;                                    \
0022 })
0023 
0024 #define MCR14(val, op1, crn, crm, op2)                  \
0025 ({                                  \
0026 asm volatile("mcr p14, "#op1", %0, "#crn", "#crm", "#op2 : : "r" (val));\
0027 })
0028 
0029 /*
0030  * Debug Registers
0031  *
0032  * Available only in DBGv7
0033  * DBGECR, DBGDSCCR, DBGDSMCR, DBGDRCR
0034  *
0035  * Available only in DBGv7.1
0036  * DBGBXVRm, DBGOSDLR, DBGDEVID2, DBGDEVID1
0037  *
0038  * Read only
0039  * DBGDIDR, DBGDSCRint, DBGDTRRXint, DBGDRAR, DBGOSLSR, DBGOSSRR, DBGPRSR,
0040  * DBGPRSR, DBGDSAR, DBGAUTHSTATUS, DBGDEVID2, DBGDEVID1, DBGDEVID
0041  *
0042  * Write only
0043  * DBGDTRTXint, DBGOSLAR
0044  */
0045 #define RCP14_DBGDIDR()         MRC14(0, c0, c0, 0)
0046 #define RCP14_DBGDSCRint()      MRC14(0, c0, c1, 0)
0047 #define RCP14_DBGDTRRXint()     MRC14(0, c0, c5, 0)
0048 #define RCP14_DBGWFAR()         MRC14(0, c0, c6, 0)
0049 #define RCP14_DBGVCR()          MRC14(0, c0, c7, 0)
0050 #define RCP14_DBGECR()          MRC14(0, c0, c9, 0)
0051 #define RCP14_DBGDSCCR()        MRC14(0, c0, c10, 0)
0052 #define RCP14_DBGDSMCR()        MRC14(0, c0, c11, 0)
0053 #define RCP14_DBGDTRRXext()     MRC14(0, c0, c0, 2)
0054 #define RCP14_DBGDSCRext()      MRC14(0, c0, c2, 2)
0055 #define RCP14_DBGDTRTXext()     MRC14(0, c0, c3, 2)
0056 #define RCP14_DBGDRCR()         MRC14(0, c0, c4, 2)
0057 #define RCP14_DBGBVR0()         MRC14(0, c0, c0, 4)
0058 #define RCP14_DBGBVR1()         MRC14(0, c0, c1, 4)
0059 #define RCP14_DBGBVR2()         MRC14(0, c0, c2, 4)
0060 #define RCP14_DBGBVR3()         MRC14(0, c0, c3, 4)
0061 #define RCP14_DBGBVR4()         MRC14(0, c0, c4, 4)
0062 #define RCP14_DBGBVR5()         MRC14(0, c0, c5, 4)
0063 #define RCP14_DBGBVR6()         MRC14(0, c0, c6, 4)
0064 #define RCP14_DBGBVR7()         MRC14(0, c0, c7, 4)
0065 #define RCP14_DBGBVR8()         MRC14(0, c0, c8, 4)
0066 #define RCP14_DBGBVR9()         MRC14(0, c0, c9, 4)
0067 #define RCP14_DBGBVR10()        MRC14(0, c0, c10, 4)
0068 #define RCP14_DBGBVR11()        MRC14(0, c0, c11, 4)
0069 #define RCP14_DBGBVR12()        MRC14(0, c0, c12, 4)
0070 #define RCP14_DBGBVR13()        MRC14(0, c0, c13, 4)
0071 #define RCP14_DBGBVR14()        MRC14(0, c0, c14, 4)
0072 #define RCP14_DBGBVR15()        MRC14(0, c0, c15, 4)
0073 #define RCP14_DBGBCR0()         MRC14(0, c0, c0, 5)
0074 #define RCP14_DBGBCR1()         MRC14(0, c0, c1, 5)
0075 #define RCP14_DBGBCR2()         MRC14(0, c0, c2, 5)
0076 #define RCP14_DBGBCR3()         MRC14(0, c0, c3, 5)
0077 #define RCP14_DBGBCR4()         MRC14(0, c0, c4, 5)
0078 #define RCP14_DBGBCR5()         MRC14(0, c0, c5, 5)
0079 #define RCP14_DBGBCR6()         MRC14(0, c0, c6, 5)
0080 #define RCP14_DBGBCR7()         MRC14(0, c0, c7, 5)
0081 #define RCP14_DBGBCR8()         MRC14(0, c0, c8, 5)
0082 #define RCP14_DBGBCR9()         MRC14(0, c0, c9, 5)
0083 #define RCP14_DBGBCR10()        MRC14(0, c0, c10, 5)
0084 #define RCP14_DBGBCR11()        MRC14(0, c0, c11, 5)
0085 #define RCP14_DBGBCR12()        MRC14(0, c0, c12, 5)
0086 #define RCP14_DBGBCR13()        MRC14(0, c0, c13, 5)
0087 #define RCP14_DBGBCR14()        MRC14(0, c0, c14, 5)
0088 #define RCP14_DBGBCR15()        MRC14(0, c0, c15, 5)
0089 #define RCP14_DBGWVR0()         MRC14(0, c0, c0, 6)
0090 #define RCP14_DBGWVR1()         MRC14(0, c0, c1, 6)
0091 #define RCP14_DBGWVR2()         MRC14(0, c0, c2, 6)
0092 #define RCP14_DBGWVR3()         MRC14(0, c0, c3, 6)
0093 #define RCP14_DBGWVR4()         MRC14(0, c0, c4, 6)
0094 #define RCP14_DBGWVR5()         MRC14(0, c0, c5, 6)
0095 #define RCP14_DBGWVR6()         MRC14(0, c0, c6, 6)
0096 #define RCP14_DBGWVR7()         MRC14(0, c0, c7, 6)
0097 #define RCP14_DBGWVR8()         MRC14(0, c0, c8, 6)
0098 #define RCP14_DBGWVR9()         MRC14(0, c0, c9, 6)
0099 #define RCP14_DBGWVR10()        MRC14(0, c0, c10, 6)
0100 #define RCP14_DBGWVR11()        MRC14(0, c0, c11, 6)
0101 #define RCP14_DBGWVR12()        MRC14(0, c0, c12, 6)
0102 #define RCP14_DBGWVR13()        MRC14(0, c0, c13, 6)
0103 #define RCP14_DBGWVR14()        MRC14(0, c0, c14, 6)
0104 #define RCP14_DBGWVR15()        MRC14(0, c0, c15, 6)
0105 #define RCP14_DBGWCR0()         MRC14(0, c0, c0, 7)
0106 #define RCP14_DBGWCR1()         MRC14(0, c0, c1, 7)
0107 #define RCP14_DBGWCR2()         MRC14(0, c0, c2, 7)
0108 #define RCP14_DBGWCR3()         MRC14(0, c0, c3, 7)
0109 #define RCP14_DBGWCR4()         MRC14(0, c0, c4, 7)
0110 #define RCP14_DBGWCR5()         MRC14(0, c0, c5, 7)
0111 #define RCP14_DBGWCR6()         MRC14(0, c0, c6, 7)
0112 #define RCP14_DBGWCR7()         MRC14(0, c0, c7, 7)
0113 #define RCP14_DBGWCR8()         MRC14(0, c0, c8, 7)
0114 #define RCP14_DBGWCR9()         MRC14(0, c0, c9, 7)
0115 #define RCP14_DBGWCR10()        MRC14(0, c0, c10, 7)
0116 #define RCP14_DBGWCR11()        MRC14(0, c0, c11, 7)
0117 #define RCP14_DBGWCR12()        MRC14(0, c0, c12, 7)
0118 #define RCP14_DBGWCR13()        MRC14(0, c0, c13, 7)
0119 #define RCP14_DBGWCR14()        MRC14(0, c0, c14, 7)
0120 #define RCP14_DBGWCR15()        MRC14(0, c0, c15, 7)
0121 #define RCP14_DBGDRAR()         MRC14(0, c1, c0, 0)
0122 #define RCP14_DBGBXVR0()        MRC14(0, c1, c0, 1)
0123 #define RCP14_DBGBXVR1()        MRC14(0, c1, c1, 1)
0124 #define RCP14_DBGBXVR2()        MRC14(0, c1, c2, 1)
0125 #define RCP14_DBGBXVR3()        MRC14(0, c1, c3, 1)
0126 #define RCP14_DBGBXVR4()        MRC14(0, c1, c4, 1)
0127 #define RCP14_DBGBXVR5()        MRC14(0, c1, c5, 1)
0128 #define RCP14_DBGBXVR6()        MRC14(0, c1, c6, 1)
0129 #define RCP14_DBGBXVR7()        MRC14(0, c1, c7, 1)
0130 #define RCP14_DBGBXVR8()        MRC14(0, c1, c8, 1)
0131 #define RCP14_DBGBXVR9()        MRC14(0, c1, c9, 1)
0132 #define RCP14_DBGBXVR10()       MRC14(0, c1, c10, 1)
0133 #define RCP14_DBGBXVR11()       MRC14(0, c1, c11, 1)
0134 #define RCP14_DBGBXVR12()       MRC14(0, c1, c12, 1)
0135 #define RCP14_DBGBXVR13()       MRC14(0, c1, c13, 1)
0136 #define RCP14_DBGBXVR14()       MRC14(0, c1, c14, 1)
0137 #define RCP14_DBGBXVR15()       MRC14(0, c1, c15, 1)
0138 #define RCP14_DBGOSLSR()        MRC14(0, c1, c1, 4)
0139 #define RCP14_DBGOSSRR()        MRC14(0, c1, c2, 4)
0140 #define RCP14_DBGOSDLR()        MRC14(0, c1, c3, 4)
0141 #define RCP14_DBGPRCR()         MRC14(0, c1, c4, 4)
0142 #define RCP14_DBGPRSR()         MRC14(0, c1, c5, 4)
0143 #define RCP14_DBGDSAR()         MRC14(0, c2, c0, 0)
0144 #define RCP14_DBGITCTRL()       MRC14(0, c7, c0, 4)
0145 #define RCP14_DBGCLAIMSET()     MRC14(0, c7, c8, 6)
0146 #define RCP14_DBGCLAIMCLR()     MRC14(0, c7, c9, 6)
0147 #define RCP14_DBGAUTHSTATUS()       MRC14(0, c7, c14, 6)
0148 #define RCP14_DBGDEVID2()       MRC14(0, c7, c0, 7)
0149 #define RCP14_DBGDEVID1()       MRC14(0, c7, c1, 7)
0150 #define RCP14_DBGDEVID()        MRC14(0, c7, c2, 7)
0151 
0152 #define WCP14_DBGDTRTXint(val)      MCR14(val, 0, c0, c5, 0)
0153 #define WCP14_DBGWFAR(val)      MCR14(val, 0, c0, c6, 0)
0154 #define WCP14_DBGVCR(val)       MCR14(val, 0, c0, c7, 0)
0155 #define WCP14_DBGECR(val)       MCR14(val, 0, c0, c9, 0)
0156 #define WCP14_DBGDSCCR(val)     MCR14(val, 0, c0, c10, 0)
0157 #define WCP14_DBGDSMCR(val)     MCR14(val, 0, c0, c11, 0)
0158 #define WCP14_DBGDTRRXext(val)      MCR14(val, 0, c0, c0, 2)
0159 #define WCP14_DBGDSCRext(val)       MCR14(val, 0, c0, c2, 2)
0160 #define WCP14_DBGDTRTXext(val)      MCR14(val, 0, c0, c3, 2)
0161 #define WCP14_DBGDRCR(val)      MCR14(val, 0, c0, c4, 2)
0162 #define WCP14_DBGBVR0(val)      MCR14(val, 0, c0, c0, 4)
0163 #define WCP14_DBGBVR1(val)      MCR14(val, 0, c0, c1, 4)
0164 #define WCP14_DBGBVR2(val)      MCR14(val, 0, c0, c2, 4)
0165 #define WCP14_DBGBVR3(val)      MCR14(val, 0, c0, c3, 4)
0166 #define WCP14_DBGBVR4(val)      MCR14(val, 0, c0, c4, 4)
0167 #define WCP14_DBGBVR5(val)      MCR14(val, 0, c0, c5, 4)
0168 #define WCP14_DBGBVR6(val)      MCR14(val, 0, c0, c6, 4)
0169 #define WCP14_DBGBVR7(val)      MCR14(val, 0, c0, c7, 4)
0170 #define WCP14_DBGBVR8(val)      MCR14(val, 0, c0, c8, 4)
0171 #define WCP14_DBGBVR9(val)      MCR14(val, 0, c0, c9, 4)
0172 #define WCP14_DBGBVR10(val)     MCR14(val, 0, c0, c10, 4)
0173 #define WCP14_DBGBVR11(val)     MCR14(val, 0, c0, c11, 4)
0174 #define WCP14_DBGBVR12(val)     MCR14(val, 0, c0, c12, 4)
0175 #define WCP14_DBGBVR13(val)     MCR14(val, 0, c0, c13, 4)
0176 #define WCP14_DBGBVR14(val)     MCR14(val, 0, c0, c14, 4)
0177 #define WCP14_DBGBVR15(val)     MCR14(val, 0, c0, c15, 4)
0178 #define WCP14_DBGBCR0(val)      MCR14(val, 0, c0, c0, 5)
0179 #define WCP14_DBGBCR1(val)      MCR14(val, 0, c0, c1, 5)
0180 #define WCP14_DBGBCR2(val)      MCR14(val, 0, c0, c2, 5)
0181 #define WCP14_DBGBCR3(val)      MCR14(val, 0, c0, c3, 5)
0182 #define WCP14_DBGBCR4(val)      MCR14(val, 0, c0, c4, 5)
0183 #define WCP14_DBGBCR5(val)      MCR14(val, 0, c0, c5, 5)
0184 #define WCP14_DBGBCR6(val)      MCR14(val, 0, c0, c6, 5)
0185 #define WCP14_DBGBCR7(val)      MCR14(val, 0, c0, c7, 5)
0186 #define WCP14_DBGBCR8(val)      MCR14(val, 0, c0, c8, 5)
0187 #define WCP14_DBGBCR9(val)      MCR14(val, 0, c0, c9, 5)
0188 #define WCP14_DBGBCR10(val)     MCR14(val, 0, c0, c10, 5)
0189 #define WCP14_DBGBCR11(val)     MCR14(val, 0, c0, c11, 5)
0190 #define WCP14_DBGBCR12(val)     MCR14(val, 0, c0, c12, 5)
0191 #define WCP14_DBGBCR13(val)     MCR14(val, 0, c0, c13, 5)
0192 #define WCP14_DBGBCR14(val)     MCR14(val, 0, c0, c14, 5)
0193 #define WCP14_DBGBCR15(val)     MCR14(val, 0, c0, c15, 5)
0194 #define WCP14_DBGWVR0(val)      MCR14(val, 0, c0, c0, 6)
0195 #define WCP14_DBGWVR1(val)      MCR14(val, 0, c0, c1, 6)
0196 #define WCP14_DBGWVR2(val)      MCR14(val, 0, c0, c2, 6)
0197 #define WCP14_DBGWVR3(val)      MCR14(val, 0, c0, c3, 6)
0198 #define WCP14_DBGWVR4(val)      MCR14(val, 0, c0, c4, 6)
0199 #define WCP14_DBGWVR5(val)      MCR14(val, 0, c0, c5, 6)
0200 #define WCP14_DBGWVR6(val)      MCR14(val, 0, c0, c6, 6)
0201 #define WCP14_DBGWVR7(val)      MCR14(val, 0, c0, c7, 6)
0202 #define WCP14_DBGWVR8(val)      MCR14(val, 0, c0, c8, 6)
0203 #define WCP14_DBGWVR9(val)      MCR14(val, 0, c0, c9, 6)
0204 #define WCP14_DBGWVR10(val)     MCR14(val, 0, c0, c10, 6)
0205 #define WCP14_DBGWVR11(val)     MCR14(val, 0, c0, c11, 6)
0206 #define WCP14_DBGWVR12(val)     MCR14(val, 0, c0, c12, 6)
0207 #define WCP14_DBGWVR13(val)     MCR14(val, 0, c0, c13, 6)
0208 #define WCP14_DBGWVR14(val)     MCR14(val, 0, c0, c14, 6)
0209 #define WCP14_DBGWVR15(val)     MCR14(val, 0, c0, c15, 6)
0210 #define WCP14_DBGWCR0(val)      MCR14(val, 0, c0, c0, 7)
0211 #define WCP14_DBGWCR1(val)      MCR14(val, 0, c0, c1, 7)
0212 #define WCP14_DBGWCR2(val)      MCR14(val, 0, c0, c2, 7)
0213 #define WCP14_DBGWCR3(val)      MCR14(val, 0, c0, c3, 7)
0214 #define WCP14_DBGWCR4(val)      MCR14(val, 0, c0, c4, 7)
0215 #define WCP14_DBGWCR5(val)      MCR14(val, 0, c0, c5, 7)
0216 #define WCP14_DBGWCR6(val)      MCR14(val, 0, c0, c6, 7)
0217 #define WCP14_DBGWCR7(val)      MCR14(val, 0, c0, c7, 7)
0218 #define WCP14_DBGWCR8(val)      MCR14(val, 0, c0, c8, 7)
0219 #define WCP14_DBGWCR9(val)      MCR14(val, 0, c0, c9, 7)
0220 #define WCP14_DBGWCR10(val)     MCR14(val, 0, c0, c10, 7)
0221 #define WCP14_DBGWCR11(val)     MCR14(val, 0, c0, c11, 7)
0222 #define WCP14_DBGWCR12(val)     MCR14(val, 0, c0, c12, 7)
0223 #define WCP14_DBGWCR13(val)     MCR14(val, 0, c0, c13, 7)
0224 #define WCP14_DBGWCR14(val)     MCR14(val, 0, c0, c14, 7)
0225 #define WCP14_DBGWCR15(val)     MCR14(val, 0, c0, c15, 7)
0226 #define WCP14_DBGBXVR0(val)     MCR14(val, 0, c1, c0, 1)
0227 #define WCP14_DBGBXVR1(val)     MCR14(val, 0, c1, c1, 1)
0228 #define WCP14_DBGBXVR2(val)     MCR14(val, 0, c1, c2, 1)
0229 #define WCP14_DBGBXVR3(val)     MCR14(val, 0, c1, c3, 1)
0230 #define WCP14_DBGBXVR4(val)     MCR14(val, 0, c1, c4, 1)
0231 #define WCP14_DBGBXVR5(val)     MCR14(val, 0, c1, c5, 1)
0232 #define WCP14_DBGBXVR6(val)     MCR14(val, 0, c1, c6, 1)
0233 #define WCP14_DBGBXVR7(val)     MCR14(val, 0, c1, c7, 1)
0234 #define WCP14_DBGBXVR8(val)     MCR14(val, 0, c1, c8, 1)
0235 #define WCP14_DBGBXVR9(val)     MCR14(val, 0, c1, c9, 1)
0236 #define WCP14_DBGBXVR10(val)        MCR14(val, 0, c1, c10, 1)
0237 #define WCP14_DBGBXVR11(val)        MCR14(val, 0, c1, c11, 1)
0238 #define WCP14_DBGBXVR12(val)        MCR14(val, 0, c1, c12, 1)
0239 #define WCP14_DBGBXVR13(val)        MCR14(val, 0, c1, c13, 1)
0240 #define WCP14_DBGBXVR14(val)        MCR14(val, 0, c1, c14, 1)
0241 #define WCP14_DBGBXVR15(val)        MCR14(val, 0, c1, c15, 1)
0242 #define WCP14_DBGOSLAR(val)     MCR14(val, 0, c1, c0, 4)
0243 #define WCP14_DBGOSSRR(val)     MCR14(val, 0, c1, c2, 4)
0244 #define WCP14_DBGOSDLR(val)     MCR14(val, 0, c1, c3, 4)
0245 #define WCP14_DBGPRCR(val)      MCR14(val, 0, c1, c4, 4)
0246 #define WCP14_DBGITCTRL(val)        MCR14(val, 0, c7, c0, 4)
0247 #define WCP14_DBGCLAIMSET(val)      MCR14(val, 0, c7, c8, 6)
0248 #define WCP14_DBGCLAIMCLR(val)      MCR14(val, 0, c7, c9, 6)
0249 
0250 /*
0251  * ETM Registers
0252  *
0253  * Available only in ETMv3.3, 3.4, 3.5
0254  * ETMASICCR, ETMTECR2, ETMFFRR, ETMVDEVR, ETMVDCR1, ETMVDCR2, ETMVDCR3,
0255  * ETMDCVRn, ETMDCMRn
0256  *
0257  * Available only in ETMv3.5 as read only
0258  * ETMIDR2
0259  *
0260  * Available only in ETMv3.5, PFTv1.0, 1.1
0261  * ETMTSEVR, ETMVMIDCVR, ETMPDCR
0262  *
0263  * Read only
0264  * ETMCCR, ETMSCR, ETMIDR, ETMCCER, ETMOSLSR
0265  * ETMLSR, ETMAUTHSTATUS, ETMDEVID, ETMDEVTYPE, ETMPIDR4, ETMPIDR5, ETMPIDR6,
0266  * ETMPIDR7, ETMPIDR0, ETMPIDR1, ETMPIDR2, ETMPIDR2, ETMPIDR3, ETMCIDR0,
0267  * ETMCIDR1, ETMCIDR2, ETMCIDR3
0268  *
0269  * Write only
0270  * ETMOSLAR, ETMLAR
0271  * Note: ETMCCER[11] controls WO nature of certain regs. Refer ETM arch spec.
0272  */
0273 #define RCP14_ETMCR()           MRC14(1, c0, c0, 0)
0274 #define RCP14_ETMCCR()          MRC14(1, c0, c1, 0)
0275 #define RCP14_ETMTRIGGER()      MRC14(1, c0, c2, 0)
0276 #define RCP14_ETMASICCR()       MRC14(1, c0, c3, 0)
0277 #define RCP14_ETMSR()           MRC14(1, c0, c4, 0)
0278 #define RCP14_ETMSCR()          MRC14(1, c0, c5, 0)
0279 #define RCP14_ETMTSSCR()        MRC14(1, c0, c6, 0)
0280 #define RCP14_ETMTECR2()        MRC14(1, c0, c7, 0)
0281 #define RCP14_ETMTEEVR()        MRC14(1, c0, c8, 0)
0282 #define RCP14_ETMTECR1()        MRC14(1, c0, c9, 0)
0283 #define RCP14_ETMFFRR()         MRC14(1, c0, c10, 0)
0284 #define RCP14_ETMFFLR()         MRC14(1, c0, c11, 0)
0285 #define RCP14_ETMVDEVR()        MRC14(1, c0, c12, 0)
0286 #define RCP14_ETMVDCR1()        MRC14(1, c0, c13, 0)
0287 #define RCP14_ETMVDCR2()        MRC14(1, c0, c14, 0)
0288 #define RCP14_ETMVDCR3()        MRC14(1, c0, c15, 0)
0289 #define RCP14_ETMACVR0()        MRC14(1, c0, c0, 1)
0290 #define RCP14_ETMACVR1()        MRC14(1, c0, c1, 1)
0291 #define RCP14_ETMACVR2()        MRC14(1, c0, c2, 1)
0292 #define RCP14_ETMACVR3()        MRC14(1, c0, c3, 1)
0293 #define RCP14_ETMACVR4()        MRC14(1, c0, c4, 1)
0294 #define RCP14_ETMACVR5()        MRC14(1, c0, c5, 1)
0295 #define RCP14_ETMACVR6()        MRC14(1, c0, c6, 1)
0296 #define RCP14_ETMACVR7()        MRC14(1, c0, c7, 1)
0297 #define RCP14_ETMACVR8()        MRC14(1, c0, c8, 1)
0298 #define RCP14_ETMACVR9()        MRC14(1, c0, c9, 1)
0299 #define RCP14_ETMACVR10()       MRC14(1, c0, c10, 1)
0300 #define RCP14_ETMACVR11()       MRC14(1, c0, c11, 1)
0301 #define RCP14_ETMACVR12()       MRC14(1, c0, c12, 1)
0302 #define RCP14_ETMACVR13()       MRC14(1, c0, c13, 1)
0303 #define RCP14_ETMACVR14()       MRC14(1, c0, c14, 1)
0304 #define RCP14_ETMACVR15()       MRC14(1, c0, c15, 1)
0305 #define RCP14_ETMACTR0()        MRC14(1, c0, c0, 2)
0306 #define RCP14_ETMACTR1()        MRC14(1, c0, c1, 2)
0307 #define RCP14_ETMACTR2()        MRC14(1, c0, c2, 2)
0308 #define RCP14_ETMACTR3()        MRC14(1, c0, c3, 2)
0309 #define RCP14_ETMACTR4()        MRC14(1, c0, c4, 2)
0310 #define RCP14_ETMACTR5()        MRC14(1, c0, c5, 2)
0311 #define RCP14_ETMACTR6()        MRC14(1, c0, c6, 2)
0312 #define RCP14_ETMACTR7()        MRC14(1, c0, c7, 2)
0313 #define RCP14_ETMACTR8()        MRC14(1, c0, c8, 2)
0314 #define RCP14_ETMACTR9()        MRC14(1, c0, c9, 2)
0315 #define RCP14_ETMACTR10()       MRC14(1, c0, c10, 2)
0316 #define RCP14_ETMACTR11()       MRC14(1, c0, c11, 2)
0317 #define RCP14_ETMACTR12()       MRC14(1, c0, c12, 2)
0318 #define RCP14_ETMACTR13()       MRC14(1, c0, c13, 2)
0319 #define RCP14_ETMACTR14()       MRC14(1, c0, c14, 2)
0320 #define RCP14_ETMACTR15()       MRC14(1, c0, c15, 2)
0321 #define RCP14_ETMDCVR0()        MRC14(1, c0, c0, 3)
0322 #define RCP14_ETMDCVR2()        MRC14(1, c0, c2, 3)
0323 #define RCP14_ETMDCVR4()        MRC14(1, c0, c4, 3)
0324 #define RCP14_ETMDCVR6()        MRC14(1, c0, c6, 3)
0325 #define RCP14_ETMDCVR8()        MRC14(1, c0, c8, 3)
0326 #define RCP14_ETMDCVR10()       MRC14(1, c0, c10, 3)
0327 #define RCP14_ETMDCVR12()       MRC14(1, c0, c12, 3)
0328 #define RCP14_ETMDCVR14()       MRC14(1, c0, c14, 3)
0329 #define RCP14_ETMDCMR0()        MRC14(1, c0, c0, 4)
0330 #define RCP14_ETMDCMR2()        MRC14(1, c0, c2, 4)
0331 #define RCP14_ETMDCMR4()        MRC14(1, c0, c4, 4)
0332 #define RCP14_ETMDCMR6()        MRC14(1, c0, c6, 4)
0333 #define RCP14_ETMDCMR8()        MRC14(1, c0, c8, 4)
0334 #define RCP14_ETMDCMR10()       MRC14(1, c0, c10, 4)
0335 #define RCP14_ETMDCMR12()       MRC14(1, c0, c12, 4)
0336 #define RCP14_ETMDCMR14()       MRC14(1, c0, c14, 4)
0337 #define RCP14_ETMCNTRLDVR0()        MRC14(1, c0, c0, 5)
0338 #define RCP14_ETMCNTRLDVR1()        MRC14(1, c0, c1, 5)
0339 #define RCP14_ETMCNTRLDVR2()        MRC14(1, c0, c2, 5)
0340 #define RCP14_ETMCNTRLDVR3()        MRC14(1, c0, c3, 5)
0341 #define RCP14_ETMCNTENR0()      MRC14(1, c0, c4, 5)
0342 #define RCP14_ETMCNTENR1()      MRC14(1, c0, c5, 5)
0343 #define RCP14_ETMCNTENR2()      MRC14(1, c0, c6, 5)
0344 #define RCP14_ETMCNTENR3()      MRC14(1, c0, c7, 5)
0345 #define RCP14_ETMCNTRLDEVR0()       MRC14(1, c0, c8, 5)
0346 #define RCP14_ETMCNTRLDEVR1()       MRC14(1, c0, c9, 5)
0347 #define RCP14_ETMCNTRLDEVR2()       MRC14(1, c0, c10, 5)
0348 #define RCP14_ETMCNTRLDEVR3()       MRC14(1, c0, c11, 5)
0349 #define RCP14_ETMCNTVR0()       MRC14(1, c0, c12, 5)
0350 #define RCP14_ETMCNTVR1()       MRC14(1, c0, c13, 5)
0351 #define RCP14_ETMCNTVR2()       MRC14(1, c0, c14, 5)
0352 #define RCP14_ETMCNTVR3()       MRC14(1, c0, c15, 5)
0353 #define RCP14_ETMSQ12EVR()      MRC14(1, c0, c0, 6)
0354 #define RCP14_ETMSQ21EVR()      MRC14(1, c0, c1, 6)
0355 #define RCP14_ETMSQ23EVR()      MRC14(1, c0, c2, 6)
0356 #define RCP14_ETMSQ31EVR()      MRC14(1, c0, c3, 6)
0357 #define RCP14_ETMSQ32EVR()      MRC14(1, c0, c4, 6)
0358 #define RCP14_ETMSQ13EVR()      MRC14(1, c0, c5, 6)
0359 #define RCP14_ETMSQR()          MRC14(1, c0, c7, 6)
0360 #define RCP14_ETMEXTOUTEVR0()       MRC14(1, c0, c8, 6)
0361 #define RCP14_ETMEXTOUTEVR1()       MRC14(1, c0, c9, 6)
0362 #define RCP14_ETMEXTOUTEVR2()       MRC14(1, c0, c10, 6)
0363 #define RCP14_ETMEXTOUTEVR3()       MRC14(1, c0, c11, 6)
0364 #define RCP14_ETMCIDCVR0()      MRC14(1, c0, c12, 6)
0365 #define RCP14_ETMCIDCVR1()      MRC14(1, c0, c13, 6)
0366 #define RCP14_ETMCIDCVR2()      MRC14(1, c0, c14, 6)
0367 #define RCP14_ETMCIDCMR()       MRC14(1, c0, c15, 6)
0368 #define RCP14_ETMIMPSPEC0()     MRC14(1, c0, c0, 7)
0369 #define RCP14_ETMIMPSPEC1()     MRC14(1, c0, c1, 7)
0370 #define RCP14_ETMIMPSPEC2()     MRC14(1, c0, c2, 7)
0371 #define RCP14_ETMIMPSPEC3()     MRC14(1, c0, c3, 7)
0372 #define RCP14_ETMIMPSPEC4()     MRC14(1, c0, c4, 7)
0373 #define RCP14_ETMIMPSPEC5()     MRC14(1, c0, c5, 7)
0374 #define RCP14_ETMIMPSPEC6()     MRC14(1, c0, c6, 7)
0375 #define RCP14_ETMIMPSPEC7()     MRC14(1, c0, c7, 7)
0376 #define RCP14_ETMSYNCFR()       MRC14(1, c0, c8, 7)
0377 #define RCP14_ETMIDR()          MRC14(1, c0, c9, 7)
0378 #define RCP14_ETMCCER()         MRC14(1, c0, c10, 7)
0379 #define RCP14_ETMEXTINSELR()        MRC14(1, c0, c11, 7)
0380 #define RCP14_ETMTESSEICR()     MRC14(1, c0, c12, 7)
0381 #define RCP14_ETMEIBCR()        MRC14(1, c0, c13, 7)
0382 #define RCP14_ETMTSEVR()        MRC14(1, c0, c14, 7)
0383 #define RCP14_ETMAUXCR()        MRC14(1, c0, c15, 7)
0384 #define RCP14_ETMTRACEIDR()     MRC14(1, c1, c0, 0)
0385 #define RCP14_ETMIDR2()         MRC14(1, c1, c2, 0)
0386 #define RCP14_ETMVMIDCVR()      MRC14(1, c1, c0, 1)
0387 #define RCP14_ETMOSLSR()        MRC14(1, c1, c1, 4)
0388 /* Not available in PFTv1.1 */
0389 #define RCP14_ETMOSSRR()        MRC14(1, c1, c2, 4)
0390 #define RCP14_ETMPDCR()         MRC14(1, c1, c4, 4)
0391 #define RCP14_ETMPDSR()         MRC14(1, c1, c5, 4)
0392 #define RCP14_ETMITCTRL()       MRC14(1, c7, c0, 4)
0393 #define RCP14_ETMCLAIMSET()     MRC14(1, c7, c8, 6)
0394 #define RCP14_ETMCLAIMCLR()     MRC14(1, c7, c9, 6)
0395 #define RCP14_ETMLSR()          MRC14(1, c7, c13, 6)
0396 #define RCP14_ETMAUTHSTATUS()       MRC14(1, c7, c14, 6)
0397 #define RCP14_ETMDEVID()        MRC14(1, c7, c2, 7)
0398 #define RCP14_ETMDEVTYPE()      MRC14(1, c7, c3, 7)
0399 #define RCP14_ETMPIDR4()        MRC14(1, c7, c4, 7)
0400 #define RCP14_ETMPIDR5()        MRC14(1, c7, c5, 7)
0401 #define RCP14_ETMPIDR6()        MRC14(1, c7, c6, 7)
0402 #define RCP14_ETMPIDR7()        MRC14(1, c7, c7, 7)
0403 #define RCP14_ETMPIDR0()        MRC14(1, c7, c8, 7)
0404 #define RCP14_ETMPIDR1()        MRC14(1, c7, c9, 7)
0405 #define RCP14_ETMPIDR2()        MRC14(1, c7, c10, 7)
0406 #define RCP14_ETMPIDR3()        MRC14(1, c7, c11, 7)
0407 #define RCP14_ETMCIDR0()        MRC14(1, c7, c12, 7)
0408 #define RCP14_ETMCIDR1()        MRC14(1, c7, c13, 7)
0409 #define RCP14_ETMCIDR2()        MRC14(1, c7, c14, 7)
0410 #define RCP14_ETMCIDR3()        MRC14(1, c7, c15, 7)
0411 
0412 #define WCP14_ETMCR(val)        MCR14(val, 1, c0, c0, 0)
0413 #define WCP14_ETMTRIGGER(val)       MCR14(val, 1, c0, c2, 0)
0414 #define WCP14_ETMASICCR(val)        MCR14(val, 1, c0, c3, 0)
0415 #define WCP14_ETMSR(val)        MCR14(val, 1, c0, c4, 0)
0416 #define WCP14_ETMTSSCR(val)     MCR14(val, 1, c0, c6, 0)
0417 #define WCP14_ETMTECR2(val)     MCR14(val, 1, c0, c7, 0)
0418 #define WCP14_ETMTEEVR(val)     MCR14(val, 1, c0, c8, 0)
0419 #define WCP14_ETMTECR1(val)     MCR14(val, 1, c0, c9, 0)
0420 #define WCP14_ETMFFRR(val)      MCR14(val, 1, c0, c10, 0)
0421 #define WCP14_ETMFFLR(val)      MCR14(val, 1, c0, c11, 0)
0422 #define WCP14_ETMVDEVR(val)     MCR14(val, 1, c0, c12, 0)
0423 #define WCP14_ETMVDCR1(val)     MCR14(val, 1, c0, c13, 0)
0424 #define WCP14_ETMVDCR2(val)     MCR14(val, 1, c0, c14, 0)
0425 #define WCP14_ETMVDCR3(val)     MCR14(val, 1, c0, c15, 0)
0426 #define WCP14_ETMACVR0(val)     MCR14(val, 1, c0, c0, 1)
0427 #define WCP14_ETMACVR1(val)     MCR14(val, 1, c0, c1, 1)
0428 #define WCP14_ETMACVR2(val)     MCR14(val, 1, c0, c2, 1)
0429 #define WCP14_ETMACVR3(val)     MCR14(val, 1, c0, c3, 1)
0430 #define WCP14_ETMACVR4(val)     MCR14(val, 1, c0, c4, 1)
0431 #define WCP14_ETMACVR5(val)     MCR14(val, 1, c0, c5, 1)
0432 #define WCP14_ETMACVR6(val)     MCR14(val, 1, c0, c6, 1)
0433 #define WCP14_ETMACVR7(val)     MCR14(val, 1, c0, c7, 1)
0434 #define WCP14_ETMACVR8(val)     MCR14(val, 1, c0, c8, 1)
0435 #define WCP14_ETMACVR9(val)     MCR14(val, 1, c0, c9, 1)
0436 #define WCP14_ETMACVR10(val)        MCR14(val, 1, c0, c10, 1)
0437 #define WCP14_ETMACVR11(val)        MCR14(val, 1, c0, c11, 1)
0438 #define WCP14_ETMACVR12(val)        MCR14(val, 1, c0, c12, 1)
0439 #define WCP14_ETMACVR13(val)        MCR14(val, 1, c0, c13, 1)
0440 #define WCP14_ETMACVR14(val)        MCR14(val, 1, c0, c14, 1)
0441 #define WCP14_ETMACVR15(val)        MCR14(val, 1, c0, c15, 1)
0442 #define WCP14_ETMACTR0(val)     MCR14(val, 1, c0, c0, 2)
0443 #define WCP14_ETMACTR1(val)     MCR14(val, 1, c0, c1, 2)
0444 #define WCP14_ETMACTR2(val)     MCR14(val, 1, c0, c2, 2)
0445 #define WCP14_ETMACTR3(val)     MCR14(val, 1, c0, c3, 2)
0446 #define WCP14_ETMACTR4(val)     MCR14(val, 1, c0, c4, 2)
0447 #define WCP14_ETMACTR5(val)     MCR14(val, 1, c0, c5, 2)
0448 #define WCP14_ETMACTR6(val)     MCR14(val, 1, c0, c6, 2)
0449 #define WCP14_ETMACTR7(val)     MCR14(val, 1, c0, c7, 2)
0450 #define WCP14_ETMACTR8(val)     MCR14(val, 1, c0, c8, 2)
0451 #define WCP14_ETMACTR9(val)     MCR14(val, 1, c0, c9, 2)
0452 #define WCP14_ETMACTR10(val)        MCR14(val, 1, c0, c10, 2)
0453 #define WCP14_ETMACTR11(val)        MCR14(val, 1, c0, c11, 2)
0454 #define WCP14_ETMACTR12(val)        MCR14(val, 1, c0, c12, 2)
0455 #define WCP14_ETMACTR13(val)        MCR14(val, 1, c0, c13, 2)
0456 #define WCP14_ETMACTR14(val)        MCR14(val, 1, c0, c14, 2)
0457 #define WCP14_ETMACTR15(val)        MCR14(val, 1, c0, c15, 2)
0458 #define WCP14_ETMDCVR0(val)     MCR14(val, 1, c0, c0, 3)
0459 #define WCP14_ETMDCVR2(val)     MCR14(val, 1, c0, c2, 3)
0460 #define WCP14_ETMDCVR4(val)     MCR14(val, 1, c0, c4, 3)
0461 #define WCP14_ETMDCVR6(val)     MCR14(val, 1, c0, c6, 3)
0462 #define WCP14_ETMDCVR8(val)     MCR14(val, 1, c0, c8, 3)
0463 #define WCP14_ETMDCVR10(val)        MCR14(val, 1, c0, c10, 3)
0464 #define WCP14_ETMDCVR12(val)        MCR14(val, 1, c0, c12, 3)
0465 #define WCP14_ETMDCVR14(val)        MCR14(val, 1, c0, c14, 3)
0466 #define WCP14_ETMDCMR0(val)     MCR14(val, 1, c0, c0, 4)
0467 #define WCP14_ETMDCMR2(val)     MCR14(val, 1, c0, c2, 4)
0468 #define WCP14_ETMDCMR4(val)     MCR14(val, 1, c0, c4, 4)
0469 #define WCP14_ETMDCMR6(val)     MCR14(val, 1, c0, c6, 4)
0470 #define WCP14_ETMDCMR8(val)     MCR14(val, 1, c0, c8, 4)
0471 #define WCP14_ETMDCMR10(val)        MCR14(val, 1, c0, c10, 4)
0472 #define WCP14_ETMDCMR12(val)        MCR14(val, 1, c0, c12, 4)
0473 #define WCP14_ETMDCMR14(val)        MCR14(val, 1, c0, c14, 4)
0474 #define WCP14_ETMCNTRLDVR0(val)     MCR14(val, 1, c0, c0, 5)
0475 #define WCP14_ETMCNTRLDVR1(val)     MCR14(val, 1, c0, c1, 5)
0476 #define WCP14_ETMCNTRLDVR2(val)     MCR14(val, 1, c0, c2, 5)
0477 #define WCP14_ETMCNTRLDVR3(val)     MCR14(val, 1, c0, c3, 5)
0478 #define WCP14_ETMCNTENR0(val)       MCR14(val, 1, c0, c4, 5)
0479 #define WCP14_ETMCNTENR1(val)       MCR14(val, 1, c0, c5, 5)
0480 #define WCP14_ETMCNTENR2(val)       MCR14(val, 1, c0, c6, 5)
0481 #define WCP14_ETMCNTENR3(val)       MCR14(val, 1, c0, c7, 5)
0482 #define WCP14_ETMCNTRLDEVR0(val)    MCR14(val, 1, c0, c8, 5)
0483 #define WCP14_ETMCNTRLDEVR1(val)    MCR14(val, 1, c0, c9, 5)
0484 #define WCP14_ETMCNTRLDEVR2(val)    MCR14(val, 1, c0, c10, 5)
0485 #define WCP14_ETMCNTRLDEVR3(val)    MCR14(val, 1, c0, c11, 5)
0486 #define WCP14_ETMCNTVR0(val)        MCR14(val, 1, c0, c12, 5)
0487 #define WCP14_ETMCNTVR1(val)        MCR14(val, 1, c0, c13, 5)
0488 #define WCP14_ETMCNTVR2(val)        MCR14(val, 1, c0, c14, 5)
0489 #define WCP14_ETMCNTVR3(val)        MCR14(val, 1, c0, c15, 5)
0490 #define WCP14_ETMSQ12EVR(val)       MCR14(val, 1, c0, c0, 6)
0491 #define WCP14_ETMSQ21EVR(val)       MCR14(val, 1, c0, c1, 6)
0492 #define WCP14_ETMSQ23EVR(val)       MCR14(val, 1, c0, c2, 6)
0493 #define WCP14_ETMSQ31EVR(val)       MCR14(val, 1, c0, c3, 6)
0494 #define WCP14_ETMSQ32EVR(val)       MCR14(val, 1, c0, c4, 6)
0495 #define WCP14_ETMSQ13EVR(val)       MCR14(val, 1, c0, c5, 6)
0496 #define WCP14_ETMSQR(val)       MCR14(val, 1, c0, c7, 6)
0497 #define WCP14_ETMEXTOUTEVR0(val)    MCR14(val, 1, c0, c8, 6)
0498 #define WCP14_ETMEXTOUTEVR1(val)    MCR14(val, 1, c0, c9, 6)
0499 #define WCP14_ETMEXTOUTEVR2(val)    MCR14(val, 1, c0, c10, 6)
0500 #define WCP14_ETMEXTOUTEVR3(val)    MCR14(val, 1, c0, c11, 6)
0501 #define WCP14_ETMCIDCVR0(val)       MCR14(val, 1, c0, c12, 6)
0502 #define WCP14_ETMCIDCVR1(val)       MCR14(val, 1, c0, c13, 6)
0503 #define WCP14_ETMCIDCVR2(val)       MCR14(val, 1, c0, c14, 6)
0504 #define WCP14_ETMCIDCMR(val)        MCR14(val, 1, c0, c15, 6)
0505 #define WCP14_ETMIMPSPEC0(val)      MCR14(val, 1, c0, c0, 7)
0506 #define WCP14_ETMIMPSPEC1(val)      MCR14(val, 1, c0, c1, 7)
0507 #define WCP14_ETMIMPSPEC2(val)      MCR14(val, 1, c0, c2, 7)
0508 #define WCP14_ETMIMPSPEC3(val)      MCR14(val, 1, c0, c3, 7)
0509 #define WCP14_ETMIMPSPEC4(val)      MCR14(val, 1, c0, c4, 7)
0510 #define WCP14_ETMIMPSPEC5(val)      MCR14(val, 1, c0, c5, 7)
0511 #define WCP14_ETMIMPSPEC6(val)      MCR14(val, 1, c0, c6, 7)
0512 #define WCP14_ETMIMPSPEC7(val)      MCR14(val, 1, c0, c7, 7)
0513 /* Can be read only in ETMv3.4, ETMv3.5 */
0514 #define WCP14_ETMSYNCFR(val)        MCR14(val, 1, c0, c8, 7)
0515 #define WCP14_ETMEXTINSELR(val)     MCR14(val, 1, c0, c11, 7)
0516 #define WCP14_ETMTESSEICR(val)      MCR14(val, 1, c0, c12, 7)
0517 #define WCP14_ETMEIBCR(val)     MCR14(val, 1, c0, c13, 7)
0518 #define WCP14_ETMTSEVR(val)     MCR14(val, 1, c0, c14, 7)
0519 #define WCP14_ETMAUXCR(val)     MCR14(val, 1, c0, c15, 7)
0520 #define WCP14_ETMTRACEIDR(val)      MCR14(val, 1, c1, c0, 0)
0521 #define WCP14_ETMIDR2(val)      MCR14(val, 1, c1, c2, 0)
0522 #define WCP14_ETMVMIDCVR(val)       MCR14(val, 1, c1, c0, 1)
0523 #define WCP14_ETMOSLAR(val)     MCR14(val, 1, c1, c0, 4)
0524 /* Not available in PFTv1.1 */
0525 #define WCP14_ETMOSSRR(val)     MCR14(val, 1, c1, c2, 4)
0526 #define WCP14_ETMPDCR(val)      MCR14(val, 1, c1, c4, 4)
0527 #define WCP14_ETMPDSR(val)      MCR14(val, 1, c1, c5, 4)
0528 #define WCP14_ETMITCTRL(val)        MCR14(val, 1, c7, c0, 4)
0529 #define WCP14_ETMCLAIMSET(val)      MCR14(val, 1, c7, c8, 6)
0530 #define WCP14_ETMCLAIMCLR(val)      MCR14(val, 1, c7, c9, 6)
0531 /* Writes to this from CP14 interface are ignored */
0532 #define WCP14_ETMLAR(val)       MCR14(val, 1, c7, c12, 6)
0533 
0534 #endif