cp14.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543
  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. #ifndef __ASM_HARDWARE_CP14_H
  13. #define __ASM_HARDWARE_CP14_H
  14. #include <linux/types.h>
  15. /* Accessors for CP14 registers */
  16. #define dbg_read(reg) RCP14_##reg()
  17. #define dbg_write(val, reg) WCP14_##reg(val)
  18. #define etm_read(reg) RCP14_##reg()
  19. #define etm_write(val, reg) WCP14_##reg(val)
  20. /* MRC14 and MCR14 */
  21. #define MRC14(op1, crn, crm, op2) \
  22. ({ \
  23. u32 val; \
  24. asm volatile("mrc p14, "#op1", %0, "#crn", "#crm", "#op2 : "=r" (val)); \
  25. val; \
  26. })
  27. #define MCR14(val, op1, crn, crm, op2) \
  28. ({ \
  29. asm volatile("mcr p14, "#op1", %0, "#crn", "#crm", "#op2 : : "r" (val));\
  30. })
  31. /*
  32. * Debug Registers
  33. *
  34. * Available only in DBGv7
  35. * DBGECR, DBGDSCCR, DBGDSMCR, DBGDRCR
  36. *
  37. * Available only in DBGv7.1
  38. * DBGBXVRm, DBGOSDLR, DBGDEVID2, DBGDEVID1
  39. *
  40. * Read only
  41. * DBGDIDR, DBGDSCRint, DBGDTRRXint, DBGDRAR, DBGOSLSR, DBGOSSRR, DBGPRSR,
  42. * DBGPRSR, DBGDSAR, DBGAUTHSTATUS, DBGDEVID2, DBGDEVID1, DBGDEVID
  43. *
  44. * Write only
  45. * DBGDTRTXint, DBGOSLAR
  46. */
  47. #define RCP14_DBGDIDR() MRC14(0, c0, c0, 0)
  48. #define RCP14_DBGDSCRint() MRC14(0, c0, c1, 0)
  49. #define RCP14_DBGDTRRXint() MRC14(0, c0, c5, 0)
  50. #define RCP14_DBGWFAR() MRC14(0, c0, c6, 0)
  51. #define RCP14_DBGVCR() MRC14(0, c0, c7, 0)
  52. #define RCP14_DBGECR() MRC14(0, c0, c9, 0)
  53. #define RCP14_DBGDSCCR() MRC14(0, c0, c10, 0)
  54. #define RCP14_DBGDSMCR() MRC14(0, c0, c11, 0)
  55. #define RCP14_DBGDTRRXext() MRC14(0, c0, c0, 2)
  56. #define RCP14_DBGDSCRext() MRC14(0, c0, c2, 2)
  57. #define RCP14_DBGDTRTXext() MRC14(0, c0, c3, 2)
  58. #define RCP14_DBGDRCR() MRC14(0, c0, c4, 2)
  59. #define RCP14_DBGBVR0() MRC14(0, c0, c0, 4)
  60. #define RCP14_DBGBVR1() MRC14(0, c0, c1, 4)
  61. #define RCP14_DBGBVR2() MRC14(0, c0, c2, 4)
  62. #define RCP14_DBGBVR3() MRC14(0, c0, c3, 4)
  63. #define RCP14_DBGBVR4() MRC14(0, c0, c4, 4)
  64. #define RCP14_DBGBVR5() MRC14(0, c0, c5, 4)
  65. #define RCP14_DBGBVR6() MRC14(0, c0, c6, 4)
  66. #define RCP14_DBGBVR7() MRC14(0, c0, c7, 4)
  67. #define RCP14_DBGBVR8() MRC14(0, c0, c8, 4)
  68. #define RCP14_DBGBVR9() MRC14(0, c0, c9, 4)
  69. #define RCP14_DBGBVR10() MRC14(0, c0, c10, 4)
  70. #define RCP14_DBGBVR11() MRC14(0, c0, c11, 4)
  71. #define RCP14_DBGBVR12() MRC14(0, c0, c12, 4)
  72. #define RCP14_DBGBVR13() MRC14(0, c0, c13, 4)
  73. #define RCP14_DBGBVR14() MRC14(0, c0, c14, 4)
  74. #define RCP14_DBGBVR15() MRC14(0, c0, c15, 4)
  75. #define RCP14_DBGBCR0() MRC14(0, c0, c0, 5)
  76. #define RCP14_DBGBCR1() MRC14(0, c0, c1, 5)
  77. #define RCP14_DBGBCR2() MRC14(0, c0, c2, 5)
  78. #define RCP14_DBGBCR3() MRC14(0, c0, c3, 5)
  79. #define RCP14_DBGBCR4() MRC14(0, c0, c4, 5)
  80. #define RCP14_DBGBCR5() MRC14(0, c0, c5, 5)
  81. #define RCP14_DBGBCR6() MRC14(0, c0, c6, 5)
  82. #define RCP14_DBGBCR7() MRC14(0, c0, c7, 5)
  83. #define RCP14_DBGBCR8() MRC14(0, c0, c8, 5)
  84. #define RCP14_DBGBCR9() MRC14(0, c0, c9, 5)
  85. #define RCP14_DBGBCR10() MRC14(0, c0, c10, 5)
  86. #define RCP14_DBGBCR11() MRC14(0, c0, c11, 5)
  87. #define RCP14_DBGBCR12() MRC14(0, c0, c12, 5)
  88. #define RCP14_DBGBCR13() MRC14(0, c0, c13, 5)
  89. #define RCP14_DBGBCR14() MRC14(0, c0, c14, 5)
  90. #define RCP14_DBGBCR15() MRC14(0, c0, c15, 5)
  91. #define RCP14_DBGWVR0() MRC14(0, c0, c0, 6)
  92. #define RCP14_DBGWVR1() MRC14(0, c0, c1, 6)
  93. #define RCP14_DBGWVR2() MRC14(0, c0, c2, 6)
  94. #define RCP14_DBGWVR3() MRC14(0, c0, c3, 6)
  95. #define RCP14_DBGWVR4() MRC14(0, c0, c4, 6)
  96. #define RCP14_DBGWVR5() MRC14(0, c0, c5, 6)
  97. #define RCP14_DBGWVR6() MRC14(0, c0, c6, 6)
  98. #define RCP14_DBGWVR7() MRC14(0, c0, c7, 6)
  99. #define RCP14_DBGWVR8() MRC14(0, c0, c8, 6)
  100. #define RCP14_DBGWVR9() MRC14(0, c0, c9, 6)
  101. #define RCP14_DBGWVR10() MRC14(0, c0, c10, 6)
  102. #define RCP14_DBGWVR11() MRC14(0, c0, c11, 6)
  103. #define RCP14_DBGWVR12() MRC14(0, c0, c12, 6)
  104. #define RCP14_DBGWVR13() MRC14(0, c0, c13, 6)
  105. #define RCP14_DBGWVR14() MRC14(0, c0, c14, 6)
  106. #define RCP14_DBGWVR15() MRC14(0, c0, c15, 6)
  107. #define RCP14_DBGWCR0() MRC14(0, c0, c0, 7)
  108. #define RCP14_DBGWCR1() MRC14(0, c0, c1, 7)
  109. #define RCP14_DBGWCR2() MRC14(0, c0, c2, 7)
  110. #define RCP14_DBGWCR3() MRC14(0, c0, c3, 7)
  111. #define RCP14_DBGWCR4() MRC14(0, c0, c4, 7)
  112. #define RCP14_DBGWCR5() MRC14(0, c0, c5, 7)
  113. #define RCP14_DBGWCR6() MRC14(0, c0, c6, 7)
  114. #define RCP14_DBGWCR7() MRC14(0, c0, c7, 7)
  115. #define RCP14_DBGWCR8() MRC14(0, c0, c8, 7)
  116. #define RCP14_DBGWCR9() MRC14(0, c0, c9, 7)
  117. #define RCP14_DBGWCR10() MRC14(0, c0, c10, 7)
  118. #define RCP14_DBGWCR11() MRC14(0, c0, c11, 7)
  119. #define RCP14_DBGWCR12() MRC14(0, c0, c12, 7)
  120. #define RCP14_DBGWCR13() MRC14(0, c0, c13, 7)
  121. #define RCP14_DBGWCR14() MRC14(0, c0, c14, 7)
  122. #define RCP14_DBGWCR15() MRC14(0, c0, c15, 7)
  123. #define RCP14_DBGDRAR() MRC14(0, c1, c0, 0)
  124. #define RCP14_DBGBXVR0() MRC14(0, c1, c0, 1)
  125. #define RCP14_DBGBXVR1() MRC14(0, c1, c1, 1)
  126. #define RCP14_DBGBXVR2() MRC14(0, c1, c2, 1)
  127. #define RCP14_DBGBXVR3() MRC14(0, c1, c3, 1)
  128. #define RCP14_DBGBXVR4() MRC14(0, c1, c4, 1)
  129. #define RCP14_DBGBXVR5() MRC14(0, c1, c5, 1)
  130. #define RCP14_DBGBXVR6() MRC14(0, c1, c6, 1)
  131. #define RCP14_DBGBXVR7() MRC14(0, c1, c7, 1)
  132. #define RCP14_DBGBXVR8() MRC14(0, c1, c8, 1)
  133. #define RCP14_DBGBXVR9() MRC14(0, c1, c9, 1)
  134. #define RCP14_DBGBXVR10() MRC14(0, c1, c10, 1)
  135. #define RCP14_DBGBXVR11() MRC14(0, c1, c11, 1)
  136. #define RCP14_DBGBXVR12() MRC14(0, c1, c12, 1)
  137. #define RCP14_DBGBXVR13() MRC14(0, c1, c13, 1)
  138. #define RCP14_DBGBXVR14() MRC14(0, c1, c14, 1)
  139. #define RCP14_DBGBXVR15() MRC14(0, c1, c15, 1)
  140. #define RCP14_DBGOSLSR() MRC14(0, c1, c1, 4)
  141. #define RCP14_DBGOSSRR() MRC14(0, c1, c2, 4)
  142. #define RCP14_DBGOSDLR() MRC14(0, c1, c3, 4)
  143. #define RCP14_DBGPRCR() MRC14(0, c1, c4, 4)
  144. #define RCP14_DBGPRSR() MRC14(0, c1, c5, 4)
  145. #define RCP14_DBGDSAR() MRC14(0, c2, c0, 0)
  146. #define RCP14_DBGITCTRL() MRC14(0, c7, c0, 4)
  147. #define RCP14_DBGCLAIMSET() MRC14(0, c7, c8, 6)
  148. #define RCP14_DBGCLAIMCLR() MRC14(0, c7, c9, 6)
  149. #define RCP14_DBGAUTHSTATUS() MRC14(0, c7, c14, 6)
  150. #define RCP14_DBGDEVID2() MRC14(0, c7, c0, 7)
  151. #define RCP14_DBGDEVID1() MRC14(0, c7, c1, 7)
  152. #define RCP14_DBGDEVID() MRC14(0, c7, c2, 7)
  153. #define WCP14_DBGDTRTXint(val) MCR14(val, 0, c0, c5, 0)
  154. #define WCP14_DBGWFAR(val) MCR14(val, 0, c0, c6, 0)
  155. #define WCP14_DBGVCR(val) MCR14(val, 0, c0, c7, 0)
  156. #define WCP14_DBGECR(val) MCR14(val, 0, c0, c9, 0)
  157. #define WCP14_DBGDSCCR(val) MCR14(val, 0, c0, c10, 0)
  158. #define WCP14_DBGDSMCR(val) MCR14(val, 0, c0, c11, 0)
  159. #define WCP14_DBGDTRRXext(val) MCR14(val, 0, c0, c0, 2)
  160. #define WCP14_DBGDSCRext(val) MCR14(val, 0, c0, c2, 2)
  161. #define WCP14_DBGDTRTXext(val) MCR14(val, 0, c0, c3, 2)
  162. #define WCP14_DBGDRCR(val) MCR14(val, 0, c0, c4, 2)
  163. #define WCP14_DBGBVR0(val) MCR14(val, 0, c0, c0, 4)
  164. #define WCP14_DBGBVR1(val) MCR14(val, 0, c0, c1, 4)
  165. #define WCP14_DBGBVR2(val) MCR14(val, 0, c0, c2, 4)
  166. #define WCP14_DBGBVR3(val) MCR14(val, 0, c0, c3, 4)
  167. #define WCP14_DBGBVR4(val) MCR14(val, 0, c0, c4, 4)
  168. #define WCP14_DBGBVR5(val) MCR14(val, 0, c0, c5, 4)
  169. #define WCP14_DBGBVR6(val) MCR14(val, 0, c0, c6, 4)
  170. #define WCP14_DBGBVR7(val) MCR14(val, 0, c0, c7, 4)
  171. #define WCP14_DBGBVR8(val) MCR14(val, 0, c0, c8, 4)
  172. #define WCP14_DBGBVR9(val) MCR14(val, 0, c0, c9, 4)
  173. #define WCP14_DBGBVR10(val) MCR14(val, 0, c0, c10, 4)
  174. #define WCP14_DBGBVR11(val) MCR14(val, 0, c0, c11, 4)
  175. #define WCP14_DBGBVR12(val) MCR14(val, 0, c0, c12, 4)
  176. #define WCP14_DBGBVR13(val) MCR14(val, 0, c0, c13, 4)
  177. #define WCP14_DBGBVR14(val) MCR14(val, 0, c0, c14, 4)
  178. #define WCP14_DBGBVR15(val) MCR14(val, 0, c0, c15, 4)
  179. #define WCP14_DBGBCR0(val) MCR14(val, 0, c0, c0, 5)
  180. #define WCP14_DBGBCR1(val) MCR14(val, 0, c0, c1, 5)
  181. #define WCP14_DBGBCR2(val) MCR14(val, 0, c0, c2, 5)
  182. #define WCP14_DBGBCR3(val) MCR14(val, 0, c0, c3, 5)
  183. #define WCP14_DBGBCR4(val) MCR14(val, 0, c0, c4, 5)
  184. #define WCP14_DBGBCR5(val) MCR14(val, 0, c0, c5, 5)
  185. #define WCP14_DBGBCR6(val) MCR14(val, 0, c0, c6, 5)
  186. #define WCP14_DBGBCR7(val) MCR14(val, 0, c0, c7, 5)
  187. #define WCP14_DBGBCR8(val) MCR14(val, 0, c0, c8, 5)
  188. #define WCP14_DBGBCR9(val) MCR14(val, 0, c0, c9, 5)
  189. #define WCP14_DBGBCR10(val) MCR14(val, 0, c0, c10, 5)
  190. #define WCP14_DBGBCR11(val) MCR14(val, 0, c0, c11, 5)
  191. #define WCP14_DBGBCR12(val) MCR14(val, 0, c0, c12, 5)
  192. #define WCP14_DBGBCR13(val) MCR14(val, 0, c0, c13, 5)
  193. #define WCP14_DBGBCR14(val) MCR14(val, 0, c0, c14, 5)
  194. #define WCP14_DBGBCR15(val) MCR14(val, 0, c0, c15, 5)
  195. #define WCP14_DBGWVR0(val) MCR14(val, 0, c0, c0, 6)
  196. #define WCP14_DBGWVR1(val) MCR14(val, 0, c0, c1, 6)
  197. #define WCP14_DBGWVR2(val) MCR14(val, 0, c0, c2, 6)
  198. #define WCP14_DBGWVR3(val) MCR14(val, 0, c0, c3, 6)
  199. #define WCP14_DBGWVR4(val) MCR14(val, 0, c0, c4, 6)
  200. #define WCP14_DBGWVR5(val) MCR14(val, 0, c0, c5, 6)
  201. #define WCP14_DBGWVR6(val) MCR14(val, 0, c0, c6, 6)
  202. #define WCP14_DBGWVR7(val) MCR14(val, 0, c0, c7, 6)
  203. #define WCP14_DBGWVR8(val) MCR14(val, 0, c0, c8, 6)
  204. #define WCP14_DBGWVR9(val) MCR14(val, 0, c0, c9, 6)
  205. #define WCP14_DBGWVR10(val) MCR14(val, 0, c0, c10, 6)
  206. #define WCP14_DBGWVR11(val) MCR14(val, 0, c0, c11, 6)
  207. #define WCP14_DBGWVR12(val) MCR14(val, 0, c0, c12, 6)
  208. #define WCP14_DBGWVR13(val) MCR14(val, 0, c0, c13, 6)
  209. #define WCP14_DBGWVR14(val) MCR14(val, 0, c0, c14, 6)
  210. #define WCP14_DBGWVR15(val) MCR14(val, 0, c0, c15, 6)
  211. #define WCP14_DBGWCR0(val) MCR14(val, 0, c0, c0, 7)
  212. #define WCP14_DBGWCR1(val) MCR14(val, 0, c0, c1, 7)
  213. #define WCP14_DBGWCR2(val) MCR14(val, 0, c0, c2, 7)
  214. #define WCP14_DBGWCR3(val) MCR14(val, 0, c0, c3, 7)
  215. #define WCP14_DBGWCR4(val) MCR14(val, 0, c0, c4, 7)
  216. #define WCP14_DBGWCR5(val) MCR14(val, 0, c0, c5, 7)
  217. #define WCP14_DBGWCR6(val) MCR14(val, 0, c0, c6, 7)
  218. #define WCP14_DBGWCR7(val) MCR14(val, 0, c0, c7, 7)
  219. #define WCP14_DBGWCR8(val) MCR14(val, 0, c0, c8, 7)
  220. #define WCP14_DBGWCR9(val) MCR14(val, 0, c0, c9, 7)
  221. #define WCP14_DBGWCR10(val) MCR14(val, 0, c0, c10, 7)
  222. #define WCP14_DBGWCR11(val) MCR14(val, 0, c0, c11, 7)
  223. #define WCP14_DBGWCR12(val) MCR14(val, 0, c0, c12, 7)
  224. #define WCP14_DBGWCR13(val) MCR14(val, 0, c0, c13, 7)
  225. #define WCP14_DBGWCR14(val) MCR14(val, 0, c0, c14, 7)
  226. #define WCP14_DBGWCR15(val) MCR14(val, 0, c0, c15, 7)
  227. #define WCP14_DBGBXVR0(val) MCR14(val, 0, c1, c0, 1)
  228. #define WCP14_DBGBXVR1(val) MCR14(val, 0, c1, c1, 1)
  229. #define WCP14_DBGBXVR2(val) MCR14(val, 0, c1, c2, 1)
  230. #define WCP14_DBGBXVR3(val) MCR14(val, 0, c1, c3, 1)
  231. #define WCP14_DBGBXVR4(val) MCR14(val, 0, c1, c4, 1)
  232. #define WCP14_DBGBXVR5(val) MCR14(val, 0, c1, c5, 1)
  233. #define WCP14_DBGBXVR6(val) MCR14(val, 0, c1, c6, 1)
  234. #define WCP14_DBGBXVR7(val) MCR14(val, 0, c1, c7, 1)
  235. #define WCP14_DBGBXVR8(val) MCR14(val, 0, c1, c8, 1)
  236. #define WCP14_DBGBXVR9(val) MCR14(val, 0, c1, c9, 1)
  237. #define WCP14_DBGBXVR10(val) MCR14(val, 0, c1, c10, 1)
  238. #define WCP14_DBGBXVR11(val) MCR14(val, 0, c1, c11, 1)
  239. #define WCP14_DBGBXVR12(val) MCR14(val, 0, c1, c12, 1)
  240. #define WCP14_DBGBXVR13(val) MCR14(val, 0, c1, c13, 1)
  241. #define WCP14_DBGBXVR14(val) MCR14(val, 0, c1, c14, 1)
  242. #define WCP14_DBGBXVR15(val) MCR14(val, 0, c1, c15, 1)
  243. #define WCP14_DBGOSLAR(val) MCR14(val, 0, c1, c0, 4)
  244. #define WCP14_DBGOSSRR(val) MCR14(val, 0, c1, c2, 4)
  245. #define WCP14_DBGOSDLR(val) MCR14(val, 0, c1, c3, 4)
  246. #define WCP14_DBGPRCR(val) MCR14(val, 0, c1, c4, 4)
  247. #define WCP14_DBGITCTRL(val) MCR14(val, 0, c7, c0, 4)
  248. #define WCP14_DBGCLAIMSET(val) MCR14(val, 0, c7, c8, 6)
  249. #define WCP14_DBGCLAIMCLR(val) MCR14(val, 0, c7, c9, 6)
  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. #define WCP14_ETMCR(val) MCR14(val, 1, c0, c0, 0)
  412. #define WCP14_ETMTRIGGER(val) MCR14(val, 1, c0, c2, 0)
  413. #define WCP14_ETMASICCR(val) MCR14(val, 1, c0, c3, 0)
  414. #define WCP14_ETMSR(val) MCR14(val, 1, c0, c4, 0)
  415. #define WCP14_ETMTSSCR(val) MCR14(val, 1, c0, c6, 0)
  416. #define WCP14_ETMTECR2(val) MCR14(val, 1, c0, c7, 0)
  417. #define WCP14_ETMTEEVR(val) MCR14(val, 1, c0, c8, 0)
  418. #define WCP14_ETMTECR1(val) MCR14(val, 1, c0, c9, 0)
  419. #define WCP14_ETMFFRR(val) MCR14(val, 1, c0, c10, 0)
  420. #define WCP14_ETMFFLR(val) MCR14(val, 1, c0, c11, 0)
  421. #define WCP14_ETMVDEVR(val) MCR14(val, 1, c0, c12, 0)
  422. #define WCP14_ETMVDCR1(val) MCR14(val, 1, c0, c13, 0)
  423. #define WCP14_ETMVDCR2(val) MCR14(val, 1, c0, c14, 0)
  424. #define WCP14_ETMVDCR3(val) MCR14(val, 1, c0, c15, 0)
  425. #define WCP14_ETMACVR0(val) MCR14(val, 1, c0, c0, 1)
  426. #define WCP14_ETMACVR1(val) MCR14(val, 1, c0, c1, 1)
  427. #define WCP14_ETMACVR2(val) MCR14(val, 1, c0, c2, 1)
  428. #define WCP14_ETMACVR3(val) MCR14(val, 1, c0, c3, 1)
  429. #define WCP14_ETMACVR4(val) MCR14(val, 1, c0, c4, 1)
  430. #define WCP14_ETMACVR5(val) MCR14(val, 1, c0, c5, 1)
  431. #define WCP14_ETMACVR6(val) MCR14(val, 1, c0, c6, 1)
  432. #define WCP14_ETMACVR7(val) MCR14(val, 1, c0, c7, 1)
  433. #define WCP14_ETMACVR8(val) MCR14(val, 1, c0, c8, 1)
  434. #define WCP14_ETMACVR9(val) MCR14(val, 1, c0, c9, 1)
  435. #define WCP14_ETMACVR10(val) MCR14(val, 1, c0, c10, 1)
  436. #define WCP14_ETMACVR11(val) MCR14(val, 1, c0, c11, 1)
  437. #define WCP14_ETMACVR12(val) MCR14(val, 1, c0, c12, 1)
  438. #define WCP14_ETMACVR13(val) MCR14(val, 1, c0, c13, 1)
  439. #define WCP14_ETMACVR14(val) MCR14(val, 1, c0, c14, 1)
  440. #define WCP14_ETMACVR15(val) MCR14(val, 1, c0, c15, 1)
  441. #define WCP14_ETMACTR0(val) MCR14(val, 1, c0, c0, 2)
  442. #define WCP14_ETMACTR1(val) MCR14(val, 1, c0, c1, 2)
  443. #define WCP14_ETMACTR2(val) MCR14(val, 1, c0, c2, 2)
  444. #define WCP14_ETMACTR3(val) MCR14(val, 1, c0, c3, 2)
  445. #define WCP14_ETMACTR4(val) MCR14(val, 1, c0, c4, 2)
  446. #define WCP14_ETMACTR5(val) MCR14(val, 1, c0, c5, 2)
  447. #define WCP14_ETMACTR6(val) MCR14(val, 1, c0, c6, 2)
  448. #define WCP14_ETMACTR7(val) MCR14(val, 1, c0, c7, 2)
  449. #define WCP14_ETMACTR8(val) MCR14(val, 1, c0, c8, 2)
  450. #define WCP14_ETMACTR9(val) MCR14(val, 1, c0, c9, 2)
  451. #define WCP14_ETMACTR10(val) MCR14(val, 1, c0, c10, 2)
  452. #define WCP14_ETMACTR11(val) MCR14(val, 1, c0, c11, 2)
  453. #define WCP14_ETMACTR12(val) MCR14(val, 1, c0, c12, 2)
  454. #define WCP14_ETMACTR13(val) MCR14(val, 1, c0, c13, 2)
  455. #define WCP14_ETMACTR14(val) MCR14(val, 1, c0, c14, 2)
  456. #define WCP14_ETMACTR15(val) MCR14(val, 1, c0, c15, 2)
  457. #define WCP14_ETMDCVR0(val) MCR14(val, 1, c0, c0, 3)
  458. #define WCP14_ETMDCVR2(val) MCR14(val, 1, c0, c2, 3)
  459. #define WCP14_ETMDCVR4(val) MCR14(val, 1, c0, c4, 3)
  460. #define WCP14_ETMDCVR6(val) MCR14(val, 1, c0, c6, 3)
  461. #define WCP14_ETMDCVR8(val) MCR14(val, 1, c0, c8, 3)
  462. #define WCP14_ETMDCVR10(val) MCR14(val, 1, c0, c10, 3)
  463. #define WCP14_ETMDCVR12(val) MCR14(val, 1, c0, c12, 3)
  464. #define WCP14_ETMDCVR14(val) MCR14(val, 1, c0, c14, 3)
  465. #define WCP14_ETMDCMR0(val) MCR14(val, 1, c0, c0, 4)
  466. #define WCP14_ETMDCMR2(val) MCR14(val, 1, c0, c2, 4)
  467. #define WCP14_ETMDCMR4(val) MCR14(val, 1, c0, c4, 4)
  468. #define WCP14_ETMDCMR6(val) MCR14(val, 1, c0, c6, 4)
  469. #define WCP14_ETMDCMR8(val) MCR14(val, 1, c0, c8, 4)
  470. #define WCP14_ETMDCMR10(val) MCR14(val, 1, c0, c10, 4)
  471. #define WCP14_ETMDCMR12(val) MCR14(val, 1, c0, c12, 4)
  472. #define WCP14_ETMDCMR14(val) MCR14(val, 1, c0, c14, 4)
  473. #define WCP14_ETMCNTRLDVR0(val) MCR14(val, 1, c0, c0, 5)
  474. #define WCP14_ETMCNTRLDVR1(val) MCR14(val, 1, c0, c1, 5)
  475. #define WCP14_ETMCNTRLDVR2(val) MCR14(val, 1, c0, c2, 5)
  476. #define WCP14_ETMCNTRLDVR3(val) MCR14(val, 1, c0, c3, 5)
  477. #define WCP14_ETMCNTENR0(val) MCR14(val, 1, c0, c4, 5)
  478. #define WCP14_ETMCNTENR1(val) MCR14(val, 1, c0, c5, 5)
  479. #define WCP14_ETMCNTENR2(val) MCR14(val, 1, c0, c6, 5)
  480. #define WCP14_ETMCNTENR3(val) MCR14(val, 1, c0, c7, 5)
  481. #define WCP14_ETMCNTRLDEVR0(val) MCR14(val, 1, c0, c8, 5)
  482. #define WCP14_ETMCNTRLDEVR1(val) MCR14(val, 1, c0, c9, 5)
  483. #define WCP14_ETMCNTRLDEVR2(val) MCR14(val, 1, c0, c10, 5)
  484. #define WCP14_ETMCNTRLDEVR3(val) MCR14(val, 1, c0, c11, 5)
  485. #define WCP14_ETMCNTVR0(val) MCR14(val, 1, c0, c12, 5)
  486. #define WCP14_ETMCNTVR1(val) MCR14(val, 1, c0, c13, 5)
  487. #define WCP14_ETMCNTVR2(val) MCR14(val, 1, c0, c14, 5)
  488. #define WCP14_ETMCNTVR3(val) MCR14(val, 1, c0, c15, 5)
  489. #define WCP14_ETMSQ12EVR(val) MCR14(val, 1, c0, c0, 6)
  490. #define WCP14_ETMSQ21EVR(val) MCR14(val, 1, c0, c1, 6)
  491. #define WCP14_ETMSQ23EVR(val) MCR14(val, 1, c0, c2, 6)
  492. #define WCP14_ETMSQ31EVR(val) MCR14(val, 1, c0, c3, 6)
  493. #define WCP14_ETMSQ32EVR(val) MCR14(val, 1, c0, c4, 6)
  494. #define WCP14_ETMSQ13EVR(val) MCR14(val, 1, c0, c5, 6)
  495. #define WCP14_ETMSQR(val) MCR14(val, 1, c0, c7, 6)
  496. #define WCP14_ETMEXTOUTEVR0(val) MCR14(val, 1, c0, c8, 6)
  497. #define WCP14_ETMEXTOUTEVR1(val) MCR14(val, 1, c0, c9, 6)
  498. #define WCP14_ETMEXTOUTEVR2(val) MCR14(val, 1, c0, c10, 6)
  499. #define WCP14_ETMEXTOUTEVR3(val) MCR14(val, 1, c0, c11, 6)
  500. #define WCP14_ETMCIDCVR0(val) MCR14(val, 1, c0, c12, 6)
  501. #define WCP14_ETMCIDCVR1(val) MCR14(val, 1, c0, c13, 6)
  502. #define WCP14_ETMCIDCVR2(val) MCR14(val, 1, c0, c14, 6)
  503. #define WCP14_ETMCIDCMR(val) MCR14(val, 1, c0, c15, 6)
  504. #define WCP14_ETMIMPSPEC0(val) MCR14(val, 1, c0, c0, 7)
  505. #define WCP14_ETMIMPSPEC1(val) MCR14(val, 1, c0, c1, 7)
  506. #define WCP14_ETMIMPSPEC2(val) MCR14(val, 1, c0, c2, 7)
  507. #define WCP14_ETMIMPSPEC3(val) MCR14(val, 1, c0, c3, 7)
  508. #define WCP14_ETMIMPSPEC4(val) MCR14(val, 1, c0, c4, 7)
  509. #define WCP14_ETMIMPSPEC5(val) MCR14(val, 1, c0, c5, 7)
  510. #define WCP14_ETMIMPSPEC6(val) MCR14(val, 1, c0, c6, 7)
  511. #define WCP14_ETMIMPSPEC7(val) MCR14(val, 1, c0, c7, 7)
  512. /* Can be read only in ETMv3.4, ETMv3.5 */
  513. #define WCP14_ETMSYNCFR(val) MCR14(val, 1, c0, c8, 7)
  514. #define WCP14_ETMEXTINSELR(val) MCR14(val, 1, c0, c11, 7)
  515. #define WCP14_ETMTESSEICR(val) MCR14(val, 1, c0, c12, 7)
  516. #define WCP14_ETMEIBCR(val) MCR14(val, 1, c0, c13, 7)
  517. #define WCP14_ETMTSEVR(val) MCR14(val, 1, c0, c14, 7)
  518. #define WCP14_ETMAUXCR(val) MCR14(val, 1, c0, c15, 7)
  519. #define WCP14_ETMTRACEIDR(val) MCR14(val, 1, c1, c0, 0)
  520. #define WCP14_ETMIDR2(val) MCR14(val, 1, c1, c2, 0)
  521. #define WCP14_ETMVMIDCVR(val) MCR14(val, 1, c1, c0, 1)
  522. #define WCP14_ETMOSLAR(val) MCR14(val, 1, c1, c0, 4)
  523. /* Not available in PFTv1.1 */
  524. #define WCP14_ETMOSSRR(val) MCR14(val, 1, c1, c2, 4)
  525. #define WCP14_ETMPDCR(val) MCR14(val, 1, c1, c4, 4)
  526. #define WCP14_ETMPDSR(val) MCR14(val, 1, c1, c5, 4)
  527. #define WCP14_ETMITCTRL(val) MCR14(val, 1, c7, c0, 4)
  528. #define WCP14_ETMCLAIMSET(val) MCR14(val, 1, c7, c8, 6)
  529. #define WCP14_ETMCLAIMCLR(val) MCR14(val, 1, c7, c9, 6)
  530. /* Writes to this from CP14 interface are ignored */
  531. #define WCP14_ETMLAR(val) MCR14(val, 1, c7, c12, 6)
  532. #endif