1 /* 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 ({ \ 27 u32 val; \ 28 asm volatile("mrc p14, "#op1", %0, "#crn", "#crm", "#op2 : "=r" (val)); \ 29 val; \ 30 }) 31 32 #define MCR14(val, op1, crn, crm, op2) \ 33 ({ \ 34 asm 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 543