cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cp14.h (25160B)


      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({									\
     19u32 val;								\
     20asm volatile("mrc p14, "#op1", %0, "#crn", "#crm", "#op2 : "=r" (val));	\
     21val;									\
     22})
     23
     24#define MCR14(val, op1, crn, crm, op2)					\
     25({									\
     26asm 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