1e5acd89cSAndrew Turner /*- 2e5acd89cSAndrew Turner * Copyright (c) 2013, 2014 Andrew Turner 35484e6d9SAndrew Turner * Copyright (c) 2015,2021 The FreeBSD Foundation 4e5acd89cSAndrew Turner * 55484e6d9SAndrew Turner * Portions of this software were developed by Andrew Turner 65484e6d9SAndrew Turner * under sponsorship from the FreeBSD Foundation. 7e5acd89cSAndrew Turner * 8e5acd89cSAndrew Turner * Redistribution and use in source and binary forms, with or without 9e5acd89cSAndrew Turner * modification, are permitted provided that the following conditions 10e5acd89cSAndrew Turner * are met: 11e5acd89cSAndrew Turner * 1. Redistributions of source code must retain the above copyright 12e5acd89cSAndrew Turner * notice, this list of conditions and the following disclaimer. 13e5acd89cSAndrew Turner * 2. Redistributions in binary form must reproduce the above copyright 14e5acd89cSAndrew Turner * notice, this list of conditions and the following disclaimer in the 15e5acd89cSAndrew Turner * documentation and/or other materials provided with the distribution. 16e5acd89cSAndrew Turner * 17e5acd89cSAndrew Turner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18e5acd89cSAndrew Turner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19e5acd89cSAndrew Turner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20e5acd89cSAndrew Turner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21e5acd89cSAndrew Turner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22e5acd89cSAndrew Turner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23e5acd89cSAndrew Turner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24e5acd89cSAndrew Turner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25e5acd89cSAndrew Turner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26e5acd89cSAndrew Turner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27e5acd89cSAndrew Turner * SUCH DAMAGE. 28e5acd89cSAndrew Turner * 29e5acd89cSAndrew Turner * $FreeBSD$ 30e5acd89cSAndrew Turner */ 31e5acd89cSAndrew Turner 32e5acd89cSAndrew Turner #ifndef _MACHINE_ARMREG_H_ 33e5acd89cSAndrew Turner #define _MACHINE_ARMREG_H_ 34e5acd89cSAndrew Turner 358a1867f4SWojciech Macek #define INSN_SIZE 4 368a1867f4SWojciech Macek 37cb5343c2SAndrew Turner #define MRS_MASK 0xfff00000 38cb5343c2SAndrew Turner #define MRS_VALUE 0xd5300000 39cb5343c2SAndrew Turner #define MRS_SPECIAL(insn) ((insn) & 0x000fffe0) 40cb5343c2SAndrew Turner #define MRS_REGISTER(insn) ((insn) & 0x0000001f) 41cb5343c2SAndrew Turner #define MRS_Op0_SHIFT 19 42cb5343c2SAndrew Turner #define MRS_Op0_MASK 0x00080000 43cb5343c2SAndrew Turner #define MRS_Op1_SHIFT 16 44cb5343c2SAndrew Turner #define MRS_Op1_MASK 0x00070000 45cb5343c2SAndrew Turner #define MRS_CRn_SHIFT 12 46cb5343c2SAndrew Turner #define MRS_CRn_MASK 0x0000f000 47cb5343c2SAndrew Turner #define MRS_CRm_SHIFT 8 48cb5343c2SAndrew Turner #define MRS_CRm_MASK 0x00000f00 49cb5343c2SAndrew Turner #define MRS_Op2_SHIFT 5 50cb5343c2SAndrew Turner #define MRS_Op2_MASK 0x000000e0 51cb5343c2SAndrew Turner #define MRS_Rt_SHIFT 0 52cb5343c2SAndrew Turner #define MRS_Rt_MASK 0x0000001f 5310f6680fSAndrew Turner #define __MRS_REG(op0, op1, crn, crm, op2) \ 54e68508e1SAndrew Turner (((op0) << MRS_Op0_SHIFT) | ((op1) << MRS_Op1_SHIFT) | \ 55e68508e1SAndrew Turner ((crn) << MRS_CRn_SHIFT) | ((crm) << MRS_CRm_SHIFT) | \ 56e68508e1SAndrew Turner ((op2) << MRS_Op2_SHIFT)) 5710f6680fSAndrew Turner #define MRS_REG(reg) \ 5810f6680fSAndrew Turner __MRS_REG(reg##_op0, reg##_op1, reg##_CRn, reg##_CRm, reg##_op2) 5910f6680fSAndrew Turner 6066ba742dSAndrew Turner #define __MRS_REG_ALT_NAME(op0, op1, crn, crm, op2) \ 6166ba742dSAndrew Turner S##op0##_##op1##_C##crn##_C##crm##_##op2 6266ba742dSAndrew Turner #define _MRS_REG_ALT_NAME(op0, op1, crn, crm, op2) \ 6366ba742dSAndrew Turner __MRS_REG_ALT_NAME(op0, op1, crn, crm, op2) 6466ba742dSAndrew Turner #define MRS_REG_ALT_NAME(reg) \ 6566ba742dSAndrew Turner _MRS_REG_ALT_NAME(reg##_op0, reg##_op1, reg##_CRn, reg##_CRm, reg##_op2) 6610f6680fSAndrew Turner 67cb5343c2SAndrew Turner 68e5acd89cSAndrew Turner #define READ_SPECIALREG(reg) \ 69c749d685SJulian Elischer ({ uint64_t _val; \ 70c749d685SJulian Elischer __asm __volatile("mrs %0, " __STRING(reg) : "=&r" (_val)); \ 71c749d685SJulian Elischer _val; \ 72e5acd89cSAndrew Turner }) 73c749d685SJulian Elischer #define WRITE_SPECIALREG(reg, _val) \ 74c749d685SJulian Elischer __asm __volatile("msr " __STRING(reg) ", %0" : : "r"((uint64_t)_val)) 75e5acd89cSAndrew Turner 76f31c5955SAndrew Turner #define UL(x) UINT64_C(x) 77f31c5955SAndrew Turner 78139ba152SJustin Hibbits /* CCSIDR_EL1 - Cache Size ID Register */ 79139ba152SJustin Hibbits #define CCSIDR_NumSets_MASK 0x0FFFE000 80139ba152SJustin Hibbits #define CCSIDR_NumSets64_MASK 0x00FFFFFF00000000 81139ba152SJustin Hibbits #define CCSIDR_NumSets_SHIFT 13 82139ba152SJustin Hibbits #define CCSIDR_NumSets64_SHIFT 32 83139ba152SJustin Hibbits #define CCSIDR_Assoc_MASK 0x00001FF8 84139ba152SJustin Hibbits #define CCSIDR_Assoc64_MASK 0x0000000000FFFFF8 85139ba152SJustin Hibbits #define CCSIDR_Assoc_SHIFT 3 86139ba152SJustin Hibbits #define CCSIDR_Assoc64_SHIFT 3 87139ba152SJustin Hibbits #define CCSIDR_LineSize_MASK 0x7 88139ba152SJustin Hibbits #define CCSIDR_NSETS(idr) \ 89139ba152SJustin Hibbits (((idr) & CCSIDR_NumSets_MASK) >> CCSIDR_NumSets_SHIFT) 90139ba152SJustin Hibbits #define CCSIDR_ASSOC(idr) \ 91139ba152SJustin Hibbits (((idr) & CCSIDR_Assoc_MASK) >> CCSIDR_Assoc_SHIFT) 92139ba152SJustin Hibbits #define CCSIDR_NSETS_64(idr) \ 93139ba152SJustin Hibbits (((idr) & CCSIDR_NumSets64_MASK) >> CCSIDR_NumSets64_SHIFT) 94139ba152SJustin Hibbits #define CCSIDR_ASSOC_64(idr) \ 95139ba152SJustin Hibbits (((idr) & CCSIDR_Assoc64_MASK) >> CCSIDR_Assoc64_SHIFT) 96139ba152SJustin Hibbits 97139ba152SJustin Hibbits /* CLIDR_EL1 - Cache level ID register */ 98139ba152SJustin Hibbits #define CLIDR_CTYPE_MASK 0x7 /* Cache type mask bits */ 99139ba152SJustin Hibbits #define CLIDR_CTYPE_IO 0x1 /* Instruction only */ 100139ba152SJustin Hibbits #define CLIDR_CTYPE_DO 0x2 /* Data only */ 101139ba152SJustin Hibbits #define CLIDR_CTYPE_ID 0x3 /* Split instruction and data */ 102139ba152SJustin Hibbits #define CLIDR_CTYPE_UNIFIED 0x4 /* Unified */ 103139ba152SJustin Hibbits 1043a1c1a30SAndrew Turner /* CNTHCTL_EL2 - Counter-timer Hypervisor Control register */ 1053a1c1a30SAndrew Turner #define CNTHCTL_EVNTI_MASK (0xf << 4) /* Bit to trigger event stream */ 1063a1c1a30SAndrew Turner #define CNTHCTL_EVNTDIR (1 << 3) /* Control transition trigger bit */ 1073a1c1a30SAndrew Turner #define CNTHCTL_EVNTEN (1 << 2) /* Enable event stream */ 1083a1c1a30SAndrew Turner #define CNTHCTL_EL1PCEN (1 << 1) /* Allow EL0/1 physical timer access */ 1093a1c1a30SAndrew Turner #define CNTHCTL_EL1PCTEN (1 << 0) /*Allow EL0/1 physical counter access*/ 1103a1c1a30SAndrew Turner 1113a1c1a30SAndrew Turner /* CNTP_CTL_EL0 - Counter-timer Physical Timer Control register */ 1124dc81560SAndrew Turner #define CNTP_CTL_EL0 MRS_REG(CNTP_CTL_EL0) 1134dc81560SAndrew Turner #define CNTP_CTL_EL0_op0 3 1144dc81560SAndrew Turner #define CNTP_CTL_EL0_op1 3 1154dc81560SAndrew Turner #define CNTP_CTL_EL0_CRn 14 1164dc81560SAndrew Turner #define CNTP_CTL_EL0_CRm 2 1174dc81560SAndrew Turner #define CNTP_CTL_EL0_op2 1 1183a1c1a30SAndrew Turner #define CNTP_CTL_ENABLE (1 << 0) 1193a1c1a30SAndrew Turner #define CNTP_CTL_IMASK (1 << 1) 1203a1c1a30SAndrew Turner #define CNTP_CTL_ISTATUS (1 << 2) 1213a1c1a30SAndrew Turner 1224dc81560SAndrew Turner /* CNTP_CVAL_EL0 - Counter-timer Physical Timer CompareValue register */ 1234dc81560SAndrew Turner #define CNTP_CVAL_EL0 MRS_REG(CNTP_CVAL_EL0) 1244dc81560SAndrew Turner #define CNTP_CVAL_EL0_op0 3 1254dc81560SAndrew Turner #define CNTP_CVAL_EL0_op1 3 1264dc81560SAndrew Turner #define CNTP_CVAL_EL0_CRn 14 1274dc81560SAndrew Turner #define CNTP_CVAL_EL0_CRm 2 1284dc81560SAndrew Turner #define CNTP_CVAL_EL0_op2 2 1294dc81560SAndrew Turner 1304dc81560SAndrew Turner /* CNTP_TVAL_EL0 - Counter-timer Physical Timer TimerValue register */ 1314dc81560SAndrew Turner #define CNTP_TVAL_EL0 MRS_REG(CNTP_TVAL_EL0) 1324dc81560SAndrew Turner #define CNTP_TVAL_EL0_op0 3 1334dc81560SAndrew Turner #define CNTP_TVAL_EL0_op1 3 1344dc81560SAndrew Turner #define CNTP_TVAL_EL0_CRn 14 1354dc81560SAndrew Turner #define CNTP_TVAL_EL0_CRm 2 1364dc81560SAndrew Turner #define CNTP_TVAL_EL0_op2 0 1374dc81560SAndrew Turner 1384dc81560SAndrew Turner /* CNTPCT_EL0 - Counter-timer Physical Count register */ 1394dc81560SAndrew Turner #define CNTPCT_EL0 MRS_REG(CNTPCT_EL0) 1404dc81560SAndrew Turner #define CNTPCT_EL0_op0 3 1414dc81560SAndrew Turner #define CNTPCT_EL0_op1 3 1424dc81560SAndrew Turner #define CNTPCT_EL0_CRn 14 1434dc81560SAndrew Turner #define CNTPCT_EL0_CRm 0 1444dc81560SAndrew Turner #define CNTPCT_EL0_op2 1 1454dc81560SAndrew Turner 146e5acd89cSAndrew Turner /* CPACR_EL1 */ 1472f317e73SAndrew Turner #define CPACR_ZEN_MASK (0x3 << 16) 1482f317e73SAndrew Turner #define CPACR_ZEN_TRAP_ALL1 (0x0 << 16) /* Traps from EL0 and EL1 */ 1492f317e73SAndrew Turner #define CPACR_ZEN_TRAP_EL0 (0x1 << 16) /* Traps from EL0 */ 1502f317e73SAndrew Turner #define CPACR_ZEN_TRAP_ALL2 (0x2 << 16) /* Traps from EL0 and EL1 */ 1512f317e73SAndrew Turner #define CPACR_ZEN_TRAP_NONE (0x3 << 16) /* No traps */ 152e5acd89cSAndrew Turner #define CPACR_FPEN_MASK (0x3 << 20) 153e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_ALL1 (0x0 << 20) /* Traps from EL0 and EL1 */ 154e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_EL0 (0x1 << 20) /* Traps from EL0 */ 155e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_ALL2 (0x2 << 20) /* Traps from EL0 and EL1 */ 156e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_NONE (0x3 << 20) /* No traps */ 157e5acd89cSAndrew Turner #define CPACR_TTA (0x1 << 28) 158e5acd89cSAndrew Turner 159139ba152SJustin Hibbits /* CSSELR_EL1 - Cache size selection register */ 160139ba152SJustin Hibbits #define CSSELR_Level(i) (i << 1) 161139ba152SJustin Hibbits #define CSSELR_InD 0x00000001 162139ba152SJustin Hibbits 163e5acd89cSAndrew Turner /* CTR_EL0 - Cache Type Register */ 164c32e28d5SAndrew Turner #define CTR_RES1 (1 << 31) 165c32e28d5SAndrew Turner #define CTR_TminLine_SHIFT 32 166c32e28d5SAndrew Turner #define CTR_TminLine_MASK (UL(0x3f) << CTR_TminLine_SHIFT) 167c32e28d5SAndrew Turner #define CTR_TminLine_VAL(reg) ((reg) & CTR_TminLine_MASK) 168c32e28d5SAndrew Turner #define CTR_DIC_SHIFT 29 169c32e28d5SAndrew Turner #define CTR_DIC_MASK (0x1 << CTR_DIC_SHIFT) 170c32e28d5SAndrew Turner #define CTR_DIC_VAL(reg) ((reg) & CTR_DIC_MASK) 171c32e28d5SAndrew Turner #define CTR_IDC_SHIFT 28 172c32e28d5SAndrew Turner #define CTR_IDC_MASK (0x1 << CTR_IDC_SHIFT) 173c32e28d5SAndrew Turner #define CTR_IDC_VAL(reg) ((reg) & CTR_IDC_MASK) 174c32e28d5SAndrew Turner #define CTR_CWG_SHIFT 24 175c32e28d5SAndrew Turner #define CTR_CWG_MASK (0xf << CTR_CWG_SHIFT) 176c32e28d5SAndrew Turner #define CTR_CWG_VAL(reg) ((reg) & CTR_CWG_MASK) 177c32e28d5SAndrew Turner #define CTR_CWG_SIZE(reg) (4 << (CTR_CWG_VAL(reg) >> CTR_CWG_SHIFT)) 178c32e28d5SAndrew Turner #define CTR_ERG_SHIFT 20 179c32e28d5SAndrew Turner #define CTR_ERG_MASK (0xf << CTR_ERG_SHIFT) 180c32e28d5SAndrew Turner #define CTR_ERG_VAL(reg) ((reg) & CTR_ERG_MASK) 181c32e28d5SAndrew Turner #define CTR_ERG_SIZE(reg) (4 << (CTR_ERG_VAL(reg) >> CTR_ERG_SHIFT)) 182e5acd89cSAndrew Turner #define CTR_DLINE_SHIFT 16 183e5acd89cSAndrew Turner #define CTR_DLINE_MASK (0xf << CTR_DLINE_SHIFT) 184c32e28d5SAndrew Turner #define CTR_DLINE_VAL(reg) ((reg) & CTR_DLINE_MASK) 185c32e28d5SAndrew Turner #define CTR_DLINE_SIZE(reg) (4 << (CTR_DLINE_VAL(reg) >> CTR_DLINE_SHIFT)) 186c32e28d5SAndrew Turner #define CTR_L1IP_SHIFT 14 187c32e28d5SAndrew Turner #define CTR_L1IP_MASK (0x3 << CTR_L1IP_SHIFT) 188c32e28d5SAndrew Turner #define CTR_L1IP_VAL(reg) ((reg) & CTR_L1IP_MASK) 189c32e28d5SAndrew Turner #define CTR_L1IP_VPIPT (0 << CTR_L1IP_SHIFT) 190c32e28d5SAndrew Turner #define CTR_L1IP_AIVIVT (1 << CTR_L1IP_SHIFT) 1912923027cSAndrew Turner #define CTR_L1IP_VIPT (2 << CTR_L1IP_SHIFT) 192c32e28d5SAndrew Turner #define CTR_L1IP_PIPT (3 << CTR_L1IP_SHIFT) 193e5acd89cSAndrew Turner #define CTR_ILINE_SHIFT 0 194e5acd89cSAndrew Turner #define CTR_ILINE_MASK (0xf << CTR_ILINE_SHIFT) 195c32e28d5SAndrew Turner #define CTR_ILINE_VAL(reg) ((reg) & CTR_ILINE_MASK) 196c32e28d5SAndrew Turner #define CTR_ILINE_SIZE(reg) (4 << (CTR_ILINE_VAL(reg) >> CTR_ILINE_SHIFT)) 197e5acd89cSAndrew Turner 198337eb2abSAndrew Turner /* DAIFSet/DAIFClear */ 199337eb2abSAndrew Turner #define DAIF_D (1 << 3) 200337eb2abSAndrew Turner #define DAIF_A (1 << 2) 201337eb2abSAndrew Turner #define DAIF_I (1 << 1) 202337eb2abSAndrew Turner #define DAIF_F (1 << 0) 203337eb2abSAndrew Turner #define DAIF_ALL (DAIF_D | DAIF_A | DAIF_I | DAIF_F) 204337eb2abSAndrew Turner #define DAIF_INTR (DAIF_I) /* All exceptions that pass */ 205337eb2abSAndrew Turner /* through the intr framework */ 206337eb2abSAndrew Turner 207664640baSAndrew Turner /* DBGBCR<n>_EL1 - Debug Breakpoint Control Registers */ 2084dc81560SAndrew Turner #define DBGBCR_EL1_op0 2 2094dc81560SAndrew Turner #define DBGBCR_EL1_op1 0 2104dc81560SAndrew Turner #define DBGBCR_EL1_CRn 0 2114dc81560SAndrew Turner /* DBGBCR_EL1_CRm indicates which watchpoint this register is for */ 2124dc81560SAndrew Turner #define DBGBCR_EL1_op2 5 213664640baSAndrew Turner #define DBGBCR_EN 0x1 214664640baSAndrew Turner #define DBGBCR_PMC_SHIFT 1 215664640baSAndrew Turner #define DBGBCR_PMC (0x3 << DBGBCR_PMC_SHIFT) 216664640baSAndrew Turner #define DBGBCR_PMC_EL1 (0x1 << DBGBCR_PMC_SHIFT) 217664640baSAndrew Turner #define DBGBCR_PMC_EL0 (0x2 << DBGBCR_PMC_SHIFT) 218664640baSAndrew Turner #define DBGBCR_BAS_SHIFT 5 219664640baSAndrew Turner #define DBGBCR_BAS (0xf << DBGBCR_BAS_SHIFT) 220664640baSAndrew Turner #define DBGBCR_HMC_SHIFT 13 221664640baSAndrew Turner #define DBGBCR_HMC (0x1 << DBGBCR_HMC_SHIFT) 222664640baSAndrew Turner #define DBGBCR_SSC_SHIFT 14 223664640baSAndrew Turner #define DBGBCR_SSC (0x3 << DBGBCR_SSC_SHIFT) 224664640baSAndrew Turner #define DBGBCR_LBN_SHIFT 16 225664640baSAndrew Turner #define DBGBCR_LBN (0xf << DBGBCR_LBN_SHIFT) 226664640baSAndrew Turner #define DBGBCR_BT_SHIFT 20 227664640baSAndrew Turner #define DBGBCR_BT (0xf << DBGBCR_BT_SHIFT) 228664640baSAndrew Turner 2294dc81560SAndrew Turner /* DBGBVR<n>_EL1 - Debug Breakpoint Value Registers */ 2304dc81560SAndrew Turner #define DBGBVR_EL1_op0 2 2314dc81560SAndrew Turner #define DBGBVR_EL1_op1 0 2324dc81560SAndrew Turner #define DBGBVR_EL1_CRn 0 2334dc81560SAndrew Turner /* DBGBVR_EL1_CRm indicates which watchpoint this register is for */ 2344dc81560SAndrew Turner #define DBGBVR_EL1_op2 4 2354dc81560SAndrew Turner 236664640baSAndrew Turner /* DBGWCR<n>_EL1 - Debug Watchpoint Control Registers */ 2374dc81560SAndrew Turner #define DBGWCR_EL1_op0 2 2384dc81560SAndrew Turner #define DBGWCR_EL1_op1 0 2394dc81560SAndrew Turner #define DBGWCR_EL1_CRn 0 2404dc81560SAndrew Turner /* DBGWCR_EL1_CRm indicates which watchpoint this register is for */ 2414dc81560SAndrew Turner #define DBGWCR_EL1_op2 7 242664640baSAndrew Turner #define DBGWCR_EN 0x1 243664640baSAndrew Turner #define DBGWCR_PAC_SHIFT 1 244664640baSAndrew Turner #define DBGWCR_PAC (0x3 << DBGWCR_PAC_SHIFT) 245664640baSAndrew Turner #define DBGWCR_PAC_EL1 (0x1 << DBGWCR_PAC_SHIFT) 246664640baSAndrew Turner #define DBGWCR_PAC_EL0 (0x2 << DBGWCR_PAC_SHIFT) 247664640baSAndrew Turner #define DBGWCR_LSC_SHIFT 3 248664640baSAndrew Turner #define DBGWCR_LSC (0x3 << DBGWCR_LSC_SHIFT) 249664640baSAndrew Turner #define DBGWCR_BAS_SHIFT 5 250664640baSAndrew Turner #define DBGWCR_BAS (0xff << DBGWCR_BAS_SHIFT) 251664640baSAndrew Turner #define DBGWCR_HMC_SHIFT 13 252664640baSAndrew Turner #define DBGWCR_HMC (0x1 << DBGWCR_HMC_SHIFT) 253664640baSAndrew Turner #define DBGWCR_SSC_SHIFT 14 254664640baSAndrew Turner #define DBGWCR_SSC (0x3 << DBGWCR_SSC_SHIFT) 255664640baSAndrew Turner #define DBGWCR_LBN_SHIFT 16 256664640baSAndrew Turner #define DBGWCR_LBN (0xf << DBGWCR_LBN_SHIFT) 257664640baSAndrew Turner #define DBGWCR_WT_SHIFT 20 258664640baSAndrew Turner #define DBGWCR_WT (0x1 << DBGWCR_WT_SHIFT) 259664640baSAndrew Turner #define DBGWCR_MASK_SHIFT 24 260664640baSAndrew Turner #define DBGWCR_MASK (0x1f << DBGWCR_MASK_SHIFT) 261664640baSAndrew Turner 2624dc81560SAndrew Turner /* DBGWVR<n>_EL1 - Debug Watchpoint Value Registers */ 2634dc81560SAndrew Turner #define DBGWVR_EL1_op0 2 2644dc81560SAndrew Turner #define DBGWVR_EL1_op1 0 2654dc81560SAndrew Turner #define DBGWVR_EL1_CRn 0 2664dc81560SAndrew Turner /* DBGWVR_EL1_CRm indicates which watchpoint this register is for */ 2674dc81560SAndrew Turner #define DBGWVR_EL1_op2 6 2684dc81560SAndrew Turner 269db278182SWojciech Macek /* DCZID_EL0 - Data Cache Zero ID register */ 270db278182SWojciech Macek #define DCZID_DZP (1 << 4) /* DC ZVA prohibited if non-0 */ 271db278182SWojciech Macek #define DCZID_BS_SHIFT 0 272db278182SWojciech Macek #define DCZID_BS_MASK (0xf << DCZID_BS_SHIFT) 273db278182SWojciech Macek #define DCZID_BS_SIZE(reg) (((reg) & DCZID_BS_MASK) >> DCZID_BS_SHIFT) 274db278182SWojciech Macek 2754dc81560SAndrew Turner /* DBGAUTHSTATUS_EL1 */ 2764dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1 MRS_REG(DBGAUTHSTATUS_EL1) 2774dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op0 2 2784dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op1 0 2794dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_CRn 7 2804dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_CRm 14 2814dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op2 6 2824dc81560SAndrew Turner 2834dc81560SAndrew Turner /* DBGCLAIMCLR_EL1 */ 2844dc81560SAndrew Turner #define DBGCLAIMCLR_EL1 MRS_REG(DBGCLAIMCLR_EL1) 2854dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op0 2 2864dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op1 0 2874dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_CRn 7 2884dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_CRm 9 2894dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op2 6 2904dc81560SAndrew Turner 2914dc81560SAndrew Turner /* DBGCLAIMSET_EL1 */ 2924dc81560SAndrew Turner #define DBGCLAIMSET_EL1 MRS_REG(DBGCLAIMSET_EL1) 2934dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op0 2 2944dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op1 0 2954dc81560SAndrew Turner #define DBGCLAIMSET_EL1_CRn 7 2964dc81560SAndrew Turner #define DBGCLAIMSET_EL1_CRm 8 2974dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op2 6 2984dc81560SAndrew Turner 2994dc81560SAndrew Turner /* DBGPRCR_EL1 */ 3004dc81560SAndrew Turner #define DBGPRCR_EL1 MRS_REG(DBGPRCR_EL1) 3014dc81560SAndrew Turner #define DBGPRCR_EL1_op0 2 3024dc81560SAndrew Turner #define DBGPRCR_EL1_op1 0 3034dc81560SAndrew Turner #define DBGPRCR_EL1_CRn 1 3044dc81560SAndrew Turner #define DBGPRCR_EL1_CRm 4 3054dc81560SAndrew Turner #define DBGPRCR_EL1_op2 4 3064dc81560SAndrew Turner 307e5acd89cSAndrew Turner /* ESR_ELx */ 3083a1c1a30SAndrew Turner #define ESR_ELx_ISS_MASK 0x01ffffff 3096e2caba7SDmitry Chagin #define ISS_FP_TFV_SHIFT 23 3106e2caba7SDmitry Chagin #define ISS_FP_TFV (0x01 << ISS_FP_TFV_SHIFT) 3116e2caba7SDmitry Chagin #define ISS_FP_IOF 0x01 3126e2caba7SDmitry Chagin #define ISS_FP_DZF 0x02 3136e2caba7SDmitry Chagin #define ISS_FP_OFF 0x04 3146e2caba7SDmitry Chagin #define ISS_FP_UFF 0x08 3156e2caba7SDmitry Chagin #define ISS_FP_IXF 0x10 3166e2caba7SDmitry Chagin #define ISS_FP_IDF 0x80 317e5acd89cSAndrew Turner #define ISS_INSN_FnV (0x01 << 10) 318e5acd89cSAndrew Turner #define ISS_INSN_EA (0x01 << 9) 319e5acd89cSAndrew Turner #define ISS_INSN_S1PTW (0x01 << 7) 320e5acd89cSAndrew Turner #define ISS_INSN_IFSC_MASK (0x1f << 0) 3213a1c1a30SAndrew Turner 3223a1c1a30SAndrew Turner #define ISS_MSR_DIR_SHIFT 0 3233a1c1a30SAndrew Turner #define ISS_MSR_DIR (0x01 << ISS_MSR_DIR_SHIFT) 3243a1c1a30SAndrew Turner #define ISS_MSR_Rt_SHIFT 5 3253a1c1a30SAndrew Turner #define ISS_MSR_Rt_MASK (0x1f << ISS_MSR_Rt_SHIFT) 3263a1c1a30SAndrew Turner #define ISS_MSR_Rt(x) (((x) & ISS_MSR_Rt_MASK) >> ISS_MSR_Rt_SHIFT) 3273a1c1a30SAndrew Turner #define ISS_MSR_CRm_SHIFT 1 3283a1c1a30SAndrew Turner #define ISS_MSR_CRm_MASK (0xf << ISS_MSR_CRm_SHIFT) 3293a1c1a30SAndrew Turner #define ISS_MSR_CRm(x) (((x) & ISS_MSR_CRm_MASK) >> ISS_MSR_CRm_SHIFT) 3303a1c1a30SAndrew Turner #define ISS_MSR_CRn_SHIFT 10 3313a1c1a30SAndrew Turner #define ISS_MSR_CRn_MASK (0xf << ISS_MSR_CRn_SHIFT) 3323a1c1a30SAndrew Turner #define ISS_MSR_CRn(x) (((x) & ISS_MSR_CRn_MASK) >> ISS_MSR_CRn_SHIFT) 3333a1c1a30SAndrew Turner #define ISS_MSR_OP1_SHIFT 14 3343a1c1a30SAndrew Turner #define ISS_MSR_OP1_MASK (0x7 << ISS_MSR_OP1_SHIFT) 3353a1c1a30SAndrew Turner #define ISS_MSR_OP1(x) (((x) & ISS_MSR_OP1_MASK) >> ISS_MSR_OP1_SHIFT) 3363a1c1a30SAndrew Turner #define ISS_MSR_OP2_SHIFT 17 3373a1c1a30SAndrew Turner #define ISS_MSR_OP2_MASK (0x7 << ISS_MSR_OP2_SHIFT) 3383a1c1a30SAndrew Turner #define ISS_MSR_OP2(x) (((x) & ISS_MSR_OP2_MASK) >> ISS_MSR_OP2_SHIFT) 3393a1c1a30SAndrew Turner #define ISS_MSR_OP0_SHIFT 20 3403a1c1a30SAndrew Turner #define ISS_MSR_OP0_MASK (0x3 << ISS_MSR_OP0_SHIFT) 3413a1c1a30SAndrew Turner #define ISS_MSR_OP0(x) (((x) & ISS_MSR_OP0_MASK) >> ISS_MSR_OP0_SHIFT) 3423a1c1a30SAndrew Turner #define ISS_MSR_REG_MASK \ 3433a1c1a30SAndrew Turner (ISS_MSR_OP0_MASK | ISS_MSR_OP2_MASK | ISS_MSR_OP1_MASK | \ 3443a1c1a30SAndrew Turner ISS_MSR_CRn_MASK | ISS_MSR_CRm_MASK) 3453a1c1a30SAndrew Turner 3463a1c1a30SAndrew Turner #define ISS_DATA_ISV_SHIFT 24 3473a1c1a30SAndrew Turner #define ISS_DATA_ISV (0x01 << ISS_DATA_ISV_SHIFT) 3483a1c1a30SAndrew Turner #define ISS_DATA_SAS_SHIFT 22 3493a1c1a30SAndrew Turner #define ISS_DATA_SAS_MASK (0x03 << ISS_DATA_SAS_SHIFT) 3503a1c1a30SAndrew Turner #define ISS_DATA_SSE_SHIFT 21 3513a1c1a30SAndrew Turner #define ISS_DATA_SSE (0x01 << ISS_DATA_SSE_SHIFT) 3523a1c1a30SAndrew Turner #define ISS_DATA_SRT_SHIFT 16 3533a1c1a30SAndrew Turner #define ISS_DATA_SRT_MASK (0x1f << ISS_DATA_SRT_SHIFT) 354e5acd89cSAndrew Turner #define ISS_DATA_SF (0x01 << 15) 355e5acd89cSAndrew Turner #define ISS_DATA_AR (0x01 << 14) 356e5acd89cSAndrew Turner #define ISS_DATA_FnV (0x01 << 10) 357a9da8477SMark Johnston #define ISS_DATA_EA (0x01 << 9) 358a9da8477SMark Johnston #define ISS_DATA_CM (0x01 << 8) 359a9da8477SMark Johnston #define ISS_DATA_S1PTW (0x01 << 7) 3603a1c1a30SAndrew Turner #define ISS_DATA_WnR_SHIFT 6 3613a1c1a30SAndrew Turner #define ISS_DATA_WnR (0x01 << ISS_DATA_WnR_SHIFT) 362a70475caSAndrew Turner #define ISS_DATA_DFSC_MASK (0x3f << 0) 36363512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L0 (0x00 << 0) 36463512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L1 (0x01 << 0) 36563512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L2 (0x02 << 0) 36663512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L3 (0x03 << 0) 36763512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L0 (0x04 << 0) 36863512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L1 (0x05 << 0) 36963512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L2 (0x06 << 0) 37063512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L3 (0x07 << 0) 37163512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L1 (0x09 << 0) 37263512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L2 (0x0a << 0) 37363512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L3 (0x0b << 0) 37463512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L1 (0x0d << 0) 37563512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L2 (0x0e << 0) 37663512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L3 (0x0f << 0) 37763512a12SAndrew Turner #define ISS_DATA_DFSC_EXT (0x10 << 0) 37863512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L0 (0x14 << 0) 37963512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L1 (0x15 << 0) 38063512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L2 (0x16 << 0) 38163512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L3 (0x17 << 0) 38263512a12SAndrew Turner #define ISS_DATA_DFSC_ECC (0x18 << 0) 38363512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L0 (0x1c << 0) 38463512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L1 (0x1d << 0) 38563512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L2 (0x1e << 0) 38663512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L3 (0x1f << 0) 38763512a12SAndrew Turner #define ISS_DATA_DFSC_ALIGN (0x21 << 0) 388dc836c65SAndrew Turner #define ISS_DATA_DFSC_TLB_CONFLICT (0x30 << 0) 389e5acd89cSAndrew Turner #define ESR_ELx_IL (0x01 << 25) 390e5acd89cSAndrew Turner #define ESR_ELx_EC_SHIFT 26 391e5acd89cSAndrew Turner #define ESR_ELx_EC_MASK (0x3f << 26) 392e5acd89cSAndrew Turner #define ESR_ELx_EXCEPTION(esr) (((esr) & ESR_ELx_EC_MASK) >> ESR_ELx_EC_SHIFT) 393e5acd89cSAndrew Turner #define EXCP_UNKNOWN 0x00 /* Unkwn exception */ 3943a1c1a30SAndrew Turner #define EXCP_TRAP_WFI_WFE 0x01 /* Trapped WFI or WFE */ 395e5acd89cSAndrew Turner #define EXCP_FP_SIMD 0x07 /* VFP/SIMD trap */ 396e5acd89cSAndrew Turner #define EXCP_ILL_STATE 0x0e /* Illegal execution state */ 3977af24ff7SEd Schouten #define EXCP_SVC32 0x11 /* SVC trap for AArch32 */ 3987af24ff7SEd Schouten #define EXCP_SVC64 0x15 /* SVC trap for AArch64 */ 3993a1c1a30SAndrew Turner #define EXCP_HVC 0x16 /* HVC trap */ 400e5acd89cSAndrew Turner #define EXCP_MSR 0x18 /* MSR/MRS trap */ 401ffa5bf8bSAndrew Turner #define EXCP_SVE 0x19 /* SVE trap */ 40285b7c566SAndrew Turner #define EXCP_FPAC 0x1c /* Faulting PAC trap */ 403e5acd89cSAndrew Turner #define EXCP_INSN_ABORT_L 0x20 /* Instruction abort, from lower EL */ 404e5acd89cSAndrew Turner #define EXCP_INSN_ABORT 0x21 /* Instruction abort, from same EL */ 405e5acd89cSAndrew Turner #define EXCP_PC_ALIGN 0x22 /* PC alignment fault */ 406e5acd89cSAndrew Turner #define EXCP_DATA_ABORT_L 0x24 /* Data abort, from lower EL */ 407e5acd89cSAndrew Turner #define EXCP_DATA_ABORT 0x25 /* Data abort, from same EL */ 408e5acd89cSAndrew Turner #define EXCP_SP_ALIGN 0x26 /* SP slignment fault */ 409e5acd89cSAndrew Turner #define EXCP_TRAP_FP 0x2c /* Trapped FP exception */ 410e5acd89cSAndrew Turner #define EXCP_SERROR 0x2f /* SError interrupt */ 41105f39d1aSAndrew Turner #define EXCP_BRKPT_EL0 0x30 /* Hardware breakpoint, from same EL */ 41287e19994SAndrew Turner #define EXCP_SOFTSTP_EL0 0x32 /* Software Step, from lower EL */ 413e5acd89cSAndrew Turner #define EXCP_SOFTSTP_EL1 0x33 /* Software Step, from same EL */ 414bd012c71SMitchell Horne #define EXCP_WATCHPT_EL0 0x34 /* Watchpoint, from lower EL */ 415e5acd89cSAndrew Turner #define EXCP_WATCHPT_EL1 0x35 /* Watchpoint, from same EL */ 41627340501SOlivier Houchard #define EXCP_BRKPT_32 0x38 /* 32bits breakpoint */ 417e5acd89cSAndrew Turner #define EXCP_BRK 0x3c /* Breakpoint */ 418e5acd89cSAndrew Turner 41942cb216aSZbigniew Bodek /* ICC_CTLR_EL1 */ 42042cb216aSZbigniew Bodek #define ICC_CTLR_EL1_EOIMODE (1U << 1) 42142cb216aSZbigniew Bodek 42242cb216aSZbigniew Bodek /* ICC_IAR1_EL1 */ 42342cb216aSZbigniew Bodek #define ICC_IAR1_EL1_SPUR (0x03ff) 42442cb216aSZbigniew Bodek 42542cb216aSZbigniew Bodek /* ICC_IGRPEN0_EL1 */ 42642cb216aSZbigniew Bodek #define ICC_IGRPEN0_EL1_EN (1U << 0) 42742cb216aSZbigniew Bodek 42842cb216aSZbigniew Bodek /* ICC_PMR_EL1 */ 42942cb216aSZbigniew Bodek #define ICC_PMR_EL1_PRIO_MASK (0xFFUL) 43042cb216aSZbigniew Bodek 4318133eda9SZbigniew Bodek /* ICC_SGI1R_EL1 */ 4324dc81560SAndrew Turner #define ICC_SGI1R_EL1 MRS_REG(ICC_SGI1R_EL1) 4334dc81560SAndrew Turner #define ICC_SGI1R_EL1_op0 3 4344dc81560SAndrew Turner #define ICC_SGI1R_EL1_op1 0 4354dc81560SAndrew Turner #define ICC_SGI1R_EL1_CRn 12 4364dc81560SAndrew Turner #define ICC_SGI1R_EL1_CRm 11 4374dc81560SAndrew Turner #define ICC_SGI1R_EL1_op2 5 4388133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_TL_MASK 0xffffUL 4398133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF1_SHIFT 16 4408133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_SGIID_SHIFT 24 4418133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF2_SHIFT 32 4428133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF3_SHIFT 48 4438133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_SGIID_MASK 0xfUL 4448133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_IRM (0x1UL << 40) 4458133eda9SZbigniew Bodek 44642cb216aSZbigniew Bodek /* ICC_SRE_EL1 */ 44742cb216aSZbigniew Bodek #define ICC_SRE_EL1_SRE (1U << 0) 44842cb216aSZbigniew Bodek 4495f0a5fefSAndrew Turner /* ID_AA64DFR0_EL1 */ 45010f6680fSAndrew Turner #define ID_AA64DFR0_EL1 MRS_REG(ID_AA64DFR0_EL1) 45110f6680fSAndrew Turner #define ID_AA64DFR0_EL1_op0 0x3 45210f6680fSAndrew Turner #define ID_AA64DFR0_EL1_op1 0x0 45310f6680fSAndrew Turner #define ID_AA64DFR0_EL1_CRn 0x0 45410f6680fSAndrew Turner #define ID_AA64DFR0_EL1_CRm 0x5 45510f6680fSAndrew Turner #define ID_AA64DFR0_EL1_op2 0x0 456f1fbf9c3SAndrew Turner #define ID_AA64DFR0_DebugVer_SHIFT 0 457f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_MASK (UL(0xf) << ID_AA64DFR0_DebugVer_SHIFT) 45844e446a1SAndrew Turner #define ID_AA64DFR0_DebugVer_VAL(x) ((x) & ID_AA64DFR0_DebugVer_MASK) 459f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8 (UL(0x6) << ID_AA64DFR0_DebugVer_SHIFT) 460f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8_VHE (UL(0x7) << ID_AA64DFR0_DebugVer_SHIFT) 461f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8_2 (UL(0x8) << ID_AA64DFR0_DebugVer_SHIFT) 462a7b05eb1SAndrew Turner #define ID_AA64DFR0_DebugVer_8_4 (UL(0x9) << ID_AA64DFR0_DebugVer_SHIFT) 463f1fbf9c3SAndrew Turner #define ID_AA64DFR0_TraceVer_SHIFT 4 464f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_MASK (UL(0xf) << ID_AA64DFR0_TraceVer_SHIFT) 46544e446a1SAndrew Turner #define ID_AA64DFR0_TraceVer_VAL(x) ((x) & ID_AA64DFR0_TraceVer_MASK) 466f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_NONE (UL(0x0) << ID_AA64DFR0_TraceVer_SHIFT) 467f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_IMPL (UL(0x1) << ID_AA64DFR0_TraceVer_SHIFT) 468f1fbf9c3SAndrew Turner #define ID_AA64DFR0_PMUVer_SHIFT 8 469f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_MASK (UL(0xf) << ID_AA64DFR0_PMUVer_SHIFT) 47044e446a1SAndrew Turner #define ID_AA64DFR0_PMUVer_VAL(x) ((x) & ID_AA64DFR0_PMUVer_MASK) 471f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_NONE (UL(0x0) << ID_AA64DFR0_PMUVer_SHIFT) 472f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_3 (UL(0x1) << ID_AA64DFR0_PMUVer_SHIFT) 473f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_3_1 (UL(0x4) << ID_AA64DFR0_PMUVer_SHIFT) 474a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMUVer_3_4 (UL(0x5) << ID_AA64DFR0_PMUVer_SHIFT) 475a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMUVer_3_5 (UL(0x6) << ID_AA64DFR0_PMUVer_SHIFT) 476f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_IMPL (UL(0xf) << ID_AA64DFR0_PMUVer_SHIFT) 477f1fbf9c3SAndrew Turner #define ID_AA64DFR0_BRPs_SHIFT 12 478f31c5955SAndrew Turner #define ID_AA64DFR0_BRPs_MASK (UL(0xf) << ID_AA64DFR0_BRPs_SHIFT) 47944e446a1SAndrew Turner #define ID_AA64DFR0_BRPs_VAL(x) \ 480f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_BRPs_SHIFT) & 0xf) + 1) 481f1fbf9c3SAndrew Turner #define ID_AA64DFR0_WRPs_SHIFT 20 482f31c5955SAndrew Turner #define ID_AA64DFR0_WRPs_MASK (UL(0xf) << ID_AA64DFR0_WRPs_SHIFT) 48344e446a1SAndrew Turner #define ID_AA64DFR0_WRPs_VAL(x) \ 484f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_WRPs_SHIFT) & 0xf) + 1) 485f1fbf9c3SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_SHIFT 28 486f31c5955SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_MASK (UL(0xf) << ID_AA64DFR0_CTX_CMPs_SHIFT) 48744e446a1SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_VAL(x) \ 488f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_CTX_CMPs_SHIFT) & 0xf) + 1) 489f1fbf9c3SAndrew Turner #define ID_AA64DFR0_PMSVer_SHIFT 32 490f31c5955SAndrew Turner #define ID_AA64DFR0_PMSVer_MASK (UL(0xf) << ID_AA64DFR0_PMSVer_SHIFT) 49144e446a1SAndrew Turner #define ID_AA64DFR0_PMSVer_VAL(x) ((x) & ID_AA64DFR0_PMSVer_MASK) 492f31c5955SAndrew Turner #define ID_AA64DFR0_PMSVer_NONE (UL(0x0) << ID_AA64DFR0_PMSVer_SHIFT) 493a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMSVer_SPE (UL(0x1) << ID_AA64DFR0_PMSVer_SHIFT) 494a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_8_3 (UL(0x2) << ID_AA64DFR0_PMSVer_SHIFT) 495a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_SHIFT 36 496a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_MASK (UL(0xf) << ID_AA64DFR0_DoubleLock_SHIFT) 497a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_VAL(x) ((x) & ID_AA64DFR0_DoubleLock_MASK) 498a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_IMPL (UL(0x0) << ID_AA64DFR0_DoubleLock_SHIFT) 499a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_NONE (UL(0xf) << ID_AA64DFR0_DoubleLock_SHIFT) 500a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_SHIFT 40 501a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_MASK (UL(0xf) << ID_AA64DFR0_TraceFilt_SHIFT) 502a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_VAL(x) ((x) & ID_AA64DFR0_TraceFilt_MASK) 503a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_NONE (UL(0x0) << ID_AA64DFR0_TraceFilt_SHIFT) 504a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_8_4 (UL(0x1) << ID_AA64DFR0_TraceFilt_SHIFT) 5055f0a5fefSAndrew Turner 5065f0a5fefSAndrew Turner /* ID_AA64ISAR0_EL1 */ 50710f6680fSAndrew Turner #define ID_AA64ISAR0_EL1 MRS_REG(ID_AA64ISAR0_EL1) 50810f6680fSAndrew Turner #define ID_AA64ISAR0_EL1_op0 0x3 50910f6680fSAndrew Turner #define ID_AA64ISAR0_EL1_op1 0x0 51010f6680fSAndrew Turner #define ID_AA64ISAR0_EL1_CRn 0x0 51110f6680fSAndrew Turner #define ID_AA64ISAR0_EL1_CRm 0x6 51210f6680fSAndrew Turner #define ID_AA64ISAR0_EL1_op2 0x0 5135f0a5fefSAndrew Turner #define ID_AA64ISAR0_AES_SHIFT 4 514f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_MASK (UL(0xf) << ID_AA64ISAR0_AES_SHIFT) 51544e446a1SAndrew Turner #define ID_AA64ISAR0_AES_VAL(x) ((x) & ID_AA64ISAR0_AES_MASK) 516f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_NONE (UL(0x0) << ID_AA64ISAR0_AES_SHIFT) 517f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_BASE (UL(0x1) << ID_AA64ISAR0_AES_SHIFT) 518f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_PMULL (UL(0x2) << ID_AA64ISAR0_AES_SHIFT) 5195f0a5fefSAndrew Turner #define ID_AA64ISAR0_SHA1_SHIFT 8 520f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_MASK (UL(0xf) << ID_AA64ISAR0_SHA1_SHIFT) 52144e446a1SAndrew Turner #define ID_AA64ISAR0_SHA1_VAL(x) ((x) & ID_AA64ISAR0_SHA1_MASK) 522f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_NONE (UL(0x0) << ID_AA64ISAR0_SHA1_SHIFT) 523f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_BASE (UL(0x1) << ID_AA64ISAR0_SHA1_SHIFT) 5245f0a5fefSAndrew Turner #define ID_AA64ISAR0_SHA2_SHIFT 12 525f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_MASK (UL(0xf) << ID_AA64ISAR0_SHA2_SHIFT) 52644e446a1SAndrew Turner #define ID_AA64ISAR0_SHA2_VAL(x) ((x) & ID_AA64ISAR0_SHA2_MASK) 527f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_NONE (UL(0x0) << ID_AA64ISAR0_SHA2_SHIFT) 528f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_BASE (UL(0x1) << ID_AA64ISAR0_SHA2_SHIFT) 529f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_512 (UL(0x2) << ID_AA64ISAR0_SHA2_SHIFT) 5305f0a5fefSAndrew Turner #define ID_AA64ISAR0_CRC32_SHIFT 16 531f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_MASK (UL(0xf) << ID_AA64ISAR0_CRC32_SHIFT) 53244e446a1SAndrew Turner #define ID_AA64ISAR0_CRC32_VAL(x) ((x) & ID_AA64ISAR0_CRC32_MASK) 533f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_NONE (UL(0x0) << ID_AA64ISAR0_CRC32_SHIFT) 534f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_BASE (UL(0x1) << ID_AA64ISAR0_CRC32_SHIFT) 535f1fbf9c3SAndrew Turner #define ID_AA64ISAR0_Atomic_SHIFT 20 536f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_MASK (UL(0xf) << ID_AA64ISAR0_Atomic_SHIFT) 53744e446a1SAndrew Turner #define ID_AA64ISAR0_Atomic_VAL(x) ((x) & ID_AA64ISAR0_Atomic_MASK) 538f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_NONE (UL(0x0) << ID_AA64ISAR0_Atomic_SHIFT) 539f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_IMPL (UL(0x2) << ID_AA64ISAR0_Atomic_SHIFT) 5402bafd72fSAndrew Turner #define ID_AA64ISAR0_RDM_SHIFT 28 541f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_MASK (UL(0xf) << ID_AA64ISAR0_RDM_SHIFT) 54244e446a1SAndrew Turner #define ID_AA64ISAR0_RDM_VAL(x) ((x) & ID_AA64ISAR0_RDM_MASK) 543f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_NONE (UL(0x0) << ID_AA64ISAR0_RDM_SHIFT) 544f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_IMPL (UL(0x1) << ID_AA64ISAR0_RDM_SHIFT) 545ca289945SAndrew Turner #define ID_AA64ISAR0_SHA3_SHIFT 32 546f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_MASK (UL(0xf) << ID_AA64ISAR0_SHA3_SHIFT) 54744e446a1SAndrew Turner #define ID_AA64ISAR0_SHA3_VAL(x) ((x) & ID_AA64ISAR0_SHA3_MASK) 548f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_NONE (UL(0x0) << ID_AA64ISAR0_SHA3_SHIFT) 549f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_IMPL (UL(0x1) << ID_AA64ISAR0_SHA3_SHIFT) 550ca289945SAndrew Turner #define ID_AA64ISAR0_SM3_SHIFT 36 551f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_MASK (UL(0xf) << ID_AA64ISAR0_SM3_SHIFT) 55244e446a1SAndrew Turner #define ID_AA64ISAR0_SM3_VAL(x) ((x) & ID_AA64ISAR0_SM3_MASK) 553f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_NONE (UL(0x0) << ID_AA64ISAR0_SM3_SHIFT) 554f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_IMPL (UL(0x1) << ID_AA64ISAR0_SM3_SHIFT) 555ca289945SAndrew Turner #define ID_AA64ISAR0_SM4_SHIFT 40 556f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_MASK (UL(0xf) << ID_AA64ISAR0_SM4_SHIFT) 55744e446a1SAndrew Turner #define ID_AA64ISAR0_SM4_VAL(x) ((x) & ID_AA64ISAR0_SM4_MASK) 558f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_NONE (UL(0x0) << ID_AA64ISAR0_SM4_SHIFT) 559f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_IMPL (UL(0x1) << ID_AA64ISAR0_SM4_SHIFT) 5605bb9cd61SAndrew Turner #define ID_AA64ISAR0_DP_SHIFT 44 561f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_MASK (UL(0xf) << ID_AA64ISAR0_DP_SHIFT) 56244e446a1SAndrew Turner #define ID_AA64ISAR0_DP_VAL(x) ((x) & ID_AA64ISAR0_DP_MASK) 563f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_NONE (UL(0x0) << ID_AA64ISAR0_DP_SHIFT) 564f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_IMPL (UL(0x1) << ID_AA64ISAR0_DP_SHIFT) 56561949736SMitchell Horne #define ID_AA64ISAR0_FHM_SHIFT 48 56661949736SMitchell Horne #define ID_AA64ISAR0_FHM_MASK (UL(0xf) << ID_AA64ISAR0_FHM_SHIFT) 56761949736SMitchell Horne #define ID_AA64ISAR0_FHM_VAL(x) ((x) & ID_AA64ISAR0_FHM_MASK) 56861949736SMitchell Horne #define ID_AA64ISAR0_FHM_NONE (UL(0x0) << ID_AA64ISAR0_FHM_SHIFT) 56961949736SMitchell Horne #define ID_AA64ISAR0_FHM_IMPL (UL(0x1) << ID_AA64ISAR0_FHM_SHIFT) 57061949736SMitchell Horne #define ID_AA64ISAR0_TS_SHIFT 52 57161949736SMitchell Horne #define ID_AA64ISAR0_TS_MASK (UL(0xf) << ID_AA64ISAR0_TS_SHIFT) 57261949736SMitchell Horne #define ID_AA64ISAR0_TS_VAL(x) ((x) & ID_AA64ISAR0_TS_MASK) 57361949736SMitchell Horne #define ID_AA64ISAR0_TS_NONE (UL(0x0) << ID_AA64ISAR0_TS_SHIFT) 57461949736SMitchell Horne #define ID_AA64ISAR0_TS_CondM_8_4 (UL(0x1) << ID_AA64ISAR0_TS_SHIFT) 57561949736SMitchell Horne #define ID_AA64ISAR0_TS_CondM_8_5 (UL(0x2) << ID_AA64ISAR0_TS_SHIFT) 57661949736SMitchell Horne #define ID_AA64ISAR0_TLB_SHIFT 56 57761949736SMitchell Horne #define ID_AA64ISAR0_TLB_MASK (UL(0xf) << ID_AA64ISAR0_TLB_SHIFT) 57861949736SMitchell Horne #define ID_AA64ISAR0_TLB_VAL(x) ((x) & ID_AA64ISAR0_TLB_MASK) 57961949736SMitchell Horne #define ID_AA64ISAR0_TLB_NONE (UL(0x0) << ID_AA64ISAR0_TLB_SHIFT) 58061949736SMitchell Horne #define ID_AA64ISAR0_TLB_TLBIOS (UL(0x1) << ID_AA64ISAR0_TLB_SHIFT) 58161949736SMitchell Horne #define ID_AA64ISAR0_TLB_TLBIOSR (UL(0x2) << ID_AA64ISAR0_TLB_SHIFT) 58261949736SMitchell Horne #define ID_AA64ISAR0_RNDR_SHIFT 60 58361949736SMitchell Horne #define ID_AA64ISAR0_RNDR_MASK (UL(0xf) << ID_AA64ISAR0_RNDR_SHIFT) 58461949736SMitchell Horne #define ID_AA64ISAR0_RNDR_VAL(x) ((x) & ID_AA64ISAR0_RNDR_MASK) 58561949736SMitchell Horne #define ID_AA64ISAR0_RNDR_NONE (UL(0x0) << ID_AA64ISAR0_RNDR_SHIFT) 58661949736SMitchell Horne #define ID_AA64ISAR0_RNDR_IMPL (UL(0x1) << ID_AA64ISAR0_RNDR_SHIFT) 5875f0a5fefSAndrew Turner 588f45dc694SAndrew Turner /* ID_AA64ISAR1_EL1 */ 58910f6680fSAndrew Turner #define ID_AA64ISAR1_EL1 MRS_REG(ID_AA64ISAR1_EL1) 59010f6680fSAndrew Turner #define ID_AA64ISAR1_EL1_op0 0x3 59110f6680fSAndrew Turner #define ID_AA64ISAR1_EL1_op1 0x0 59210f6680fSAndrew Turner #define ID_AA64ISAR1_EL1_CRn 0x0 59310f6680fSAndrew Turner #define ID_AA64ISAR1_EL1_CRm 0x6 59410f6680fSAndrew Turner #define ID_AA64ISAR1_EL1_op2 0x1 5951a2e5c00SAndrew Turner #define ID_AA64ISAR1_DPB_SHIFT 0 596f31c5955SAndrew Turner #define ID_AA64ISAR1_DPB_MASK (UL(0xf) << ID_AA64ISAR1_DPB_SHIFT) 59744e446a1SAndrew Turner #define ID_AA64ISAR1_DPB_VAL(x) ((x) & ID_AA64ISAR1_DPB_MASK) 598f31c5955SAndrew Turner #define ID_AA64ISAR1_DPB_NONE (UL(0x0) << ID_AA64ISAR1_DPB_SHIFT) 59961949736SMitchell Horne #define ID_AA64ISAR1_DPB_DCCVAP (UL(0x1) << ID_AA64ISAR1_DPB_SHIFT) 60061949736SMitchell Horne #define ID_AA64ISAR1_DPB_DCCVADP (UL(0x2) << ID_AA64ISAR1_DPB_SHIFT) 601ca289945SAndrew Turner #define ID_AA64ISAR1_APA_SHIFT 4 602f31c5955SAndrew Turner #define ID_AA64ISAR1_APA_MASK (UL(0xf) << ID_AA64ISAR1_APA_SHIFT) 60344e446a1SAndrew Turner #define ID_AA64ISAR1_APA_VAL(x) ((x) & ID_AA64ISAR1_APA_MASK) 604f31c5955SAndrew Turner #define ID_AA64ISAR1_APA_NONE (UL(0x0) << ID_AA64ISAR1_APA_SHIFT) 605a7b05eb1SAndrew Turner #define ID_AA64ISAR1_APA_PAC (UL(0x1) << ID_AA64ISAR1_APA_SHIFT) 606a7b05eb1SAndrew Turner #define ID_AA64ISAR1_APA_EPAC (UL(0x2) << ID_AA64ISAR1_APA_SHIFT) 607e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_EPAC2 (UL(0x3) << ID_AA64ISAR1_APA_SHIFT) 608e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_FPAC (UL(0x4) << ID_AA64ISAR1_APA_SHIFT) 609e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR1_APA_SHIFT) 610ca289945SAndrew Turner #define ID_AA64ISAR1_API_SHIFT 8 611f31c5955SAndrew Turner #define ID_AA64ISAR1_API_MASK (UL(0xf) << ID_AA64ISAR1_API_SHIFT) 61244e446a1SAndrew Turner #define ID_AA64ISAR1_API_VAL(x) ((x) & ID_AA64ISAR1_API_MASK) 613f31c5955SAndrew Turner #define ID_AA64ISAR1_API_NONE (UL(0x0) << ID_AA64ISAR1_API_SHIFT) 614a7b05eb1SAndrew Turner #define ID_AA64ISAR1_API_PAC (UL(0x1) << ID_AA64ISAR1_API_SHIFT) 615a7b05eb1SAndrew Turner #define ID_AA64ISAR1_API_EPAC (UL(0x2) << ID_AA64ISAR1_API_SHIFT) 616e3f70874SAndrew Turner #define ID_AA64ISAR1_API_EPAC2 (UL(0x3) << ID_AA64ISAR1_API_SHIFT) 617e3f70874SAndrew Turner #define ID_AA64ISAR1_API_FPAC (UL(0x4) << ID_AA64ISAR1_API_SHIFT) 618e3f70874SAndrew Turner #define ID_AA64ISAR1_API_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR1_API_SHIFT) 619ca289945SAndrew Turner #define ID_AA64ISAR1_JSCVT_SHIFT 12 620f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_MASK (UL(0xf) << ID_AA64ISAR1_JSCVT_SHIFT) 62144e446a1SAndrew Turner #define ID_AA64ISAR1_JSCVT_VAL(x) ((x) & ID_AA64ISAR1_JSCVT_MASK) 622f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_NONE (UL(0x0) << ID_AA64ISAR1_JSCVT_SHIFT) 623f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_IMPL (UL(0x1) << ID_AA64ISAR1_JSCVT_SHIFT) 624ca289945SAndrew Turner #define ID_AA64ISAR1_FCMA_SHIFT 16 625f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_MASK (UL(0xf) << ID_AA64ISAR1_FCMA_SHIFT) 62644e446a1SAndrew Turner #define ID_AA64ISAR1_FCMA_VAL(x) ((x) & ID_AA64ISAR1_FCMA_MASK) 627f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_NONE (UL(0x0) << ID_AA64ISAR1_FCMA_SHIFT) 628f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_IMPL (UL(0x1) << ID_AA64ISAR1_FCMA_SHIFT) 629ca289945SAndrew Turner #define ID_AA64ISAR1_LRCPC_SHIFT 20 630f31c5955SAndrew Turner #define ID_AA64ISAR1_LRCPC_MASK (UL(0xf) << ID_AA64ISAR1_LRCPC_SHIFT) 63144e446a1SAndrew Turner #define ID_AA64ISAR1_LRCPC_VAL(x) ((x) & ID_AA64ISAR1_LRCPC_MASK) 632f31c5955SAndrew Turner #define ID_AA64ISAR1_LRCPC_NONE (UL(0x0) << ID_AA64ISAR1_LRCPC_SHIFT) 63361949736SMitchell Horne #define ID_AA64ISAR1_LRCPC_RCPC_8_3 (UL(0x1) << ID_AA64ISAR1_LRCPC_SHIFT) 63461949736SMitchell Horne #define ID_AA64ISAR1_LRCPC_RCPC_8_4 (UL(0x2) << ID_AA64ISAR1_LRCPC_SHIFT) 635ca289945SAndrew Turner #define ID_AA64ISAR1_GPA_SHIFT 24 636f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_MASK (UL(0xf) << ID_AA64ISAR1_GPA_SHIFT) 63744e446a1SAndrew Turner #define ID_AA64ISAR1_GPA_VAL(x) ((x) & ID_AA64ISAR1_GPA_MASK) 638f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_NONE (UL(0x0) << ID_AA64ISAR1_GPA_SHIFT) 639f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_IMPL (UL(0x1) << ID_AA64ISAR1_GPA_SHIFT) 640ca289945SAndrew Turner #define ID_AA64ISAR1_GPI_SHIFT 28 641f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_MASK (UL(0xf) << ID_AA64ISAR1_GPI_SHIFT) 64244e446a1SAndrew Turner #define ID_AA64ISAR1_GPI_VAL(x) ((x) & ID_AA64ISAR1_GPI_MASK) 643f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_NONE (UL(0x0) << ID_AA64ISAR1_GPI_SHIFT) 644f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_IMPL (UL(0x1) << ID_AA64ISAR1_GPI_SHIFT) 64561949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_SHIFT 32 64661949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_MASK (UL(0xf) << ID_AA64ISAR1_FRINTTS_SHIFT) 64761949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_VAL(x) ((x) & ID_AA64ISAR1_FRINTTS_MASK) 64861949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_NONE (UL(0x0) << ID_AA64ISAR1_FRINTTS_SHIFT) 64961949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_IMPL (UL(0x1) << ID_AA64ISAR1_FRINTTS_SHIFT) 65061949736SMitchell Horne #define ID_AA64ISAR1_SB_SHIFT 36 65161949736SMitchell Horne #define ID_AA64ISAR1_SB_MASK (UL(0xf) << ID_AA64ISAR1_SB_SHIFT) 65261949736SMitchell Horne #define ID_AA64ISAR1_SB_VAL(x) ((x) & ID_AA64ISAR1_SB_MASK) 65361949736SMitchell Horne #define ID_AA64ISAR1_SB_NONE (UL(0x0) << ID_AA64ISAR1_SB_SHIFT) 65461949736SMitchell Horne #define ID_AA64ISAR1_SB_IMPL (UL(0x1) << ID_AA64ISAR1_SB_SHIFT) 65561949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_SHIFT 40 65661949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_MASK (UL(0xf) << ID_AA64ISAR1_SPECRES_SHIFT) 65761949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_VAL(x) ((x) & ID_AA64ISAR1_SPECRES_MASK) 65861949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_NONE (UL(0x0) << ID_AA64ISAR1_SPECRES_SHIFT) 65961949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_IMPL (UL(0x1) << ID_AA64ISAR1_SPECRES_SHIFT) 66061949736SMitchell Horne #define ID_AA64ISAR1_BF16_SHIFT 44 66161949736SMitchell Horne #define ID_AA64ISAR1_BF16_MASK (UL(0xf) << ID_AA64ISAR1_BF16_SHIFT) 66261949736SMitchell Horne #define ID_AA64ISAR1_BF16_VAL(x) ((x) & ID_AA64ISAR1_BF16_MASK) 66361949736SMitchell Horne #define ID_AA64ISAR1_BF16_NONE (UL(0x0) << ID_AA64ISAR1_BF16_SHIFT) 66461949736SMitchell Horne #define ID_AA64ISAR1_BF16_IMPL (UL(0x1) << ID_AA64ISAR1_BF16_SHIFT) 66561949736SMitchell Horne #define ID_AA64ISAR1_DGH_SHIFT 48 66661949736SMitchell Horne #define ID_AA64ISAR1_DGH_MASK (UL(0xf) << ID_AA64ISAR1_DGH_SHIFT) 66761949736SMitchell Horne #define ID_AA64ISAR1_DGH_VAL(x) ((x) & ID_AA64ISAR1_DGH_MASK) 66861949736SMitchell Horne #define ID_AA64ISAR1_DGH_NONE (UL(0x0) << ID_AA64ISAR1_DGH_SHIFT) 66961949736SMitchell Horne #define ID_AA64ISAR1_DGH_IMPL (UL(0x1) << ID_AA64ISAR1_DGH_SHIFT) 67061949736SMitchell Horne #define ID_AA64ISAR1_I8MM_SHIFT 52 67161949736SMitchell Horne #define ID_AA64ISAR1_I8MM_MASK (UL(0xf) << ID_AA64ISAR1_I8MM_SHIFT) 67261949736SMitchell Horne #define ID_AA64ISAR1_I8MM_VAL(x) ((x) & ID_AA64ISAR1_I8MM_MASK) 67361949736SMitchell Horne #define ID_AA64ISAR1_I8MM_NONE (UL(0x0) << ID_AA64ISAR1_I8MM_SHIFT) 67461949736SMitchell Horne #define ID_AA64ISAR1_I8MM_IMPL (UL(0x1) << ID_AA64ISAR1_I8MM_SHIFT) 675f45dc694SAndrew Turner 676*a8fac0ceSAndrew Turner /* ID_AA64ISAR2_EL1 */ 677*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1 MRS_REG(ID_AA64ISAR2_EL1) 678*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op0 3 679*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op1 0 680*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_CRn 0 681*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_CRm 6 682*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op2 2 683*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_SHIFT 0 684*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_MASK (UL(0xf) << ID_AA64ISAR2_WFxT_SHIFT) 685*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_VAL(x) ((x) & ID_AA64ISAR2_WFxT_MASK) 686*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_NONE (UL(0x0) << ID_AA64ISAR2_WFxT_SHIFT) 687*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_IMPL (UL(0x1) << ID_AA64ISAR2_WFxT_SHIFT) 688*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_SHIFT 4 689*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_MASK (UL(0xf) << ID_AA64ISAR2_RPRES_SHIFT) 690*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_VAL(x) ((x) & ID_AA64ISAR2_RPRES_MASK) 691*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_NONE (UL(0x0) << ID_AA64ISAR2_RPRES_SHIFT) 692*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_IMPL (UL(0x1) << ID_AA64ISAR2_RPRES_SHIFT) 693*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_SHIFT 8 694*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_MASK (UL(0xf) << ID_AA64ISAR2_GPA3_SHIFT) 695*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_VAL(x) ((x) & ID_AA64ISAR2_GPA3_MASK) 696*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_NONE (UL(0x0) << ID_AA64ISAR2_GPA3_SHIFT) 697*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_IMPL (UL(0x1) << ID_AA64ISAR2_GPA3_SHIFT) 698*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_SHIFT 12 699*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_MASK (UL(0xf) << ID_AA64ISAR2_APA3_SHIFT) 700*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_VAL(x) ((x) & ID_AA64ISAR2_APA3_MASK) 701*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_NONE (UL(0x0) << ID_AA64ISAR2_APA3_SHIFT) 702*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_PAC (UL(0x1) << ID_AA64ISAR2_APA3_SHIFT) 703*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_EPAC (UL(0x2) << ID_AA64ISAR2_APA3_SHIFT) 704*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_EPAC2 (UL(0x3) << ID_AA64ISAR2_APA3_SHIFT) 705*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_FPAC (UL(0x4) << ID_AA64ISAR2_APA3_SHIFT) 706*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR2_APA3_SHIFT) 707*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_SHIFT 16 708*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_MASK (UL(0xf) << ID_AA64ISAR2_MOPS_SHIFT) 709*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_VAL(x) ((x) & ID_AA64ISAR2_MOPS_MASK) 710*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_NONE (UL(0x0) << ID_AA64ISAR2_MOPS_SHIFT) 711*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_IMPL (UL(0x1) << ID_AA64ISAR2_MOPS_SHIFT) 712*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_SHIFT 20 713*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_MASK (UL(0xf) << ID_AA64ISAR2_BC_SHIFT) 714*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_VAL(x) ((x) & ID_AA64ISAR2_BC_MASK) 715*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_NONE (UL(0x0) << ID_AA64ISAR2_BC_SHIFT) 716*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_IMPL (UL(0x1) << ID_AA64ISAR2_BC_SHIFT) 717*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_SHIFT 28 718*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_MASK (UL(0xf) << ID_AA64ISAR2_PAC_frac_SHIFT) 719*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_VAL(x) ((x) & ID_AA64ISAR2_PAC_frac_MASK) 720*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_NONE (UL(0x0) << ID_AA64ISAR2_PAC_frac_SHIFT) 721*a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_IMPL (UL(0x1) << ID_AA64ISAR2_PAC_frac_SHIFT) 722*a8fac0ceSAndrew Turner 7235f0a5fefSAndrew Turner /* ID_AA64MMFR0_EL1 */ 72410f6680fSAndrew Turner #define ID_AA64MMFR0_EL1 MRS_REG(ID_AA64MMFR0_EL1) 72510f6680fSAndrew Turner #define ID_AA64MMFR0_EL1_op0 0x3 72610f6680fSAndrew Turner #define ID_AA64MMFR0_EL1_op1 0x0 72710f6680fSAndrew Turner #define ID_AA64MMFR0_EL1_CRn 0x0 72810f6680fSAndrew Turner #define ID_AA64MMFR0_EL1_CRm 0x7 72910f6680fSAndrew Turner #define ID_AA64MMFR0_EL1_op2 0x0 730f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_PARange_SHIFT 0 731f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_MASK (UL(0xf) << ID_AA64MMFR0_PARange_SHIFT) 73244e446a1SAndrew Turner #define ID_AA64MMFR0_PARange_VAL(x) ((x) & ID_AA64MMFR0_PARange_MASK) 733f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4G (UL(0x0) << ID_AA64MMFR0_PARange_SHIFT) 734f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_64G (UL(0x1) << ID_AA64MMFR0_PARange_SHIFT) 735f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_1T (UL(0x2) << ID_AA64MMFR0_PARange_SHIFT) 736f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4T (UL(0x3) << ID_AA64MMFR0_PARange_SHIFT) 737f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_16T (UL(0x4) << ID_AA64MMFR0_PARange_SHIFT) 738f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_256T (UL(0x5) << ID_AA64MMFR0_PARange_SHIFT) 739f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4P (UL(0x6) << ID_AA64MMFR0_PARange_SHIFT) 740f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_ASIDBits_SHIFT 4 741f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_MASK (UL(0xf) << ID_AA64MMFR0_ASIDBits_SHIFT) 74244e446a1SAndrew Turner #define ID_AA64MMFR0_ASIDBits_VAL(x) ((x) & ID_AA64MMFR0_ASIDBits_MASK) 743f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_8 (UL(0x0) << ID_AA64MMFR0_ASIDBits_SHIFT) 744f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_16 (UL(0x2) << ID_AA64MMFR0_ASIDBits_SHIFT) 745f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_BigEnd_SHIFT 8 746f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_MASK (UL(0xf) << ID_AA64MMFR0_BigEnd_SHIFT) 74744e446a1SAndrew Turner #define ID_AA64MMFR0_BigEnd_VAL(x) ((x) & ID_AA64MMFR0_BigEnd_MASK) 748f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_FIXED (UL(0x0) << ID_AA64MMFR0_BigEnd_SHIFT) 749f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_MIXED (UL(0x1) << ID_AA64MMFR0_BigEnd_SHIFT) 750f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_SNSMem_SHIFT 12 751f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_MASK (UL(0xf) << ID_AA64MMFR0_SNSMem_SHIFT) 75244e446a1SAndrew Turner #define ID_AA64MMFR0_SNSMem_VAL(x) ((x) & ID_AA64MMFR0_SNSMem_MASK) 753f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_NONE (UL(0x0) << ID_AA64MMFR0_SNSMem_SHIFT) 754f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_DISTINCT (UL(0x1) << ID_AA64MMFR0_SNSMem_SHIFT) 755f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_SHIFT 16 756f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_MASK (UL(0xf) << ID_AA64MMFR0_BigEndEL0_SHIFT) 75744e446a1SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_VAL(x) ((x) & ID_AA64MMFR0_BigEndEL0_MASK) 758f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_FIXED (UL(0x0) << ID_AA64MMFR0_BigEndEL0_SHIFT) 759f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_MIXED (UL(0x1) << ID_AA64MMFR0_BigEndEL0_SHIFT) 760f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran16_SHIFT 20 761f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_MASK (UL(0xf) << ID_AA64MMFR0_TGran16_SHIFT) 76244e446a1SAndrew Turner #define ID_AA64MMFR0_TGran16_VAL(x) ((x) & ID_AA64MMFR0_TGran16_MASK) 763f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_NONE (UL(0x0) << ID_AA64MMFR0_TGran16_SHIFT) 764f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_IMPL (UL(0x1) << ID_AA64MMFR0_TGran16_SHIFT) 765f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran64_SHIFT 24 766f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_MASK (UL(0xf) << ID_AA64MMFR0_TGran64_SHIFT) 76744e446a1SAndrew Turner #define ID_AA64MMFR0_TGran64_VAL(x) ((x) & ID_AA64MMFR0_TGran64_MASK) 768f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_IMPL (UL(0x0) << ID_AA64MMFR0_TGran64_SHIFT) 769f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_NONE (UL(0xf) << ID_AA64MMFR0_TGran64_SHIFT) 770f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran4_SHIFT 28 771f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_MASK (UL(0xf) << ID_AA64MMFR0_TGran4_SHIFT) 77244e446a1SAndrew Turner #define ID_AA64MMFR0_TGran4_VAL(x) ((x) & ID_AA64MMFR0_TGran4_MASK) 773f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_IMPL (UL(0x0) << ID_AA64MMFR0_TGran4_SHIFT) 774f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_NONE (UL(0xf) << ID_AA64MMFR0_TGran4_SHIFT) 775a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_SHIFT 32 776a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran16_2_SHIFT) 777a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_VAL(x) ((x) & ID_AA64MMFR0_TGran16_2_MASK) 778a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_TGran16 (UL(0x0) << ID_AA64MMFR0_TGran16_2_SHIFT) 779a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran16_2_SHIFT) 780a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran16_2_SHIFT) 781a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_SHIFT 36 782a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran64_2_SHIFT) 783a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_VAL(x) ((x) & ID_AA64MMFR0_TGran64_2_MASK) 784a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_TGran64 (UL(0x0) << ID_AA64MMFR0_TGran64_2_SHIFT) 785a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran64_2_SHIFT) 786a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran64_2_SHIFT) 787a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_SHIFT 40 788a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran4_2_SHIFT) 789a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_VAL(x) ((x) & ID_AA64MMFR0_TGran4_2_MASK) 790a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_TGran4 (UL(0x0) << ID_AA64MMFR0_TGran4_2_SHIFT) 791a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran4_2_SHIFT) 792a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran4_2_SHIFT) 793a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_SHIFT 44 794a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_MASK (UL(0xf) << ID_AA64MMFR0_ExS_SHIFT) 795a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_VAL(x) ((x) & ID_AA64MMFR0_ExS_MASK) 796a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_ALL (UL(0x0) << ID_AA64MMFR0_ExS_SHIFT) 797a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_IMPL (UL(0x1) << ID_AA64MMFR0_ExS_SHIFT) 7985f0a5fefSAndrew Turner 7992bafd72fSAndrew Turner /* ID_AA64MMFR1_EL1 */ 80010f6680fSAndrew Turner #define ID_AA64MMFR1_EL1 MRS_REG(ID_AA64MMFR1_EL1) 80110f6680fSAndrew Turner #define ID_AA64MMFR1_EL1_op0 0x3 80210f6680fSAndrew Turner #define ID_AA64MMFR1_EL1_op1 0x0 80310f6680fSAndrew Turner #define ID_AA64MMFR1_EL1_CRn 0x0 80410f6680fSAndrew Turner #define ID_AA64MMFR1_EL1_CRm 0x7 80510f6680fSAndrew Turner #define ID_AA64MMFR1_EL1_op2 0x1 8062bafd72fSAndrew Turner #define ID_AA64MMFR1_HAFDBS_SHIFT 0 807f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_MASK (UL(0xf) << ID_AA64MMFR1_HAFDBS_SHIFT) 80844e446a1SAndrew Turner #define ID_AA64MMFR1_HAFDBS_VAL(x) ((x) & ID_AA64MMFR1_HAFDBS_MASK) 809f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_NONE (UL(0x0) << ID_AA64MMFR1_HAFDBS_SHIFT) 810f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_AF (UL(0x1) << ID_AA64MMFR1_HAFDBS_SHIFT) 811f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_AF_DBS (UL(0x2) << ID_AA64MMFR1_HAFDBS_SHIFT) 812f1fbf9c3SAndrew Turner #define ID_AA64MMFR1_VMIDBits_SHIFT 4 813f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_MASK (UL(0xf) << ID_AA64MMFR1_VMIDBits_SHIFT) 81444e446a1SAndrew Turner #define ID_AA64MMFR1_VMIDBits_VAL(x) ((x) & ID_AA64MMFR1_VMIDBits_MASK) 815f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_8 (UL(0x0) << ID_AA64MMFR1_VMIDBits_SHIFT) 816f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_16 (UL(0x2) << ID_AA64MMFR1_VMIDBits_SHIFT) 8172bafd72fSAndrew Turner #define ID_AA64MMFR1_VH_SHIFT 8 818f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_MASK (UL(0xf) << ID_AA64MMFR1_VH_SHIFT) 81944e446a1SAndrew Turner #define ID_AA64MMFR1_VH_VAL(x) ((x) & ID_AA64MMFR1_VH_MASK) 820f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_NONE (UL(0x0) << ID_AA64MMFR1_VH_SHIFT) 821f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_IMPL (UL(0x1) << ID_AA64MMFR1_VH_SHIFT) 8222bafd72fSAndrew Turner #define ID_AA64MMFR1_HPDS_SHIFT 12 823f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_MASK (UL(0xf) << ID_AA64MMFR1_HPDS_SHIFT) 82444e446a1SAndrew Turner #define ID_AA64MMFR1_HPDS_VAL(x) ((x) & ID_AA64MMFR1_HPDS_MASK) 825f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_NONE (UL(0x0) << ID_AA64MMFR1_HPDS_SHIFT) 826f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_HPD (UL(0x1) << ID_AA64MMFR1_HPDS_SHIFT) 827f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_TTPBHA (UL(0x2) << ID_AA64MMFR1_HPDS_SHIFT) 8282bafd72fSAndrew Turner #define ID_AA64MMFR1_LO_SHIFT 16 829f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_MASK (UL(0xf) << ID_AA64MMFR1_LO_SHIFT) 83044e446a1SAndrew Turner #define ID_AA64MMFR1_LO_VAL(x) ((x) & ID_AA64MMFR1_LO_MASK) 831f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_NONE (UL(0x0) << ID_AA64MMFR1_LO_SHIFT) 832f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_IMPL (UL(0x1) << ID_AA64MMFR1_LO_SHIFT) 8332bafd72fSAndrew Turner #define ID_AA64MMFR1_PAN_SHIFT 20 834f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_MASK (UL(0xf) << ID_AA64MMFR1_PAN_SHIFT) 83544e446a1SAndrew Turner #define ID_AA64MMFR1_PAN_VAL(x) ((x) & ID_AA64MMFR1_PAN_MASK) 836f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_NONE (UL(0x0) << ID_AA64MMFR1_PAN_SHIFT) 837f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_IMPL (UL(0x1) << ID_AA64MMFR1_PAN_SHIFT) 838f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_ATS1E1 (UL(0x2) << ID_AA64MMFR1_PAN_SHIFT) 839f1fbf9c3SAndrew Turner #define ID_AA64MMFR1_SpecSEI_SHIFT 24 840f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_MASK (UL(0xf) << ID_AA64MMFR1_SpecSEI_SHIFT) 84144e446a1SAndrew Turner #define ID_AA64MMFR1_SpecSEI_VAL(x) ((x) & ID_AA64MMFR1_SpecSEI_MASK) 842f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_NONE (UL(0x0) << ID_AA64MMFR1_SpecSEI_SHIFT) 843f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_IMPL (UL(0x1) << ID_AA64MMFR1_SpecSEI_SHIFT) 844f45dc694SAndrew Turner #define ID_AA64MMFR1_XNX_SHIFT 28 845f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_MASK (UL(0xf) << ID_AA64MMFR1_XNX_SHIFT) 84644e446a1SAndrew Turner #define ID_AA64MMFR1_XNX_VAL(x) ((x) & ID_AA64MMFR1_XNX_MASK) 847f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_NONE (UL(0x0) << ID_AA64MMFR1_XNX_SHIFT) 848f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_IMPL (UL(0x1) << ID_AA64MMFR1_XNX_SHIFT) 849f45dc694SAndrew Turner 850f45dc694SAndrew Turner /* ID_AA64MMFR2_EL1 */ 85110f6680fSAndrew Turner #define ID_AA64MMFR2_EL1 MRS_REG(ID_AA64MMFR2_EL1) 85210f6680fSAndrew Turner #define ID_AA64MMFR2_EL1_op0 0x3 85310f6680fSAndrew Turner #define ID_AA64MMFR2_EL1_op1 0x0 85410f6680fSAndrew Turner #define ID_AA64MMFR2_EL1_CRn 0x0 85510f6680fSAndrew Turner #define ID_AA64MMFR2_EL1_CRm 0x7 85610f6680fSAndrew Turner #define ID_AA64MMFR2_EL1_op2 0x2 857f1fbf9c3SAndrew Turner #define ID_AA64MMFR2_CnP_SHIFT 0 858f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_MASK (UL(0xf) << ID_AA64MMFR2_CnP_SHIFT) 85944e446a1SAndrew Turner #define ID_AA64MMFR2_CnP_VAL(x) ((x) & ID_AA64MMFR2_CnP_MASK) 860f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_NONE (UL(0x0) << ID_AA64MMFR2_CnP_SHIFT) 861f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_IMPL (UL(0x1) << ID_AA64MMFR2_CnP_SHIFT) 862f45dc694SAndrew Turner #define ID_AA64MMFR2_UAO_SHIFT 4 863f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_MASK (UL(0xf) << ID_AA64MMFR2_UAO_SHIFT) 86444e446a1SAndrew Turner #define ID_AA64MMFR2_UAO_VAL(x) ((x) & ID_AA64MMFR2_UAO_MASK) 865f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_NONE (UL(0x0) << ID_AA64MMFR2_UAO_SHIFT) 866f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_IMPL (UL(0x1) << ID_AA64MMFR2_UAO_SHIFT) 867f45dc694SAndrew Turner #define ID_AA64MMFR2_LSM_SHIFT 8 868f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_MASK (UL(0xf) << ID_AA64MMFR2_LSM_SHIFT) 86944e446a1SAndrew Turner #define ID_AA64MMFR2_LSM_VAL(x) ((x) & ID_AA64MMFR2_LSM_MASK) 870f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_NONE (UL(0x0) << ID_AA64MMFR2_LSM_SHIFT) 871f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_IMPL (UL(0x1) << ID_AA64MMFR2_LSM_SHIFT) 872f45dc694SAndrew Turner #define ID_AA64MMFR2_IESB_SHIFT 12 873f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_MASK (UL(0xf) << ID_AA64MMFR2_IESB_SHIFT) 87444e446a1SAndrew Turner #define ID_AA64MMFR2_IESB_VAL(x) ((x) & ID_AA64MMFR2_IESB_MASK) 875f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_NONE (UL(0x0) << ID_AA64MMFR2_IESB_SHIFT) 876f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_IMPL (UL(0x1) << ID_AA64MMFR2_IESB_SHIFT) 877f1fbf9c3SAndrew Turner #define ID_AA64MMFR2_VARange_SHIFT 16 878f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_MASK (UL(0xf) << ID_AA64MMFR2_VARange_SHIFT) 87944e446a1SAndrew Turner #define ID_AA64MMFR2_VARange_VAL(x) ((x) & ID_AA64MMFR2_VARange_MASK) 880f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_48 (UL(0x0) << ID_AA64MMFR2_VARange_SHIFT) 881f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_52 (UL(0x1) << ID_AA64MMFR2_VARange_SHIFT) 882ca289945SAndrew Turner #define ID_AA64MMFR2_CCIDX_SHIFT 20 883f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_MASK (UL(0xf) << ID_AA64MMFR2_CCIDX_SHIFT) 88444e446a1SAndrew Turner #define ID_AA64MMFR2_CCIDX_VAL(x) ((x) & ID_AA64MMFR2_CCIDX_MASK) 885f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_32 (UL(0x0) << ID_AA64MMFR2_CCIDX_SHIFT) 886f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_64 (UL(0x1) << ID_AA64MMFR2_CCIDX_SHIFT) 887ca289945SAndrew Turner #define ID_AA64MMFR2_NV_SHIFT 24 888f31c5955SAndrew Turner #define ID_AA64MMFR2_NV_MASK (UL(0xf) << ID_AA64MMFR2_NV_SHIFT) 88944e446a1SAndrew Turner #define ID_AA64MMFR2_NV_VAL(x) ((x) & ID_AA64MMFR2_NV_MASK) 890f31c5955SAndrew Turner #define ID_AA64MMFR2_NV_NONE (UL(0x0) << ID_AA64MMFR2_NV_SHIFT) 891a7b05eb1SAndrew Turner #define ID_AA64MMFR2_NV_8_3 (UL(0x1) << ID_AA64MMFR2_NV_SHIFT) 892a7b05eb1SAndrew Turner #define ID_AA64MMFR2_NV_8_4 (UL(0x2) << ID_AA64MMFR2_NV_SHIFT) 8930387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_SHIFT 28 8940387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_MASK (UL(0xf) << ID_AA64MMFR2_ST_SHIFT) 8950387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_VAL(x) ((x) & ID_AA64MMFR2_ST_MASK) 8960387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_NONE (UL(0x0) << ID_AA64MMFR2_ST_SHIFT) 8970387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_IMPL (UL(0x1) << ID_AA64MMFR2_ST_SHIFT) 8980387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_SHIFT 32 8990387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_MASK (UL(0xf) << ID_AA64MMFR2_AT_SHIFT) 9000387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_VAL(x) ((x) & ID_AA64MMFR2_AT_MASK) 9010387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_NONE (UL(0x0) << ID_AA64MMFR2_AT_SHIFT) 9020387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_IMPL (UL(0x1) << ID_AA64MMFR2_AT_SHIFT) 9030387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_SHIFT 36 9040387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_MASK (UL(0xf) << ID_AA64MMFR2_IDS_SHIFT) 9050387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_VAL(x) ((x) & ID_AA64MMFR2_IDS_MASK) 9060387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_NONE (UL(0x0) << ID_AA64MMFR2_IDS_SHIFT) 9070387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_IMPL (UL(0x1) << ID_AA64MMFR2_IDS_SHIFT) 9080387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_SHIFT 40 9090387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_MASK (UL(0xf) << ID_AA64MMFR2_FWB_SHIFT) 9100387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_VAL(x) ((x) & ID_AA64MMFR2_FWB_MASK) 9110387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_NONE (UL(0x0) << ID_AA64MMFR2_FWB_SHIFT) 9120387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_IMPL (UL(0x1) << ID_AA64MMFR2_FWB_SHIFT) 9130387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_SHIFT 48 9140387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_MASK (UL(0xf) << ID_AA64MMFR2_TTL_SHIFT) 9150387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_VAL(x) ((x) & ID_AA64MMFR2_TTL_MASK) 9160387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_NONE (UL(0x0) << ID_AA64MMFR2_TTL_SHIFT) 9170387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_IMPL (UL(0x1) << ID_AA64MMFR2_TTL_SHIFT) 9180387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_SHIFT 52 9190387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_MASK (UL(0xf) << ID_AA64MMFR2_BBM_SHIFT) 9200387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_VAL(x) ((x) & ID_AA64MMFR2_BBM_MASK) 9210387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL0 (UL(0x0) << ID_AA64MMFR2_BBM_SHIFT) 9220387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL1 (UL(0x1) << ID_AA64MMFR2_BBM_SHIFT) 9230387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL2 (UL(0x2) << ID_AA64MMFR2_BBM_SHIFT) 9240387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_SHIFT 56 9250387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_MASK (UL(0xf) << ID_AA64MMFR2_EVT_SHIFT) 9260387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_VAL(x) ((x) & ID_AA64MMFR2_EVT_MASK) 9270387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_NONE (UL(0x0) << ID_AA64MMFR2_EVT_SHIFT) 9280387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_8_2 (UL(0x1) << ID_AA64MMFR2_EVT_SHIFT) 9290387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_8_5 (UL(0x2) << ID_AA64MMFR2_EVT_SHIFT) 9300387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_SHIFT 60 9310387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_MASK (UL(0xf) << ID_AA64MMFR2_E0PD_SHIFT) 9320387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_VAL(x) ((x) & ID_AA64MMFR2_E0PD_MASK) 9330387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_NONE (UL(0x0) << ID_AA64MMFR2_E0PD_SHIFT) 9340387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_IMPL (UL(0x1) << ID_AA64MMFR2_E0PD_SHIFT) 9352bafd72fSAndrew Turner 936e5acd89cSAndrew Turner /* ID_AA64PFR0_EL1 */ 93710f6680fSAndrew Turner #define ID_AA64PFR0_EL1 MRS_REG(ID_AA64PFR0_EL1) 93810f6680fSAndrew Turner #define ID_AA64PFR0_EL1_op0 0x3 93910f6680fSAndrew Turner #define ID_AA64PFR0_EL1_op1 0x0 94010f6680fSAndrew Turner #define ID_AA64PFR0_EL1_CRn 0x0 94110f6680fSAndrew Turner #define ID_AA64PFR0_EL1_CRm 0x4 94210f6680fSAndrew Turner #define ID_AA64PFR0_EL1_op2 0x0 9435f0a5fefSAndrew Turner #define ID_AA64PFR0_EL0_SHIFT 0 944f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_MASK (UL(0xf) << ID_AA64PFR0_EL0_SHIFT) 94544e446a1SAndrew Turner #define ID_AA64PFR0_EL0_VAL(x) ((x) & ID_AA64PFR0_EL0_MASK) 946f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_64 (UL(0x1) << ID_AA64PFR0_EL0_SHIFT) 947f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_64_32 (UL(0x2) << ID_AA64PFR0_EL0_SHIFT) 9485f0a5fefSAndrew Turner #define ID_AA64PFR0_EL1_SHIFT 4 949f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_MASK (UL(0xf) << ID_AA64PFR0_EL1_SHIFT) 95044e446a1SAndrew Turner #define ID_AA64PFR0_EL1_VAL(x) ((x) & ID_AA64PFR0_EL1_MASK) 951f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_64 (UL(0x1) << ID_AA64PFR0_EL1_SHIFT) 952f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_64_32 (UL(0x2) << ID_AA64PFR0_EL1_SHIFT) 9535f0a5fefSAndrew Turner #define ID_AA64PFR0_EL2_SHIFT 8 954f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_MASK (UL(0xf) << ID_AA64PFR0_EL2_SHIFT) 95544e446a1SAndrew Turner #define ID_AA64PFR0_EL2_VAL(x) ((x) & ID_AA64PFR0_EL2_MASK) 956f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_NONE (UL(0x0) << ID_AA64PFR0_EL2_SHIFT) 957f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_64 (UL(0x1) << ID_AA64PFR0_EL2_SHIFT) 958f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_64_32 (UL(0x2) << ID_AA64PFR0_EL2_SHIFT) 9595f0a5fefSAndrew Turner #define ID_AA64PFR0_EL3_SHIFT 12 960f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_MASK (UL(0xf) << ID_AA64PFR0_EL3_SHIFT) 96144e446a1SAndrew Turner #define ID_AA64PFR0_EL3_VAL(x) ((x) & ID_AA64PFR0_EL3_MASK) 962f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_NONE (UL(0x0) << ID_AA64PFR0_EL3_SHIFT) 963f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_64 (UL(0x1) << ID_AA64PFR0_EL3_SHIFT) 964f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_64_32 (UL(0x2) << ID_AA64PFR0_EL3_SHIFT) 9655f0a5fefSAndrew Turner #define ID_AA64PFR0_FP_SHIFT 16 966f31c5955SAndrew Turner #define ID_AA64PFR0_FP_MASK (UL(0xf) << ID_AA64PFR0_FP_SHIFT) 96744e446a1SAndrew Turner #define ID_AA64PFR0_FP_VAL(x) ((x) & ID_AA64PFR0_FP_MASK) 968f31c5955SAndrew Turner #define ID_AA64PFR0_FP_IMPL (UL(0x0) << ID_AA64PFR0_FP_SHIFT) 969f31c5955SAndrew Turner #define ID_AA64PFR0_FP_HP (UL(0x1) << ID_AA64PFR0_FP_SHIFT) 970f31c5955SAndrew Turner #define ID_AA64PFR0_FP_NONE (UL(0xf) << ID_AA64PFR0_FP_SHIFT) 971f1fbf9c3SAndrew Turner #define ID_AA64PFR0_AdvSIMD_SHIFT 20 972f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_MASK (UL(0xf) << ID_AA64PFR0_AdvSIMD_SHIFT) 97344e446a1SAndrew Turner #define ID_AA64PFR0_AdvSIMD_VAL(x) ((x) & ID_AA64PFR0_AdvSIMD_MASK) 974f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_IMPL (UL(0x0) << ID_AA64PFR0_AdvSIMD_SHIFT) 975f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_HP (UL(0x1) << ID_AA64PFR0_AdvSIMD_SHIFT) 976f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_NONE (UL(0xf) << ID_AA64PFR0_AdvSIMD_SHIFT) 9775f0a5fefSAndrew Turner #define ID_AA64PFR0_GIC_BITS 0x4 /* Number of bits in GIC field */ 9785f0a5fefSAndrew Turner #define ID_AA64PFR0_GIC_SHIFT 24 979f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_MASK (UL(0xf) << ID_AA64PFR0_GIC_SHIFT) 98044e446a1SAndrew Turner #define ID_AA64PFR0_GIC_VAL(x) ((x) & ID_AA64PFR0_GIC_MASK) 981f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_NONE (UL(0x0) << ID_AA64PFR0_GIC_SHIFT) 982f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_EN (UL(0x1) << ID_AA64PFR0_GIC_SHIFT) 983477204e7SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_4_1 (UL(0x3) << ID_AA64PFR0_GIC_SHIFT) 984f45dc694SAndrew Turner #define ID_AA64PFR0_RAS_SHIFT 28 985f31c5955SAndrew Turner #define ID_AA64PFR0_RAS_MASK (UL(0xf) << ID_AA64PFR0_RAS_SHIFT) 98644e446a1SAndrew Turner #define ID_AA64PFR0_RAS_VAL(x) ((x) & ID_AA64PFR0_RAS_MASK) 987f31c5955SAndrew Turner #define ID_AA64PFR0_RAS_NONE (UL(0x0) << ID_AA64PFR0_RAS_SHIFT) 988a7b05eb1SAndrew Turner #define ID_AA64PFR0_RAS_IMPL (UL(0x1) << ID_AA64PFR0_RAS_SHIFT) 989a7b05eb1SAndrew Turner #define ID_AA64PFR0_RAS_8_4 (UL(0x2) << ID_AA64PFR0_RAS_SHIFT) 990f9fc9faaSAndrew Turner #define ID_AA64PFR0_SVE_SHIFT 32 991f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_MASK (UL(0xf) << ID_AA64PFR0_SVE_SHIFT) 99244e446a1SAndrew Turner #define ID_AA64PFR0_SVE_VAL(x) ((x) & ID_AA64PFR0_SVE_MASK) 993f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_NONE (UL(0x0) << ID_AA64PFR0_SVE_SHIFT) 994f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_IMPL (UL(0x1) << ID_AA64PFR0_SVE_SHIFT) 995b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_SHIFT 36 996b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_MASK (UL(0xf) << ID_AA64PFR0_SEL2_SHIFT) 997b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_VAL(x) ((x) & ID_AA64PFR0_SEL2_MASK) 998b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_NONE (UL(0x0) << ID_AA64PFR0_SEL2_SHIFT) 999b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_IMPL (UL(0x1) << ID_AA64PFR0_SEL2_SHIFT) 1000b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_SHIFT 40 1001b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_MASK (UL(0xf) << ID_AA64PFR0_MPAM_SHIFT) 1002b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_VAL(x) ((x) & ID_AA64PFR0_MPAM_MASK) 1003b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_NONE (UL(0x0) << ID_AA64PFR0_MPAM_SHIFT) 1004b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_IMPL (UL(0x1) << ID_AA64PFR0_MPAM_SHIFT) 1005b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_SHIFT 44 1006b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_MASK (UL(0xf) << ID_AA64PFR0_AMU_SHIFT) 1007b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_VAL(x) ((x) & ID_AA64PFR0_AMU_MASK) 1008b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_NONE (UL(0x0) << ID_AA64PFR0_AMU_SHIFT) 1009b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_V1 (UL(0x1) << ID_AA64PFR0_AMU_SHIFT) 1010b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_SHIFT 48 1011b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_MASK (UL(0xf) << ID_AA64PFR0_DIT_SHIFT) 1012b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_VAL(x) ((x) & ID_AA64PFR0_DIT_MASK) 1013b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_NONE (UL(0x0) << ID_AA64PFR0_DIT_SHIFT) 1014b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_PSTATE (UL(0x1) << ID_AA64PFR0_DIT_SHIFT) 1015b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_SHIFT 56 1016b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_MASK (UL(0xf) << ID_AA64PFR0_CSV2_SHIFT) 1017b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_VAL(x) ((x) & ID_AA64PFR0_CSV2_MASK) 1018b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_NONE (UL(0x0) << ID_AA64PFR0_CSV2_SHIFT) 1019b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV2_SHIFT) 1020b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_SCXTNUM (UL(0x2) << ID_AA64PFR0_CSV2_SHIFT) 1021b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_SHIFT 60 1022b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_MASK (UL(0xf) << ID_AA64PFR0_CSV3_SHIFT) 1023b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_VAL(x) ((x) & ID_AA64PFR0_CSV3_MASK) 1024b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_NONE (UL(0x0) << ID_AA64PFR0_CSV3_SHIFT) 1025b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV3_SHIFT) 1026b6cf94aeSMark Johnston 1027b6cf94aeSMark Johnston /* ID_AA64PFR1_EL1 */ 102810f6680fSAndrew Turner #define ID_AA64PFR1_EL1 MRS_REG(ID_AA64PFR1_EL1) 102910f6680fSAndrew Turner #define ID_AA64PFR1_EL1_op0 0x3 103010f6680fSAndrew Turner #define ID_AA64PFR1_EL1_op1 0x0 103110f6680fSAndrew Turner #define ID_AA64PFR1_EL1_CRn 0x0 103210f6680fSAndrew Turner #define ID_AA64PFR1_EL1_CRm 0x4 103310f6680fSAndrew Turner #define ID_AA64PFR1_EL1_op2 0x1 1034b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_SHIFT 0 1035b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_MASK (UL(0xf) << ID_AA64PFR1_BT_SHIFT) 1036b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_VAL(x) ((x) & ID_AA64PFR1_BT_MASK) 1037b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_NONE (UL(0x0) << ID_AA64PFR1_BT_SHIFT) 1038b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_IMPL (UL(0x1) << ID_AA64PFR1_BT_SHIFT) 1039b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_SHIFT 4 1040b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_MASK (UL(0xf) << ID_AA64PFR1_SSBS_SHIFT) 1041b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_VAL(x) ((x) & ID_AA64PFR1_SSBS_MASK) 1042b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_NONE (UL(0x0) << ID_AA64PFR1_SSBS_SHIFT) 1043b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_PSTATE (UL(0x1) << ID_AA64PFR1_SSBS_SHIFT) 1044b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_PSTATE_MSR (UL(0x2) << ID_AA64PFR1_SSBS_SHIFT) 1045b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_SHIFT 8 1046b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_MASK (UL(0xf) << ID_AA64PFR1_MTE_SHIFT) 1047b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_VAL(x) ((x) & ID_AA64PFR1_MTE_MASK) 1048b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_NONE (UL(0x0) << ID_AA64PFR1_MTE_SHIFT) 1049b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_IMPL_EL0 (UL(0x1) << ID_AA64PFR1_MTE_SHIFT) 1050b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_IMPL (UL(0x2) << ID_AA64PFR1_MTE_SHIFT) 1051b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_SHIFT 12 1052b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_MASK (UL(0xf) << ID_AA64PFR1_RAS_frac_SHIFT) 1053b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_VAL(x) ((x) & ID_AA64PFR1_RAS_frac_MASK) 1054b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_V1 (UL(0x0) << ID_AA64PFR1_RAS_frac_SHIFT) 1055b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_V2 (UL(0x1) << ID_AA64PFR1_RAS_frac_SHIFT) 1056e5acd89cSAndrew Turner 1057cb91f112SAndrew Turner /* ID_AA64ZFR0_EL1 */ 1058cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1 MRS_REG(ID_AA64ZFR0_EL1) 1059cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64ZFR0_EL1) 1060cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op0 3 1061cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op1 0 1062cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_CRn 0 1063cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_CRm 4 1064cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op2 4 1065cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SHIFT 0 1066cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_MASK (UL(0xf) << ID_AA64ZFR0_SVEver_SHIFT) 1067cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_VAL(x) ((x) & ID_AA64ZFR0_SVEver_MASK 1068cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE1 (UL(0x0) << ID_AA64ZFR0_SVEver_SHIFT) 1069cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE2 (UL(0x1) << ID_AA64ZFR0_SVEver_SHIFT) 1070cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_SHIFT 4 1071cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_MASK (UL(0xf) << ID_AA64ZFR0_AES_SHIFT) 1072cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_VAL(x) ((x) & ID_AA64ZFR0_AES_MASK 1073cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_NONE (UL(0x0) << ID_AA64ZFR0_AES_SHIFT) 1074cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_BASE (UL(0x1) << ID_AA64ZFR0_AES_SHIFT) 1075cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_PMULL (UL(0x2) << ID_AA64ZFR0_AES_SHIFT) 1076cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_SHIFT 16 1077cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_MASK (UL(0xf) << ID_AA64ZFR0_BitPerm_SHIFT) 1078cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_VAL(x) ((x) & ID_AA64ZFR0_BitPerm_MASK 1079cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_NONE (UL(0x0) << ID_AA64ZFR0_BitPerm_SHIFT) 1080cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_IMPL (UL(0x1) << ID_AA64ZFR0_BitPerm_SHIFT) 1081cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_SHIFT 20 1082cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_MASK (UL(0xf) << ID_AA64ZFR0_BF16_SHIFT) 1083cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_VAL(x) ((x) & ID_AA64ZFR0_BF16_MASK 1084cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_NONE (UL(0x0) << ID_AA64ZFR0_BF16_SHIFT) 1085cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_BASE (UL(0x1) << ID_AA64ZFR0_BF16_SHIFT) 1086cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_EBF (UL(0x1) << ID_AA64ZFR0_BF16_SHIFT) 1087cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_SHIFT 32 1088cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_MASK (UL(0xf) << ID_AA64ZFR0_SHA3_SHIFT) 1089cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_VAL(x) ((x) & ID_AA64ZFR0_SHA3_MASK 1090cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_NONE (UL(0x0) << ID_AA64ZFR0_SHA3_SHIFT) 1091cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_IMPL (UL(0x1) << ID_AA64ZFR0_SHA3_SHIFT) 1092cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_SHIFT 40 1093cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_MASK (UL(0xf) << ID_AA64ZFR0_SM4_SHIFT) 1094cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_VAL(x) ((x) & ID_AA64ZFR0_SM4_MASK 1095cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_NONE (UL(0x0) << ID_AA64ZFR0_SM4_SHIFT) 1096cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_IMPL (UL(0x1) << ID_AA64ZFR0_SM4_SHIFT) 1097cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_SHIFT 44 1098cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_MASK (UL(0xf) << ID_AA64ZFR0_I8MM_SHIFT) 1099cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_VAL(x) ((x) & ID_AA64ZFR0_I8MM_MASK 1100cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_NONE (UL(0x0) << ID_AA64ZFR0_I8MM_SHIFT) 1101cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_IMPL (UL(0x1) << ID_AA64ZFR0_I8MM_SHIFT) 1102cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_SHIFT 52 1103cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_MASK (UL(0xf) << ID_AA64ZFR0_F32MM_SHIFT) 1104cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_VAL(x) ((x) & ID_AA64ZFR0_F32MM_MASK 1105cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_NONE (UL(0x0) << ID_AA64ZFR0_F32MM_SHIFT) 1106cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_IMPL (UL(0x1) << ID_AA64ZFR0_F32MM_SHIFT) 1107cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_SHIFT 56 1108cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_MASK (UL(0xf) << ID_AA64ZFR0_F64MM_SHIFT) 1109cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_VAL(x) ((x) & ID_AA64ZFR0_F64MM_MASK 1110cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_NONE (UL(0x0) << ID_AA64ZFR0_F64MM_SHIFT) 1111cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_IMPL (UL(0x1) << ID_AA64ZFR0_F64MM_SHIFT) 1112cb91f112SAndrew Turner 1113bbe80bffSPeter Grehan /* ID_ISAR5_EL1 */ 111410f6680fSAndrew Turner #define ID_ISAR5_EL1 MRS_REG(ID_ISAR5_EL1) 111510f6680fSAndrew Turner #define ID_ISAR5_EL1_op0 0x3 111610f6680fSAndrew Turner #define ID_ISAR5_EL1_op1 0x0 111710f6680fSAndrew Turner #define ID_ISAR5_EL1_CRn 0x0 111810f6680fSAndrew Turner #define ID_ISAR5_EL1_CRm 0x2 111910f6680fSAndrew Turner #define ID_ISAR5_EL1_op2 0x5 1120bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_SHIFT 0 1121bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_MASK (UL(0xf) << ID_ISAR5_SEVL_SHIFT) 1122bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_VAL(x) ((x) & ID_ISAR5_SEVL_MASK) 1123bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_NOP (UL(0x0) << ID_ISAR5_SEVL_SHIFT) 1124bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_IMPL (UL(0x1) << ID_ISAR5_SEVL_SHIFT) 1125bbe80bffSPeter Grehan #define ID_ISAR5_AES_SHIFT 4 1126bbe80bffSPeter Grehan #define ID_ISAR5_AES_MASK (UL(0xf) << ID_ISAR5_AES_SHIFT) 1127bbe80bffSPeter Grehan #define ID_ISAR5_AES_VAL(x) ((x) & ID_ISAR5_AES_MASK) 1128bbe80bffSPeter Grehan #define ID_ISAR5_AES_NONE (UL(0x0) << ID_ISAR5_AES_SHIFT) 1129bbe80bffSPeter Grehan #define ID_ISAR5_AES_BASE (UL(0x1) << ID_ISAR5_AES_SHIFT) 1130bbe80bffSPeter Grehan #define ID_ISAR5_AES_VMULL (UL(0x2) << ID_ISAR5_AES_SHIFT) 1131bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_SHIFT 8 1132bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_MASK (UL(0xf) << ID_ISAR5_SHA1_SHIFT) 1133bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_VAL(x) ((x) & ID_ISAR5_SHA1_MASK) 1134bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_NONE (UL(0x0) << ID_ISAR5_SHA1_SHIFT) 1135bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_IMPL (UL(0x1) << ID_ISAR5_SHA1_SHIFT) 1136bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_SHIFT 12 1137bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_MASK (UL(0xf) << ID_ISAR5_SHA2_SHIFT) 1138bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_VAL(x) ((x) & ID_ISAR5_SHA2_MASK) 1139bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_NONE (UL(0x0) << ID_ISAR5_SHA2_SHIFT) 1140bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_IMPL (UL(0x1) << ID_ISAR5_SHA2_SHIFT) 1141bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_SHIFT 16 1142bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_MASK (UL(0xf) << ID_ISAR5_CRC32_SHIFT) 1143bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_VAL(x) ((x) & ID_ISAR5_CRC32_MASK) 1144bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_NONE (UL(0x0) << ID_ISAR5_CRC32_SHIFT) 1145bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_IMPL (UL(0x1) << ID_ISAR5_CRC32_SHIFT) 1146bbe80bffSPeter Grehan #define ID_ISAR5_RDM_SHIFT 24 1147bbe80bffSPeter Grehan #define ID_ISAR5_RDM_MASK (UL(0xf) << ID_ISAR5_RDM_SHIFT) 1148bbe80bffSPeter Grehan #define ID_ISAR5_RDM_VAL(x) ((x) & ID_ISAR5_RDM_MASK) 1149bbe80bffSPeter Grehan #define ID_ISAR5_RDM_NONE (UL(0x0) << ID_ISAR5_RDM_SHIFT) 1150bbe80bffSPeter Grehan #define ID_ISAR5_RDM_IMPL (UL(0x1) << ID_ISAR5_RDM_SHIFT) 1151bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_SHIFT 28 1152bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_MASK (UL(0xf) << ID_ISAR5_VCMA_SHIFT) 1153bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_VAL(x) ((x) & ID_ISAR5_VCMA_MASK) 1154bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_NONE (UL(0x0) << ID_ISAR5_VCMA_SHIFT) 1155bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_IMPL (UL(0x1) << ID_ISAR5_VCMA_SHIFT) 1156bbe80bffSPeter Grehan 11572abeef73SAndrew Turner /* MAIR_EL1 - Memory Attribute Indirection Register */ 11582abeef73SAndrew Turner #define MAIR_ATTR_MASK(idx) (0xff << ((n)* 8)) 11592abeef73SAndrew Turner #define MAIR_ATTR(attr, idx) ((attr) << ((idx) * 8)) 11602abeef73SAndrew Turner #define MAIR_DEVICE_nGnRnE 0x00 11612abeef73SAndrew Turner #define MAIR_DEVICE_nGnRE 0x04 11622abeef73SAndrew Turner #define MAIR_NORMAL_NC 0x44 11632abeef73SAndrew Turner #define MAIR_NORMAL_WT 0xbb 11642abeef73SAndrew Turner #define MAIR_NORMAL_WB 0xff 11652abeef73SAndrew Turner 11664dc81560SAndrew Turner /* MDCCINT_EL1 */ 11674dc81560SAndrew Turner #define MDCCINT_EL1 MRS_REG(MDCCINT_EL1) 11684dc81560SAndrew Turner #define MDCCINT_EL1_op0 2 11694dc81560SAndrew Turner #define MDCCINT_EL1_op1 0 11704dc81560SAndrew Turner #define MDCCINT_EL1_CRn 0 11714dc81560SAndrew Turner #define MDCCINT_EL1_CRm 2 11724dc81560SAndrew Turner #define MDCCINT_EL1_op2 0 11734dc81560SAndrew Turner 11744dc81560SAndrew Turner /* MDCCSR_EL0 */ 11754dc81560SAndrew Turner #define MDCCSR_EL0 MRS_REG(MDCCSR_EL0) 11764dc81560SAndrew Turner #define MDCCSR_EL0_op0 2 11774dc81560SAndrew Turner #define MDCCSR_EL0_op1 3 11784dc81560SAndrew Turner #define MDCCSR_EL0_CRn 0 11794dc81560SAndrew Turner #define MDCCSR_EL0_CRm 1 11804dc81560SAndrew Turner #define MDCCSR_EL0_op2 0 11814dc81560SAndrew Turner 11822abeef73SAndrew Turner /* MDSCR_EL1 - Monitor Debug System Control Register */ 11834dc81560SAndrew Turner #define MDSCR_EL1 MRS_REG(MDSCR_EL1) 11844dc81560SAndrew Turner #define MDSCR_EL1_op0 2 11854dc81560SAndrew Turner #define MDSCR_EL1_op1 0 11864dc81560SAndrew Turner #define MDSCR_EL1_CRn 0 11874dc81560SAndrew Turner #define MDSCR_EL1_CRm 2 11884dc81560SAndrew Turner #define MDSCR_EL1_op2 2 11892abeef73SAndrew Turner #define MDSCR_SS_SHIFT 0 11902abeef73SAndrew Turner #define MDSCR_SS (UL(0x1) << MDSCR_SS_SHIFT) 11912abeef73SAndrew Turner #define MDSCR_KDE_SHIFT 13 11922abeef73SAndrew Turner #define MDSCR_KDE (UL(0x1) << MDSCR_KDE_SHIFT) 11932abeef73SAndrew Turner #define MDSCR_MDE_SHIFT 15 11942abeef73SAndrew Turner #define MDSCR_MDE (UL(0x1) << MDSCR_MDE_SHIFT) 11952abeef73SAndrew Turner 11962abeef73SAndrew Turner /* MVFR0_EL1 */ 11972abeef73SAndrew Turner #define MVFR0_EL1 MRS_REG(MVFR0_EL1) 11982abeef73SAndrew Turner #define MVFR0_EL1_op0 0x3 11992abeef73SAndrew Turner #define MVFR0_EL1_op1 0x0 12002abeef73SAndrew Turner #define MVFR0_EL1_CRn 0x0 12012abeef73SAndrew Turner #define MVFR0_EL1_CRm 0x3 12022abeef73SAndrew Turner #define MVFR0_EL1_op2 0x0 12032abeef73SAndrew Turner #define MVFR0_SIMDReg_SHIFT 0 12042abeef73SAndrew Turner #define MVFR0_SIMDReg_MASK (UL(0xf) << MVFR0_SIMDReg_SHIFT) 12052abeef73SAndrew Turner #define MVFR0_SIMDReg_VAL(x) ((x) & MVFR0_SIMDReg_MASK) 12062abeef73SAndrew Turner #define MVFR0_SIMDReg_NONE (UL(0x0) << MVFR0_SIMDReg_SHIFT) 12072abeef73SAndrew Turner #define MVFR0_SIMDReg_FP (UL(0x1) << MVFR0_SIMDReg_SHIFT) 12082abeef73SAndrew Turner #define MVFR0_SIMDReg_AdvSIMD (UL(0x2) << MVFR0_SIMDReg_SHIFT) 12092abeef73SAndrew Turner #define MVFR0_FPSP_SHIFT 4 12102abeef73SAndrew Turner #define MVFR0_FPSP_MASK (UL(0xf) << MVFR0_FPSP_SHIFT) 12112abeef73SAndrew Turner #define MVFR0_FPSP_VAL(x) ((x) & MVFR0_FPSP_MASK) 12122abeef73SAndrew Turner #define MVFR0_FPSP_NONE (UL(0x0) << MVFR0_FPSP_SHIFT) 12132abeef73SAndrew Turner #define MVFR0_FPSP_VFP_v2 (UL(0x1) << MVFR0_FPSP_SHIFT) 12142abeef73SAndrew Turner #define MVFR0_FPSP_VFP_v3_v4 (UL(0x2) << MVFR0_FPSP_SHIFT) 12152abeef73SAndrew Turner #define MVFR0_FPDP_SHIFT 8 12162abeef73SAndrew Turner #define MVFR0_FPDP_MASK (UL(0xf) << MVFR0_FPDP_SHIFT) 12172abeef73SAndrew Turner #define MVFR0_FPDP_VAL(x) ((x) & MVFR0_FPDP_MASK) 12182abeef73SAndrew Turner #define MVFR0_FPDP_NONE (UL(0x0) << MVFR0_FPDP_SHIFT) 12192abeef73SAndrew Turner #define MVFR0_FPDP_VFP_v2 (UL(0x1) << MVFR0_FPDP_SHIFT) 12202abeef73SAndrew Turner #define MVFR0_FPDP_VFP_v3_v4 (UL(0x2) << MVFR0_FPDP_SHIFT) 12212abeef73SAndrew Turner #define MVFR0_FPTrap_SHIFT 12 12222abeef73SAndrew Turner #define MVFR0_FPTrap_MASK (UL(0xf) << MVFR0_FPTrap_SHIFT) 12232abeef73SAndrew Turner #define MVFR0_FPTrap_VAL(x) ((x) & MVFR0_FPTrap_MASK) 12242abeef73SAndrew Turner #define MVFR0_FPTrap_NONE (UL(0x0) << MVFR0_FPTrap_SHIFT) 12252abeef73SAndrew Turner #define MVFR0_FPTrap_IMPL (UL(0x1) << MVFR0_FPTrap_SHIFT) 12262abeef73SAndrew Turner #define MVFR0_FPDivide_SHIFT 16 12272abeef73SAndrew Turner #define MVFR0_FPDivide_MASK (UL(0xf) << MVFR0_FPDivide_SHIFT) 12282abeef73SAndrew Turner #define MVFR0_FPDivide_VAL(x) ((x) & MVFR0_FPDivide_MASK) 12292abeef73SAndrew Turner #define MVFR0_FPDivide_NONE (UL(0x0) << MVFR0_FPDivide_SHIFT) 12302abeef73SAndrew Turner #define MVFR0_FPDivide_IMPL (UL(0x1) << MVFR0_FPDivide_SHIFT) 12312abeef73SAndrew Turner #define MVFR0_FPSqrt_SHIFT 20 12322abeef73SAndrew Turner #define MVFR0_FPSqrt_MASK (UL(0xf) << MVFR0_FPSqrt_SHIFT) 12332abeef73SAndrew Turner #define MVFR0_FPSqrt_VAL(x) ((x) & MVFR0_FPSqrt_MASK) 12342abeef73SAndrew Turner #define MVFR0_FPSqrt_NONE (UL(0x0) << MVFR0_FPSqrt_SHIFT) 12352abeef73SAndrew Turner #define MVFR0_FPSqrt_IMPL (UL(0x1) << MVFR0_FPSqrt_SHIFT) 12362abeef73SAndrew Turner #define MVFR0_FPShVec_SHIFT 24 12372abeef73SAndrew Turner #define MVFR0_FPShVec_MASK (UL(0xf) << MVFR0_FPShVec_SHIFT) 12382abeef73SAndrew Turner #define MVFR0_FPShVec_VAL(x) ((x) & MVFR0_FPShVec_MASK) 12392abeef73SAndrew Turner #define MVFR0_FPShVec_NONE (UL(0x0) << MVFR0_FPShVec_SHIFT) 12402abeef73SAndrew Turner #define MVFR0_FPShVec_IMPL (UL(0x1) << MVFR0_FPShVec_SHIFT) 12412abeef73SAndrew Turner #define MVFR0_FPRound_SHIFT 28 12422abeef73SAndrew Turner #define MVFR0_FPRound_MASK (UL(0xf) << MVFR0_FPRound_SHIFT) 12432abeef73SAndrew Turner #define MVFR0_FPRound_VAL(x) ((x) & MVFR0_FPRound_MASK) 12442abeef73SAndrew Turner #define MVFR0_FPRound_NONE (UL(0x0) << MVFR0_FPRound_SHIFT) 12452abeef73SAndrew Turner #define MVFR0_FPRound_IMPL (UL(0x1) << MVFR0_FPRound_SHIFT) 12462abeef73SAndrew Turner 12472abeef73SAndrew Turner /* MVFR1_EL1 */ 12482abeef73SAndrew Turner #define MVFR1_EL1 MRS_REG(MVFR1_EL1) 12492abeef73SAndrew Turner #define MVFR1_EL1_op0 0x3 12502abeef73SAndrew Turner #define MVFR1_EL1_op1 0x0 12512abeef73SAndrew Turner #define MVFR1_EL1_CRn 0x0 12522abeef73SAndrew Turner #define MVFR1_EL1_CRm 0x3 12532abeef73SAndrew Turner #define MVFR1_EL1_op2 0x1 12542abeef73SAndrew Turner #define MVFR1_FPFtZ_SHIFT 0 12552abeef73SAndrew Turner #define MVFR1_FPFtZ_MASK (UL(0xf) << MVFR1_FPFtZ_SHIFT) 12562abeef73SAndrew Turner #define MVFR1_FPFtZ_VAL(x) ((x) & MVFR1_FPFtZ_MASK) 12572abeef73SAndrew Turner #define MVFR1_FPFtZ_NONE (UL(0x0) << MVFR1_FPFtZ_SHIFT) 12582abeef73SAndrew Turner #define MVFR1_FPFtZ_IMPL (UL(0x1) << MVFR1_FPFtZ_SHIFT) 12592abeef73SAndrew Turner #define MVFR1_FPDNaN_SHIFT 4 12602abeef73SAndrew Turner #define MVFR1_FPDNaN_MASK (UL(0xf) << MVFR1_FPDNaN_SHIFT) 12612abeef73SAndrew Turner #define MVFR1_FPDNaN_VAL(x) ((x) & MVFR1_FPDNaN_MASK) 12622abeef73SAndrew Turner #define MVFR1_FPDNaN_NONE (UL(0x0) << MVFR1_FPDNaN_SHIFT) 12632abeef73SAndrew Turner #define MVFR1_FPDNaN_IMPL (UL(0x1) << MVFR1_FPDNaN_SHIFT) 12642abeef73SAndrew Turner #define MVFR1_SIMDLS_SHIFT 8 12652abeef73SAndrew Turner #define MVFR1_SIMDLS_MASK (UL(0xf) << MVFR1_SIMDLS_SHIFT) 12662abeef73SAndrew Turner #define MVFR1_SIMDLS_VAL(x) ((x) & MVFR1_SIMDLS_MASK) 12672abeef73SAndrew Turner #define MVFR1_SIMDLS_NONE (UL(0x0) << MVFR1_SIMDLS_SHIFT) 12682abeef73SAndrew Turner #define MVFR1_SIMDLS_IMPL (UL(0x1) << MVFR1_SIMDLS_SHIFT) 12692abeef73SAndrew Turner #define MVFR1_SIMDInt_SHIFT 12 12702abeef73SAndrew Turner #define MVFR1_SIMDInt_MASK (UL(0xf) << MVFR1_SIMDInt_SHIFT) 12712abeef73SAndrew Turner #define MVFR1_SIMDInt_VAL(x) ((x) & MVFR1_SIMDInt_MASK) 12722abeef73SAndrew Turner #define MVFR1_SIMDInt_NONE (UL(0x0) << MVFR1_SIMDInt_SHIFT) 12732abeef73SAndrew Turner #define MVFR1_SIMDInt_IMPL (UL(0x1) << MVFR1_SIMDInt_SHIFT) 12742abeef73SAndrew Turner #define MVFR1_SIMDSP_SHIFT 16 12752abeef73SAndrew Turner #define MVFR1_SIMDSP_MASK (UL(0xf) << MVFR1_SIMDSP_SHIFT) 12762abeef73SAndrew Turner #define MVFR1_SIMDSP_VAL(x) ((x) & MVFR1_SIMDSP_MASK) 12772abeef73SAndrew Turner #define MVFR1_SIMDSP_NONE (UL(0x0) << MVFR1_SIMDSP_SHIFT) 12782abeef73SAndrew Turner #define MVFR1_SIMDSP_IMPL (UL(0x1) << MVFR1_SIMDSP_SHIFT) 12792abeef73SAndrew Turner #define MVFR1_SIMDHP_SHIFT 20 12802abeef73SAndrew Turner #define MVFR1_SIMDHP_MASK (UL(0xf) << MVFR1_SIMDHP_SHIFT) 12812abeef73SAndrew Turner #define MVFR1_SIMDHP_VAL(x) ((x) & MVFR1_SIMDHP_MASK) 12822abeef73SAndrew Turner #define MVFR1_SIMDHP_NONE (UL(0x0) << MVFR1_SIMDHP_SHIFT) 12832abeef73SAndrew Turner #define MVFR1_SIMDHP_CONV_SP (UL(0x1) << MVFR1_SIMDHP_SHIFT) 12842abeef73SAndrew Turner #define MVFR1_SIMDHP_ARITH (UL(0x2) << MVFR1_SIMDHP_SHIFT) 12852abeef73SAndrew Turner #define MVFR1_FPHP_SHIFT 24 12862abeef73SAndrew Turner #define MVFR1_FPHP_MASK (UL(0xf) << MVFR1_FPHP_SHIFT) 12872abeef73SAndrew Turner #define MVFR1_FPHP_VAL(x) ((x) & MVFR1_FPHP_MASK) 12882abeef73SAndrew Turner #define MVFR1_FPHP_NONE (UL(0x0) << MVFR1_FPHP_SHIFT) 12892abeef73SAndrew Turner #define MVFR1_FPHP_CONV_SP (UL(0x1) << MVFR1_FPHP_SHIFT) 12902abeef73SAndrew Turner #define MVFR1_FPHP_CONV_DP (UL(0x2) << MVFR1_FPHP_SHIFT) 12912abeef73SAndrew Turner #define MVFR1_FPHP_ARITH (UL(0x3) << MVFR1_FPHP_SHIFT) 12922abeef73SAndrew Turner #define MVFR1_SIMDFMAC_SHIFT 28 12932abeef73SAndrew Turner #define MVFR1_SIMDFMAC_MASK (UL(0xf) << MVFR1_SIMDFMAC_SHIFT) 12942abeef73SAndrew Turner #define MVFR1_SIMDFMAC_VAL(x) ((x) & MVFR1_SIMDFMAC_MASK) 12952abeef73SAndrew Turner #define MVFR1_SIMDFMAC_NONE (UL(0x0) << MVFR1_SIMDFMAC_SHIFT) 12962abeef73SAndrew Turner #define MVFR1_SIMDFMAC_IMPL (UL(0x1) << MVFR1_SIMDFMAC_SHIFT) 12972abeef73SAndrew Turner 12984dc81560SAndrew Turner /* OSDLR_EL1 */ 12994dc81560SAndrew Turner #define OSDLR_EL1 MRS_REG(OSDLR_EL1) 13004dc81560SAndrew Turner #define OSDLR_EL1_op0 2 13014dc81560SAndrew Turner #define OSDLR_EL1_op1 0 13024dc81560SAndrew Turner #define OSDLR_EL1_CRn 1 13034dc81560SAndrew Turner #define OSDLR_EL1_CRm 3 13044dc81560SAndrew Turner #define OSDLR_EL1_op2 4 13054dc81560SAndrew Turner 13064dc81560SAndrew Turner /* OSLAR_EL1 */ 13074dc81560SAndrew Turner #define OSLAR_EL1 MRS_REG(OSLAR_EL1) 13084dc81560SAndrew Turner #define OSLAR_EL1_op0 2 13094dc81560SAndrew Turner #define OSLAR_EL1_op1 0 13104dc81560SAndrew Turner #define OSLAR_EL1_CRn 1 13114dc81560SAndrew Turner #define OSLAR_EL1_CRm 0 13124dc81560SAndrew Turner #define OSLAR_EL1_op2 4 13134dc81560SAndrew Turner 13144dc81560SAndrew Turner /* OSLSR_EL1 */ 13154dc81560SAndrew Turner #define OSLSR_EL1 MRS_REG(OSLSR_EL1) 13164dc81560SAndrew Turner #define OSLSR_EL1_op0 2 13174dc81560SAndrew Turner #define OSLSR_EL1_op1 0 13184dc81560SAndrew Turner #define OSLSR_EL1_CRn 1 13194dc81560SAndrew Turner #define OSLSR_EL1_CRm 1 13204dc81560SAndrew Turner #define OSLSR_EL1_op2 4 13214dc81560SAndrew Turner 13222abeef73SAndrew Turner /* PAR_EL1 - Physical Address Register */ 13232abeef73SAndrew Turner #define PAR_F_SHIFT 0 13242abeef73SAndrew Turner #define PAR_F (0x1 << PAR_F_SHIFT) 13252abeef73SAndrew Turner #define PAR_SUCCESS(x) (((x) & PAR_F) == 0) 13262abeef73SAndrew Turner /* When PAR_F == 0 (success) */ 13272abeef73SAndrew Turner #define PAR_LOW_MASK 0xfff 13282abeef73SAndrew Turner #define PAR_SH_SHIFT 7 13292abeef73SAndrew Turner #define PAR_SH_MASK (0x3 << PAR_SH_SHIFT) 13302abeef73SAndrew Turner #define PAR_NS_SHIFT 9 13312abeef73SAndrew Turner #define PAR_NS_MASK (0x3 << PAR_NS_SHIFT) 13322abeef73SAndrew Turner #define PAR_PA_SHIFT 12 13332abeef73SAndrew Turner #define PAR_PA_MASK 0x0000fffffffff000 13342abeef73SAndrew Turner #define PAR_ATTR_SHIFT 56 13352abeef73SAndrew Turner #define PAR_ATTR_MASK (0xff << PAR_ATTR_SHIFT) 13362abeef73SAndrew Turner /* When PAR_F == 1 (aborted) */ 13372abeef73SAndrew Turner #define PAR_FST_SHIFT 1 13382abeef73SAndrew Turner #define PAR_FST_MASK (0x3f << PAR_FST_SHIFT) 13392abeef73SAndrew Turner #define PAR_PTW_SHIFT 8 13402abeef73SAndrew Turner #define PAR_PTW_MASK (0x1 << PAR_PTW_SHIFT) 13412abeef73SAndrew Turner #define PAR_S_SHIFT 9 13422abeef73SAndrew Turner #define PAR_S_MASK (0x1 << PAR_S_SHIFT) 13432abeef73SAndrew Turner 13442ad19997SAndrew Turner /* PMBIDR_EL1 */ 13452ad19997SAndrew Turner #define PMBIDR_EL1 MRS_REG(PMBIDR_EL1) 13462ad19997SAndrew Turner #define PMBIDR_EL1_op0 0x3 13472ad19997SAndrew Turner #define PMBIDR_EL1_op1 0x0 13482ad19997SAndrew Turner #define PMBIDR_EL1_CRn 0x9 13492ad19997SAndrew Turner #define PMBIDR_EL1_CRm 0xa 13502ad19997SAndrew Turner #define PMBIDR_EL1_op2 0x7 13512ad19997SAndrew Turner #define PMBIDR_Align_SHIFT 0 13522ad19997SAndrew Turner #define PMBIDR_Align_MASK (UL(0xf) << PMBIDR_Align_SHIFT) 13532ad19997SAndrew Turner #define PMBIDR_P_SHIFT 4 13542ad19997SAndrew Turner #define PMBIDR_P (UL(0x1) << PMBIDR_P_SHIFT) 13552ad19997SAndrew Turner #define PMBIDR_F_SHIFT 5 13562ad19997SAndrew Turner #define PMBIDR_F (UL(0x1) << PMBIDR_F_SHIFT) 13572ad19997SAndrew Turner 13582ad19997SAndrew Turner /* PMBLIMITR_EL1 */ 13592ad19997SAndrew Turner #define PMBLIMITR_EL1 MRS_REG(PMBLIMITR_EL1) 13602ad19997SAndrew Turner #define PMBLIMITR_EL1_op0 0x3 13612ad19997SAndrew Turner #define PMBLIMITR_EL1_op1 0x0 13622ad19997SAndrew Turner #define PMBLIMITR_EL1_CRn 0x9 13632ad19997SAndrew Turner #define PMBLIMITR_EL1_CRm 0xa 13642ad19997SAndrew Turner #define PMBLIMITR_EL1_op2 0x0 13652ad19997SAndrew Turner #define PMBLIMITR_E_SHIFT 0 13662ad19997SAndrew Turner #define PMBLIMITR_E (UL(0x1) << PMBLIMITR_E_SHIFT) 13672ad19997SAndrew Turner #define PMBLIMITR_FM_SHIFT 1 13682ad19997SAndrew Turner #define PMBLIMITR_FM_MASK (UL(0x3) << PMBLIMITR_FM_SHIFT) 13692ad19997SAndrew Turner #define PMBLIMITR_PMFZ_SHIFT 5 13702ad19997SAndrew Turner #define PMBLIMITR_PMFZ (UL(0x1) << PMBLIMITR_PMFZ_SHIFT) 13712ad19997SAndrew Turner #define PMBLIMITR_LIMIT_SHIFT 12 13722ad19997SAndrew Turner #define PMBLIMITR_LIMIT_MASK \ 13732ad19997SAndrew Turner (UL(0xfffffffffffff) << PMBLIMITR_LIMIT_SHIFT) 13742ad19997SAndrew Turner 13752ad19997SAndrew Turner /* PMBPTR_EL1 */ 13762ad19997SAndrew Turner #define PMBPTR_EL1 MRS_REG(PMBPTR_EL1) 13772ad19997SAndrew Turner #define PMBPTR_EL1_op0 0x3 13782ad19997SAndrew Turner #define PMBPTR_EL1_op1 0x0 13792ad19997SAndrew Turner #define PMBPTR_EL1_CRn 0x9 13802ad19997SAndrew Turner #define PMBPTR_EL1_CRm 0xa 13812ad19997SAndrew Turner #define PMBPTR_EL1_op2 0x1 13822ad19997SAndrew Turner #define PMBPTR_PTR_SHIFT 0 13832ad19997SAndrew Turner #define PMBPTR_PTR_MASK \ 13842ad19997SAndrew Turner (UL(0xffffffffffffffff) << PMBPTR_PTR_SHIFT) 13852ad19997SAndrew Turner 13862ad19997SAndrew Turner /* PMBSR_EL1 */ 13872ad19997SAndrew Turner #define PMBSR_EL1 MRS_REG(PMBSR_EL1) 13882ad19997SAndrew Turner #define PMBSR_EL1_op0 0x3 13892ad19997SAndrew Turner #define PMBSR_EL1_op1 0x0 13902ad19997SAndrew Turner #define PMBSR_EL1_CRn 0x9 13912ad19997SAndrew Turner #define PMBSR_EL1_CRm 0xa 13922ad19997SAndrew Turner #define PMBSR_EL1_op2 0x3 13932ad19997SAndrew Turner #define PMBSR_MSS_SHIFT 0 13942ad19997SAndrew Turner #define PMBSR_MSS_MASK (UL(0xffff) << PMBSR_MSS_SHIFT) 13952ad19997SAndrew Turner #define PMBSR_COLL_SHIFT 16 13962ad19997SAndrew Turner #define PMBSR_COLL (UL(0x1) << PMBSR_COLL_SHIFT) 13972ad19997SAndrew Turner #define PMBSR_S_SHIFT 17 13982ad19997SAndrew Turner #define PMBSR_S (UL(0x1) << PMBSR_S_SHIFT) 13992ad19997SAndrew Turner #define PMBSR_EA_SHIFT 18 14002ad19997SAndrew Turner #define PMBSR_EA (UL(0x1) << PMBSR_EA_SHIFT) 14012ad19997SAndrew Turner #define PMBSR_DL_SHIFT 19 14022ad19997SAndrew Turner #define PMBSR_DL (UL(0x1) << PMBSR_DL_SHIFT) 14032ad19997SAndrew Turner #define PMBSR_EC_SHIFT 26 14042ad19997SAndrew Turner #define PMBSR_EC_MASK (UL(0x3f) << PMBSR_EC_SHIFT) 14052ad19997SAndrew Turner 14064dc81560SAndrew Turner /* PMCCFILTR_EL0 */ 14074dc81560SAndrew Turner #define PMCCFILTR_EL0 MRS_REG(PMCCFILTR_EL0) 14084dc81560SAndrew Turner #define PMCCFILTR_EL0_op0 3 14094dc81560SAndrew Turner #define PMCCFILTR_EL0_op1 3 14104dc81560SAndrew Turner #define PMCCFILTR_EL0_CRn 14 14114dc81560SAndrew Turner #define PMCCFILTR_EL0_CRm 15 14124dc81560SAndrew Turner #define PMCCFILTR_EL0_op2 7 14134dc81560SAndrew Turner 14144dc81560SAndrew Turner /* PMCCNTR_EL0 */ 14154dc81560SAndrew Turner #define PMCCNTR_EL0 MRS_REG(PMCCNTR_EL0) 14164dc81560SAndrew Turner #define PMCCNTR_EL0_op0 3 14174dc81560SAndrew Turner #define PMCCNTR_EL0_op1 3 14184dc81560SAndrew Turner #define PMCCNTR_EL0_CRn 9 14194dc81560SAndrew Turner #define PMCCNTR_EL0_CRm 13 14204dc81560SAndrew Turner #define PMCCNTR_EL0_op2 0 14214dc81560SAndrew Turner 14224dc81560SAndrew Turner /* PMCEID0_EL0 */ 14234dc81560SAndrew Turner #define PMCEID0_EL0 MRS_REG(PMCEID0_EL0) 14244dc81560SAndrew Turner #define PMCEID0_EL0_op0 3 14254dc81560SAndrew Turner #define PMCEID0_EL0_op1 3 14264dc81560SAndrew Turner #define PMCEID0_EL0_CRn 9 14274dc81560SAndrew Turner #define PMCEID0_EL0_CRm 12 14284dc81560SAndrew Turner #define PMCEID0_EL0_op2 6 14294dc81560SAndrew Turner 14304dc81560SAndrew Turner /* PMCEID1_EL0 */ 14314dc81560SAndrew Turner #define PMCEID1_EL0 MRS_REG(PMCEID1_EL0) 14324dc81560SAndrew Turner #define PMCEID1_EL0_op0 3 14334dc81560SAndrew Turner #define PMCEID1_EL0_op1 3 14344dc81560SAndrew Turner #define PMCEID1_EL0_CRn 9 14354dc81560SAndrew Turner #define PMCEID1_EL0_CRm 12 14364dc81560SAndrew Turner #define PMCEID1_EL0_op2 7 14374dc81560SAndrew Turner 14384dc81560SAndrew Turner /* PMCNTENCLR_EL0 */ 14394dc81560SAndrew Turner #define PMCNTENCLR_EL0 MRS_REG(PMCNTENCLR_EL0) 14404dc81560SAndrew Turner #define PMCNTENCLR_EL0_op0 3 14414dc81560SAndrew Turner #define PMCNTENCLR_EL0_op1 3 14424dc81560SAndrew Turner #define PMCNTENCLR_EL0_CRn 9 14434dc81560SAndrew Turner #define PMCNTENCLR_EL0_CRm 12 14444dc81560SAndrew Turner #define PMCNTENCLR_EL0_op2 2 14454dc81560SAndrew Turner 14464dc81560SAndrew Turner /* PMCNTENSET_EL0 */ 14474dc81560SAndrew Turner #define PMCNTENSET_EL0 MRS_REG(PMCNTENSET_EL0) 14484dc81560SAndrew Turner #define PMCNTENSET_EL0_op0 3 14494dc81560SAndrew Turner #define PMCNTENSET_EL0_op1 3 14504dc81560SAndrew Turner #define PMCNTENSET_EL0_CRn 9 14514dc81560SAndrew Turner #define PMCNTENSET_EL0_CRm 12 14524dc81560SAndrew Turner #define PMCNTENSET_EL0_op2 1 14534dc81560SAndrew Turner 1454a1b4e4faSAndrew Turner /* PMCR_EL0 - Perfomance Monitoring Counters */ 14554dc81560SAndrew Turner #define PMCR_EL0 MRS_REG(PMCR_EL0) 14564dc81560SAndrew Turner #define PMCR_EL0_op0 3 14574dc81560SAndrew Turner #define PMCR_EL0_op1 3 14584dc81560SAndrew Turner #define PMCR_EL0_CRn 9 14594dc81560SAndrew Turner #define PMCR_EL0_CRm 12 14604dc81560SAndrew Turner #define PMCR_EL0_op2 0 1461a1b4e4faSAndrew Turner #define PMCR_E (1 << 0) /* Enable all counters */ 1462a1b4e4faSAndrew Turner #define PMCR_P (1 << 1) /* Reset all counters */ 1463a1b4e4faSAndrew Turner #define PMCR_C (1 << 2) /* Clock counter reset */ 1464a1b4e4faSAndrew Turner #define PMCR_D (1 << 3) /* CNTR counts every 64 clk cycles */ 1465a1b4e4faSAndrew Turner #define PMCR_X (1 << 4) /* Export to ext. monitoring (ETM) */ 1466a1b4e4faSAndrew Turner #define PMCR_DP (1 << 5) /* Disable CCNT if non-invasive debug*/ 1467a1b4e4faSAndrew Turner #define PMCR_LC (1 << 6) /* Long cycle count enable */ 1468a1b4e4faSAndrew Turner #define PMCR_IMP_SHIFT 24 /* Implementer code */ 1469a1b4e4faSAndrew Turner #define PMCR_IMP_MASK (0xff << PMCR_IMP_SHIFT) 1470a1b4e4faSAndrew Turner #define PMCR_IMP_ARM 0x41 1471a1b4e4faSAndrew Turner #define PMCR_IDCODE_SHIFT 16 /* Identification code */ 1472a1b4e4faSAndrew Turner #define PMCR_IDCODE_MASK (0xff << PMCR_IDCODE_SHIFT) 1473a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A57 0x01 1474a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A72 0x02 1475a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A53 0x03 1476a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A73 0x04 1477a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A35 0x0a 1478a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A76 0x0b 1479a1b4e4faSAndrew Turner #define PMCR_IDCODE_NEOVERSE_N1 0x0c 1480a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A77 0x10 1481a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A55 0x45 1482a1b4e4faSAndrew Turner #define PMCR_IDCODE_NEOVERSE_E1 0x46 1483a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A75 0x4a 1484a1b4e4faSAndrew Turner #define PMCR_N_SHIFT 11 /* Number of counters implemented */ 1485a1b4e4faSAndrew Turner #define PMCR_N_MASK (0x1f << PMCR_N_SHIFT) 1486a1b4e4faSAndrew Turner 14874dc81560SAndrew Turner /* PMEVCNTR<n>_EL0 */ 14884dc81560SAndrew Turner #define PMEVCNTR_EL0_op0 3 14894dc81560SAndrew Turner #define PMEVCNTR_EL0_op1 3 14904dc81560SAndrew Turner #define PMEVCNTR_EL0_CRn 14 14914dc81560SAndrew Turner #define PMEVCNTR_EL0_CRm 8 14924dc81560SAndrew Turner /* 14934dc81560SAndrew Turner * PMEVCNTRn_EL0_CRm[1:0] holds the upper 2 bits of 'n' 14944dc81560SAndrew Turner * PMEVCNTRn_EL0_op2 holds the lower 3 bits of 'n' 14954dc81560SAndrew Turner */ 14964dc81560SAndrew Turner 1497456d57a6SJohn Baldwin /* PMEVTYPER<n>_EL0 - Performance Monitoring Event Type */ 14984dc81560SAndrew Turner #define PMEVTYPER_EL0_op0 3 14994dc81560SAndrew Turner #define PMEVTYPER_EL0_op1 3 15004dc81560SAndrew Turner #define PMEVTYPER_EL0_CRn 14 15014dc81560SAndrew Turner #define PMEVTYPER_EL0_CRm 12 15024dc81560SAndrew Turner /* 15034dc81560SAndrew Turner * PMEVTYPERn_EL0_CRm[1:0] holds the upper 2 bits of 'n' 15044dc81560SAndrew Turner * PMEVTYPERn_EL0_op2 holds the lower 3 bits of 'n' 15054dc81560SAndrew Turner */ 1506456d57a6SJohn Baldwin #define PMEVTYPER_EVTCOUNT_MASK 0x000003ff /* ARMv8.0 */ 1507456d57a6SJohn Baldwin #define PMEVTYPER_EVTCOUNT_8_1_MASK 0x0000ffff /* ARMv8.1+ */ 1508456d57a6SJohn Baldwin #define PMEVTYPER_MT (1 << 25) /* Multithreading */ 1509456d57a6SJohn Baldwin #define PMEVTYPER_M (1 << 26) /* Secure EL3 filtering */ 1510456d57a6SJohn Baldwin #define PMEVTYPER_NSH (1 << 27) /* Non-secure hypervisor filtering */ 1511456d57a6SJohn Baldwin #define PMEVTYPER_NSU (1 << 28) /* Non-secure user filtering */ 1512456d57a6SJohn Baldwin #define PMEVTYPER_NSK (1 << 29) /* Non-secure kernel filtering */ 1513456d57a6SJohn Baldwin #define PMEVTYPER_U (1 << 30) /* User filtering */ 1514456d57a6SJohn Baldwin #define PMEVTYPER_P (1 << 31) /* Privileged filtering */ 15154dc81560SAndrew Turner 15164dc81560SAndrew Turner /* PMINTENCLR_EL1 */ 15174dc81560SAndrew Turner #define PMINTENCLR_EL1 MRS_REG(PMINTENCLR_EL1) 15184dc81560SAndrew Turner #define PMINTENCLR_EL1_op0 3 15194dc81560SAndrew Turner #define PMINTENCLR_EL1_op1 0 15204dc81560SAndrew Turner #define PMINTENCLR_EL1_CRn 9 15214dc81560SAndrew Turner #define PMINTENCLR_EL1_CRm 14 15224dc81560SAndrew Turner #define PMINTENCLR_EL1_op2 2 15234dc81560SAndrew Turner 15244dc81560SAndrew Turner /* PMINTENSET_EL1 */ 15254dc81560SAndrew Turner #define PMINTENSET_EL1 MRS_REG(PMINTENSET_EL1) 15264dc81560SAndrew Turner #define PMINTENSET_EL1_op0 3 15274dc81560SAndrew Turner #define PMINTENSET_EL1_op1 0 15284dc81560SAndrew Turner #define PMINTENSET_EL1_CRn 9 15294dc81560SAndrew Turner #define PMINTENSET_EL1_CRm 14 15304dc81560SAndrew Turner #define PMINTENSET_EL1_op2 1 15314dc81560SAndrew Turner 15324dc81560SAndrew Turner /* PMMIR_EL1 */ 15334dc81560SAndrew Turner #define PMMIR_EL1 MRS_REG(PMMIR_EL1) 15344dc81560SAndrew Turner #define PMMIR_EL1_op0 3 15354dc81560SAndrew Turner #define PMMIR_EL1_op1 0 15364dc81560SAndrew Turner #define PMMIR_EL1_CRn 9 15374dc81560SAndrew Turner #define PMMIR_EL1_CRm 14 15384dc81560SAndrew Turner #define PMMIR_EL1_op2 6 15394dc81560SAndrew Turner 15404dc81560SAndrew Turner /* PMOVSCLR_EL0 */ 15414dc81560SAndrew Turner #define PMOVSCLR_EL0 MRS_REG(PMOVSCLR_EL0) 15424dc81560SAndrew Turner #define PMOVSCLR_EL0_op0 3 15434dc81560SAndrew Turner #define PMOVSCLR_EL0_op1 3 15444dc81560SAndrew Turner #define PMOVSCLR_EL0_CRn 9 15454dc81560SAndrew Turner #define PMOVSCLR_EL0_CRm 12 15464dc81560SAndrew Turner #define PMOVSCLR_EL0_op2 3 15474dc81560SAndrew Turner 15484dc81560SAndrew Turner /* PMOVSSET_EL0 */ 15494dc81560SAndrew Turner #define PMOVSSET_EL0 MRS_REG(PMOVSSET_EL0) 15504dc81560SAndrew Turner #define PMOVSSET_EL0_op0 3 15514dc81560SAndrew Turner #define PMOVSSET_EL0_op1 3 15524dc81560SAndrew Turner #define PMOVSSET_EL0_CRn 9 15534dc81560SAndrew Turner #define PMOVSSET_EL0_CRm 14 15544dc81560SAndrew Turner #define PMOVSSET_EL0_op2 3 15554dc81560SAndrew Turner 15562ad19997SAndrew Turner /* PMSCR_EL1 */ 15572ad19997SAndrew Turner #define PMSCR_EL1 MRS_REG(PMSCR_EL1) 15582ad19997SAndrew Turner #define PMSCR_EL1_op0 0x3 15592ad19997SAndrew Turner #define PMSCR_EL1_op1 0x0 15602ad19997SAndrew Turner #define PMSCR_EL1_CRn 0x9 15612ad19997SAndrew Turner #define PMSCR_EL1_CRm 0x9 15622ad19997SAndrew Turner #define PMSCR_EL1_op2 0x0 15632ad19997SAndrew Turner #define PMSCR_E0SPE_SHIFT 0 15642ad19997SAndrew Turner #define PMSCR_E0SPE (UL(0x1) << PMSCR_E0SPE_SHIFT) 15652ad19997SAndrew Turner #define PMSCR_E1SPE_SHIFT 1 15662ad19997SAndrew Turner #define PMSCR_E1SPE (UL(0x1) << PMSCR_E1SPE_SHIFT) 15672ad19997SAndrew Turner #define PMSCR_CX_SHIFT 3 15682ad19997SAndrew Turner #define PMSCR_CX (UL(0x1) << PMSCR_CX_SHIFT) 15692ad19997SAndrew Turner #define PMSCR_PA_SHIFT 4 15702ad19997SAndrew Turner #define PMSCR_PA (UL(0x1) << PMSCR_PA_SHIFT) 15712ad19997SAndrew Turner #define PMSCR_TS_SHIFT 5 15722ad19997SAndrew Turner #define PMSCR_TS (UL(0x1) << PMSCR_TS_SHIFT) 15732ad19997SAndrew Turner #define PMSCR_PCT_SHIFT 6 15742ad19997SAndrew Turner #define PMSCR_PCT_MASK (UL(0x3) << PMSCR_PCT_SHIFT) 15752ad19997SAndrew Turner 15764dc81560SAndrew Turner /* PMSELR_EL0 */ 15774dc81560SAndrew Turner #define PMSELR_EL0 MRS_REG(PMSELR_EL0) 15784dc81560SAndrew Turner #define PMSELR_EL0_op0 3 15794dc81560SAndrew Turner #define PMSELR_EL0_op1 3 15804dc81560SAndrew Turner #define PMSELR_EL0_CRn 9 15814dc81560SAndrew Turner #define PMSELR_EL0_CRm 12 15824dc81560SAndrew Turner #define PMSELR_EL0_op2 5 15834dc81560SAndrew Turner #define PMSELR_SEL_MASK 0x1f 15844dc81560SAndrew Turner 15852ad19997SAndrew Turner /* PMSEVFR_EL1 */ 15862ad19997SAndrew Turner #define PMSEVFR_EL1 MRS_REG(PMSEVFR_EL1) 15872ad19997SAndrew Turner #define PMSEVFR_EL1_op0 0x3 15882ad19997SAndrew Turner #define PMSEVFR_EL1_op1 0x0 15892ad19997SAndrew Turner #define PMSEVFR_EL1_CRn 0x9 15902ad19997SAndrew Turner #define PMSEVFR_EL1_CRm 0x9 15912ad19997SAndrew Turner #define PMSEVFR_EL1_op2 0x5 15922ad19997SAndrew Turner 15932ad19997SAndrew Turner /* PMSFCR_EL1 */ 15942ad19997SAndrew Turner #define PMSFCR_EL1 MRS_REG(PMSFCR_EL1) 15952ad19997SAndrew Turner #define PMSFCR_EL1_op0 0x3 15962ad19997SAndrew Turner #define PMSFCR_EL1_op1 0x0 15972ad19997SAndrew Turner #define PMSFCR_EL1_CRn 0x9 15982ad19997SAndrew Turner #define PMSFCR_EL1_CRm 0x9 15992ad19997SAndrew Turner #define PMSFCR_EL1_op2 0x4 16002ad19997SAndrew Turner #define PMSFCR_FE_SHIFT 0 16012ad19997SAndrew Turner #define PMSFCR_FE (UL(0x1) << PMSFCR_FE_SHIFT) 16022ad19997SAndrew Turner #define PMSFCR_FT_SHIFT 1 16032ad19997SAndrew Turner #define PMSFCR_FT (UL(0x1) << PMSFCR_FT_SHIFT) 16042ad19997SAndrew Turner #define PMSFCR_FL_SHIFT 2 16052ad19997SAndrew Turner #define PMSFCR_FL (UL(0x1) << PMSFCR_FL_SHIFT) 16062ad19997SAndrew Turner #define PMSFCR_FnE_SHIFT 3 16072ad19997SAndrew Turner #define PMSFCR_FnE (UL(0x1) << PMSFCR_FnE_SHIFT) 16082ad19997SAndrew Turner #define PMSFCR_B_SHIFT 16 16092ad19997SAndrew Turner #define PMSFCR_B (UL(0x1) << PMSFCR_B_SHIFT) 16102ad19997SAndrew Turner #define PMSFCR_LD_SHIFT 17 16112ad19997SAndrew Turner #define PMSFCR_LD (UL(0x1) << PMSFCR_LD_SHIFT) 16122ad19997SAndrew Turner #define PMSFCR_ST_SHIFT 18 16132ad19997SAndrew Turner #define PMSFCR_ST (UL(0x1) << PMSFCR_ST_SHIFT) 16142ad19997SAndrew Turner 16152ad19997SAndrew Turner /* PMSICR_EL1 */ 16162ad19997SAndrew Turner #define PMSICR_EL1 MRS_REG(PMSICR_EL1) 16172ad19997SAndrew Turner #define PMSICR_EL1_op0 0x3 16182ad19997SAndrew Turner #define PMSICR_EL1_op1 0x0 16192ad19997SAndrew Turner #define PMSICR_EL1_CRn 0x9 16202ad19997SAndrew Turner #define PMSICR_EL1_CRm 0x9 16212ad19997SAndrew Turner #define PMSICR_EL1_op2 0x2 16222ad19997SAndrew Turner #define PMSICR_COUNT_SHIFT 0 16232ad19997SAndrew Turner #define PMSICR_COUNT_MASK (UL(0xffffffff) << PMSICR_COUNT_SHIFT) 16242ad19997SAndrew Turner #define PMSICR_ECOUNT_SHIFT 56 16252ad19997SAndrew Turner #define PMSICR_ECOUNT_MASK (UL(0xff) << PMSICR_ECOUNT_SHIFT) 16262ad19997SAndrew Turner 16272ad19997SAndrew Turner /* PMSIDR_EL1 */ 16282ad19997SAndrew Turner #define PMSIDR_EL1 MRS_REG(PMSIDR_EL1) 16292ad19997SAndrew Turner #define PMSIDR_EL1_op0 0x3 16302ad19997SAndrew Turner #define PMSIDR_EL1_op1 0x0 16312ad19997SAndrew Turner #define PMSIDR_EL1_CRn 0x9 16322ad19997SAndrew Turner #define PMSIDR_EL1_CRm 0x9 16332ad19997SAndrew Turner #define PMSIDR_EL1_op2 0x7 16342ad19997SAndrew Turner #define PMSIDR_FE_SHIFT 0 16352ad19997SAndrew Turner #define PMSIDR_FE (UL(0x1) << PMSIDR_FE_SHIFT) 16362ad19997SAndrew Turner #define PMSIDR_FT_SHIFT 1 16372ad19997SAndrew Turner #define PMSIDR_FT (UL(0x1) << PMSIDR_FT_SHIFT) 16382ad19997SAndrew Turner #define PMSIDR_FL_SHIFT 2 16392ad19997SAndrew Turner #define PMSIDR_FL (UL(0x1) << PMSIDR_FL_SHIFT) 16402ad19997SAndrew Turner #define PMSIDR_ArchInst_SHIFT 3 16412ad19997SAndrew Turner #define PMSIDR_ArchInst (UL(0x1) << PMSIDR_ArchInst_SHIFT) 16422ad19997SAndrew Turner #define PMSIDR_LDS_SHIFT 4 16432ad19997SAndrew Turner #define PMSIDR_LDS (UL(0x1) << PMSIDR_LDS_SHIFT) 16442ad19997SAndrew Turner #define PMSIDR_ERnd_SHIFT 5 16452ad19997SAndrew Turner #define PMSIDR_ERnd (UL(0x1) << PMSIDR_ERnd_SHIFT) 16462ad19997SAndrew Turner #define PMSIDR_FnE_SHIFT 6 16472ad19997SAndrew Turner #define PMSIDR_FnE (UL(0x1) << PMSIDR_FnE_SHIFT) 16482ad19997SAndrew Turner #define PMSIDR_Interval_SHIFT 8 16492ad19997SAndrew Turner #define PMSIDR_Interval_MASK (UL(0xf) << PMSIDR_Interval_SHIFT) 16502ad19997SAndrew Turner #define PMSIDR_MaxSize_SHIFT 12 16512ad19997SAndrew Turner #define PMSIDR_MaxSize_MASK (UL(0xf) << PMSIDR_MaxSize_SHIFT) 16522ad19997SAndrew Turner #define PMSIDR_CountSize_SHIFT 16 16532ad19997SAndrew Turner #define PMSIDR_CountSize_MASK (UL(0xf) << PMSIDR_CountSize_SHIFT) 16542ad19997SAndrew Turner #define PMSIDR_Format_SHIFT 20 16552ad19997SAndrew Turner #define PMSIDR_Format_MASK (UL(0xf) << PMSIDR_Format_SHIFT) 16562ad19997SAndrew Turner #define PMSIDR_PBT_SHIFT 24 16572ad19997SAndrew Turner #define PMSIDR_PBT (UL(0x1) << PMSIDR_PBT_SHIFT) 16582ad19997SAndrew Turner 16592ad19997SAndrew Turner /* PMSIRR_EL1 */ 16602ad19997SAndrew Turner #define PMSIRR_EL1 MRS_REG(PMSIRR_EL1) 16612ad19997SAndrew Turner #define PMSIRR_EL1_op0 0x3 16622ad19997SAndrew Turner #define PMSIRR_EL1_op1 0x0 16632ad19997SAndrew Turner #define PMSIRR_EL1_CRn 0x9 16642ad19997SAndrew Turner #define PMSIRR_EL1_CRm 0x9 16652ad19997SAndrew Turner #define PMSIRR_EL1_op2 0x3 16662ad19997SAndrew Turner #define PMSIRR_RND_SHIFT 0 16672ad19997SAndrew Turner #define PMSIRR_RND (UL(0x1) << PMSIRR_RND_SHIFT) 16682ad19997SAndrew Turner #define PMSIRR_INTERVAL_SHIFT 8 16692ad19997SAndrew Turner #define PMSIRR_INTERVAL_MASK (UL(0xffffff) << PMSIRR_INTERVAL_SHIFT) 16702ad19997SAndrew Turner 16712ad19997SAndrew Turner /* PMSLATFR_EL1 */ 16722ad19997SAndrew Turner #define PMSLATFR_EL1 MRS_REG(PMSLATFR_EL1) 16732ad19997SAndrew Turner #define PMSLATFR_EL1_op0 0x3 16742ad19997SAndrew Turner #define PMSLATFR_EL1_op1 0x0 16752ad19997SAndrew Turner #define PMSLATFR_EL1_CRn 0x9 16762ad19997SAndrew Turner #define PMSLATFR_EL1_CRm 0x9 16772ad19997SAndrew Turner #define PMSLATFR_EL1_op2 0x6 16782ad19997SAndrew Turner #define PMSLATFR_MINLAT_SHIFT 0 16792ad19997SAndrew Turner #define PMSLATFR_MINLAT_MASK (UL(0xfff) << PMSLATFR_MINLAT_SHIFT) 16802ad19997SAndrew Turner 16812ad19997SAndrew Turner /* PMSNEVFR_EL1 */ 16822ad19997SAndrew Turner #define PMSNEVFR_EL1 MRS_REG(PMSNEVFR_EL1) 16832ad19997SAndrew Turner #define PMSNEVFR_EL1_op0 0x3 16842ad19997SAndrew Turner #define PMSNEVFR_EL1_op1 0x0 16852ad19997SAndrew Turner #define PMSNEVFR_EL1_CRn 0x9 16862ad19997SAndrew Turner #define PMSNEVFR_EL1_CRm 0x9 16872ad19997SAndrew Turner #define PMSNEVFR_EL1_op2 0x1 16882ad19997SAndrew Turner 16894dc81560SAndrew Turner /* PMSWINC_EL0 */ 16904dc81560SAndrew Turner #define PMSWINC_EL0 MRS_REG(PMSWINC_EL0) 16914dc81560SAndrew Turner #define PMSWINC_EL0_op0 3 16924dc81560SAndrew Turner #define PMSWINC_EL0_op1 3 16934dc81560SAndrew Turner #define PMSWINC_EL0_CRn 9 16944dc81560SAndrew Turner #define PMSWINC_EL0_CRm 12 16954dc81560SAndrew Turner #define PMSWINC_EL0_op2 4 16964dc81560SAndrew Turner 16974dc81560SAndrew Turner /* PMUSERENR_EL0 */ 16984dc81560SAndrew Turner #define PMUSERENR_EL0 MRS_REG(PMUSERENR_EL0) 16994dc81560SAndrew Turner #define PMUSERENR_EL0_op0 3 17004dc81560SAndrew Turner #define PMUSERENR_EL0_op1 3 17014dc81560SAndrew Turner #define PMUSERENR_EL0_CRn 9 17024dc81560SAndrew Turner #define PMUSERENR_EL0_CRm 14 17034dc81560SAndrew Turner #define PMUSERENR_EL0_op2 0 17044dc81560SAndrew Turner 17054dc81560SAndrew Turner /* PMXEVCNTR_EL0 */ 17064dc81560SAndrew Turner #define PMXEVCNTR_EL0 MRS_REG(PMXEVCNTR_EL0) 17074dc81560SAndrew Turner #define PMXEVCNTR_EL0_op0 3 17084dc81560SAndrew Turner #define PMXEVCNTR_EL0_op1 3 17094dc81560SAndrew Turner #define PMXEVCNTR_EL0_CRn 9 17104dc81560SAndrew Turner #define PMXEVCNTR_EL0_CRm 13 17114dc81560SAndrew Turner #define PMXEVCNTR_EL0_op2 2 17124dc81560SAndrew Turner 17134dc81560SAndrew Turner /* PMXEVTYPER_EL0 */ 17144dc81560SAndrew Turner #define PMXEVTYPER_EL0 MRS_REG(PMXEVTYPER_EL0) 17154dc81560SAndrew Turner #define PMXEVTYPER_EL0_op0 3 17164dc81560SAndrew Turner #define PMXEVTYPER_EL0_op1 3 17174dc81560SAndrew Turner #define PMXEVTYPER_EL0_CRn 9 17184dc81560SAndrew Turner #define PMXEVTYPER_EL0_CRm 13 17194dc81560SAndrew Turner #define PMXEVTYPER_EL0_op2 1 17204dc81560SAndrew Turner 1721e5acd89cSAndrew Turner /* SCTLR_EL1 - System Control Register */ 1722aec085f4SAndrew Turner #define SCTLR_RES1 0x30d00800 /* Reserved ARMv8.0, write 1 */ 17235484e6d9SAndrew Turner #define SCTLR_M (UL(0x1) << 0) 17245484e6d9SAndrew Turner #define SCTLR_A (UL(0x1) << 1) 17255484e6d9SAndrew Turner #define SCTLR_C (UL(0x1) << 2) 17265484e6d9SAndrew Turner #define SCTLR_SA (UL(0x1) << 3) 17275484e6d9SAndrew Turner #define SCTLR_SA0 (UL(0x1) << 4) 17285484e6d9SAndrew Turner #define SCTLR_CP15BEN (UL(0x1) << 5) 17295484e6d9SAndrew Turner #define SCTLR_nAA (UL(0x1) << 6) 17305484e6d9SAndrew Turner #define SCTLR_ITD (UL(0x1) << 7) 17315484e6d9SAndrew Turner #define SCTLR_SED (UL(0x1) << 8) 17325484e6d9SAndrew Turner #define SCTLR_UMA (UL(0x1) << 9) 17335484e6d9SAndrew Turner #define SCTLR_EnRCTX (UL(0x1) << 10) 17345484e6d9SAndrew Turner #define SCTLR_EOS (UL(0x1) << 11) 17355484e6d9SAndrew Turner #define SCTLR_I (UL(0x1) << 12) 17365484e6d9SAndrew Turner #define SCTLR_EnDB (UL(0x1) << 13) 17375484e6d9SAndrew Turner #define SCTLR_DZE (UL(0x1) << 14) 17385484e6d9SAndrew Turner #define SCTLR_UCT (UL(0x1) << 15) 17395484e6d9SAndrew Turner #define SCTLR_nTWI (UL(0x1) << 16) 1740a9725b63SAndrew Turner /* Bit 17 is reserved */ 17415484e6d9SAndrew Turner #define SCTLR_nTWE (UL(0x1) << 18) 17425484e6d9SAndrew Turner #define SCTLR_WXN (UL(0x1) << 19) 17435484e6d9SAndrew Turner #define SCTLR_TSCXT (UL(0x1) << 20) 17445484e6d9SAndrew Turner #define SCTLR_IESB (UL(0x1) << 21) 17455484e6d9SAndrew Turner #define SCTLR_EIS (UL(0x1) << 22) 17465484e6d9SAndrew Turner #define SCTLR_SPAN (UL(0x1) << 23) 17475484e6d9SAndrew Turner #define SCTLR_E0E (UL(0x1) << 24) 17485484e6d9SAndrew Turner #define SCTLR_EE (UL(0x1) << 25) 17495484e6d9SAndrew Turner #define SCTLR_UCI (UL(0x1) << 26) 17505484e6d9SAndrew Turner #define SCTLR_EnDA (UL(0x1) << 27) 17515484e6d9SAndrew Turner #define SCTLR_nTLSMD (UL(0x1) << 28) 17525484e6d9SAndrew Turner #define SCTLR_LSMAOE (UL(0x1) << 29) 17535484e6d9SAndrew Turner #define SCTLR_EnIB (UL(0x1) << 30) 17545484e6d9SAndrew Turner #define SCTLR_EnIA (UL(0x1) << 31) 17555484e6d9SAndrew Turner /* Bits 34:32 are reserved */ 17565484e6d9SAndrew Turner #define SCTLR_BT0 (UL(0x1) << 35) 17575484e6d9SAndrew Turner #define SCTLR_BT1 (UL(0x1) << 36) 17585484e6d9SAndrew Turner #define SCTLR_ITFSB (UL(0x1) << 37) 17595484e6d9SAndrew Turner #define SCTLR_TCF0_MASK (UL(0x3) << 38) 17605484e6d9SAndrew Turner #define SCTLR_TCF_MASK (UL(0x3) << 40) 17615484e6d9SAndrew Turner #define SCTLR_ATA0 (UL(0x1) << 42) 17625484e6d9SAndrew Turner #define SCTLR_ATA (UL(0x1) << 43) 17635484e6d9SAndrew Turner #define SCTLR_DSSBS (UL(0x1) << 44) 17645484e6d9SAndrew Turner #define SCTLR_TWEDEn (UL(0x1) << 45) 17655484e6d9SAndrew Turner #define SCTLR_TWEDEL_MASK (UL(0xf) << 46) 17665484e6d9SAndrew Turner /* Bits 53:50 are reserved */ 17675484e6d9SAndrew Turner #define SCTLR_EnASR (UL(0x1) << 54) 17685484e6d9SAndrew Turner #define SCTLR_EnAS0 (UL(0x1) << 55) 17695484e6d9SAndrew Turner #define SCTLR_EnALS (UL(0x1) << 56) 17705484e6d9SAndrew Turner #define SCTLR_EPAN (UL(0x1) << 57) 1771e5acd89cSAndrew Turner 1772e5acd89cSAndrew Turner /* SPSR_EL1 */ 1773e5acd89cSAndrew Turner /* 1774e5acd89cSAndrew Turner * When the exception is taken in AArch64: 1775e5acd89cSAndrew Turner * M[3:2] is the exception level 1776e5acd89cSAndrew Turner * M[1] is unused 1777e5acd89cSAndrew Turner * M[0] is the SP select: 1778e5acd89cSAndrew Turner * 0: always SP0 1779e5acd89cSAndrew Turner * 1: current ELs SP 1780e5acd89cSAndrew Turner */ 1781e5acd89cSAndrew Turner #define PSR_M_EL0t 0x00000000 1782e5acd89cSAndrew Turner #define PSR_M_EL1t 0x00000004 1783e5acd89cSAndrew Turner #define PSR_M_EL1h 0x00000005 1784e5acd89cSAndrew Turner #define PSR_M_EL2t 0x00000008 1785e5acd89cSAndrew Turner #define PSR_M_EL2h 0x00000009 17868c9c3144SOlivier Houchard #define PSR_M_64 0x00000000 17878c9c3144SOlivier Houchard #define PSR_M_32 0x00000010 17882b6a8dd5SEd Schouten #define PSR_M_MASK 0x0000000f 1789e5acd89cSAndrew Turner 17908c9c3144SOlivier Houchard #define PSR_T 0x00000020 17918c9c3144SOlivier Houchard 17922b6a8dd5SEd Schouten #define PSR_AARCH32 0x00000010 1793e5acd89cSAndrew Turner #define PSR_F 0x00000040 1794e5acd89cSAndrew Turner #define PSR_I 0x00000080 1795e5acd89cSAndrew Turner #define PSR_A 0x00000100 1796e5acd89cSAndrew Turner #define PSR_D 0x00000200 1797739e4482SAndrew Turner #define PSR_DAIF (PSR_D | PSR_A | PSR_I | PSR_F) 179817b6ee96SAndrew Turner /* The default DAIF mask. These bits are valid in spsr_el1 and daif */ 179917b6ee96SAndrew Turner #define PSR_DAIF_DEFAULT (PSR_F) 1800e5acd89cSAndrew Turner #define PSR_IL 0x00100000 1801e5acd89cSAndrew Turner #define PSR_SS 0x00200000 1802e5acd89cSAndrew Turner #define PSR_V 0x10000000 1803e5acd89cSAndrew Turner #define PSR_C 0x20000000 1804e5acd89cSAndrew Turner #define PSR_Z 0x40000000 1805e5acd89cSAndrew Turner #define PSR_N 0x80000000 1806521018d3SAndrew Turner #define PSR_FLAGS 0xf0000000 180731cf95ceSAndrew Turner /* PSR fields that can be set from 32-bit and 64-bit processes */ 180831cf95ceSAndrew Turner #define PSR_SETTABLE_32 PSR_FLAGS 180931cf95ceSAndrew Turner #define PSR_SETTABLE_64 (PSR_FLAGS | PSR_SS) 1810e5acd89cSAndrew Turner 1811e5acd89cSAndrew Turner /* TCR_EL1 - Translation Control Register */ 1812f3e9395dSAndrew Turner /* Bits 63:59 are reserved */ 1813f3e9395dSAndrew Turner #define TCR_TCMA1_SHIFT 58 1814f3e9395dSAndrew Turner #define TCR_TCMA1 (1UL << TCR_TCMA1_SHIFT) 1815f3e9395dSAndrew Turner #define TCR_TCMA0_SHIFT 57 1816f3e9395dSAndrew Turner #define TCR_TCMA0 (1UL << TCR_TCMA0_SHIFT) 1817f3e9395dSAndrew Turner #define TCR_E0PD1_SHIFT 56 1818f3e9395dSAndrew Turner #define TCR_E0PD1 (1UL << TCR_E0PD1_SHIFT) 1819f3e9395dSAndrew Turner #define TCR_E0PD0_SHIFT 55 1820f3e9395dSAndrew Turner #define TCR_E0PD0 (1UL << TCR_E0PD0_SHIFT) 1821f3e9395dSAndrew Turner #define TCR_NFD1_SHIFT 54 1822f3e9395dSAndrew Turner #define TCR_NFD1 (1UL << TCR_NFD1_SHIFT) 1823f3e9395dSAndrew Turner #define TCR_NFD0_SHIFT 53 1824f3e9395dSAndrew Turner #define TCR_NFD0 (1UL << TCR_NFD0_SHIFT) 1825f3e9395dSAndrew Turner #define TCR_TBID1_SHIFT 52 1826f3e9395dSAndrew Turner #define TCR_TBID1 (1UL << TCR_TBID1_SHIFT) 1827f3e9395dSAndrew Turner #define TCR_TBID0_SHIFT 51 1828f3e9395dSAndrew Turner #define TCR_TBID0 (1UL << TCR_TBID0_SHIFT) 1829f3e9395dSAndrew Turner #define TCR_HWU162_SHIFT 50 1830f3e9395dSAndrew Turner #define TCR_HWU162 (1UL << TCR_HWU162_SHIFT) 1831f3e9395dSAndrew Turner #define TCR_HWU161_SHIFT 49 1832f3e9395dSAndrew Turner #define TCR_HWU161 (1UL << TCR_HWU161_SHIFT) 1833f3e9395dSAndrew Turner #define TCR_HWU160_SHIFT 48 1834f3e9395dSAndrew Turner #define TCR_HWU160 (1UL << TCR_HWU160_SHIFT) 1835f3e9395dSAndrew Turner #define TCR_HWU159_SHIFT 47 1836f3e9395dSAndrew Turner #define TCR_HWU159 (1UL << TCR_HWU159_SHIFT) 1837f3e9395dSAndrew Turner #define TCR_HWU1 \ 1838f3e9395dSAndrew Turner (TCR_HWU159 | TCR_HWU160 | TCR_HWU161 | TCR_HWU162) 1839f3e9395dSAndrew Turner #define TCR_HWU062_SHIFT 46 1840f3e9395dSAndrew Turner #define TCR_HWU062 (1UL << TCR_HWU062_SHIFT) 1841f3e9395dSAndrew Turner #define TCR_HWU061_SHIFT 45 1842f3e9395dSAndrew Turner #define TCR_HWU061 (1UL << TCR_HWU061_SHIFT) 1843f3e9395dSAndrew Turner #define TCR_HWU060_SHIFT 44 1844f3e9395dSAndrew Turner #define TCR_HWU060 (1UL << TCR_HWU060_SHIFT) 1845f3e9395dSAndrew Turner #define TCR_HWU059_SHIFT 43 1846f3e9395dSAndrew Turner #define TCR_HWU059 (1UL << TCR_HWU059_SHIFT) 1847f3e9395dSAndrew Turner #define TCR_HWU0 \ 1848f3e9395dSAndrew Turner (TCR_HWU059 | TCR_HWU060 | TCR_HWU061 | TCR_HWU062) 1849f3e9395dSAndrew Turner #define TCR_HPD1_SHIFT 42 1850f3e9395dSAndrew Turner #define TCR_HPD1 (1UL << TCR_HPD1_SHIFT) 1851f3e9395dSAndrew Turner #define TCR_HPD0_SHIFT 41 1852f3e9395dSAndrew Turner #define TCR_HPD0 (1UL << TCR_HPD0_SHIFT) 1853b0a0152aSAlan Cox #define TCR_HD_SHIFT 40 1854f3e9395dSAndrew Turner #define TCR_HD (1UL << TCR_HD_SHIFT) 1855b0a0152aSAlan Cox #define TCR_HA_SHIFT 39 1856f3e9395dSAndrew Turner #define TCR_HA (1UL << TCR_HA_SHIFT) 1857f3e9395dSAndrew Turner #define TCR_TBI1_SHIFT 38 1858e46cf959SEd Maste #define TCR_TBI1 (1UL << TCR_TBI1_SHIFT) 1859f3e9395dSAndrew Turner #define TCR_TBI0_SHIFT 37 1860f3e9395dSAndrew Turner #define TCR_TBI0 (1U << TCR_TBI0_SHIFT) 186165565c97SAndrew Turner #define TCR_ASID_SHIFT 36 186265565c97SAndrew Turner #define TCR_ASID_WIDTH 1 1863f3e9395dSAndrew Turner #define TCR_ASID_16 (1UL << TCR_ASID_SHIFT) 1864f3e9395dSAndrew Turner /* Bit 35 is reserved */ 1865e5acd89cSAndrew Turner #define TCR_IPS_SHIFT 32 186665565c97SAndrew Turner #define TCR_IPS_WIDTH 3 1867f3e9395dSAndrew Turner #define TCR_IPS_32BIT (0UL << TCR_IPS_SHIFT) 1868f3e9395dSAndrew Turner #define TCR_IPS_36BIT (1UL << TCR_IPS_SHIFT) 1869f3e9395dSAndrew Turner #define TCR_IPS_40BIT (2UL << TCR_IPS_SHIFT) 1870f3e9395dSAndrew Turner #define TCR_IPS_42BIT (3UL << TCR_IPS_SHIFT) 1871f3e9395dSAndrew Turner #define TCR_IPS_44BIT (4UL << TCR_IPS_SHIFT) 1872f3e9395dSAndrew Turner #define TCR_IPS_48BIT (5UL << TCR_IPS_SHIFT) 1873e5acd89cSAndrew Turner #define TCR_TG1_SHIFT 30 1874f3e9395dSAndrew Turner #define TCR_TG1_16K (1UL << TCR_TG1_SHIFT) 1875f3e9395dSAndrew Turner #define TCR_TG1_4K (2UL << TCR_TG1_SHIFT) 1876f3e9395dSAndrew Turner #define TCR_TG1_64K (3UL << TCR_TG1_SHIFT) 18771038d102SZbigniew Bodek #define TCR_SH1_SHIFT 28 1878f3e9395dSAndrew Turner #define TCR_SH1_IS (3UL << TCR_SH1_SHIFT) 18791038d102SZbigniew Bodek #define TCR_ORGN1_SHIFT 26 1880f3e9395dSAndrew Turner #define TCR_ORGN1_WBWA (1UL << TCR_ORGN1_SHIFT) 18811038d102SZbigniew Bodek #define TCR_IRGN1_SHIFT 24 1882f3e9395dSAndrew Turner #define TCR_IRGN1_WBWA (1UL << TCR_IRGN1_SHIFT) 1883f3e9395dSAndrew Turner #define TCR_EPD1_SHIFT 23 1884f3e9395dSAndrew Turner #define TCR_EPD1 (1UL << TCR_EPD1_SHIFT) 188550e3ab6bSAlan Cox #define TCR_A1_SHIFT 22 188650e3ab6bSAlan Cox #define TCR_A1 (0x1UL << TCR_A1_SHIFT) 1887f3e9395dSAndrew Turner #define TCR_T1SZ_SHIFT 16 1888f3e9395dSAndrew Turner #define TCR_T1SZ(x) ((x) << TCR_T1SZ_SHIFT) 1889f3e9395dSAndrew Turner #define TCR_TG0_SHIFT 14 1890f62e099eSAndrew Turner #define TCR_TG0_4K (0UL << TCR_TG0_SHIFT) 1891f62e099eSAndrew Turner #define TCR_TG0_64K (1UL << TCR_TG0_SHIFT) 1892f62e099eSAndrew Turner #define TCR_TG0_16K (2UL << TCR_TG0_SHIFT) 18931038d102SZbigniew Bodek #define TCR_SH0_SHIFT 12 1894f3e9395dSAndrew Turner #define TCR_SH0_IS (3UL << TCR_SH0_SHIFT) 18951038d102SZbigniew Bodek #define TCR_ORGN0_SHIFT 10 1896f3e9395dSAndrew Turner #define TCR_ORGN0_WBWA (1UL << TCR_ORGN0_SHIFT) 18971038d102SZbigniew Bodek #define TCR_IRGN0_SHIFT 8 1898f3e9395dSAndrew Turner #define TCR_IRGN0_WBWA (1UL << TCR_IRGN0_SHIFT) 1899f3e9395dSAndrew Turner #define TCR_EPD0_SHIFT 7 1900f3e9395dSAndrew Turner #define TCR_EPD0 (1UL << TCR_EPD1_SHIFT) 1901f3e9395dSAndrew Turner /* Bit 6 is reserved */ 1902f3e9395dSAndrew Turner #define TCR_T0SZ_SHIFT 0 1903f3e9395dSAndrew Turner #define TCR_T0SZ_MASK 0x3f 1904f3e9395dSAndrew Turner #define TCR_T0SZ(x) ((x) << TCR_T0SZ_SHIFT) 1905f3e9395dSAndrew Turner #define TCR_TxSZ(x) (TCR_T1SZ(x) | TCR_T0SZ(x)) 19061038d102SZbigniew Bodek 19071038d102SZbigniew Bodek #define TCR_CACHE_ATTRS ((TCR_IRGN0_WBWA | TCR_IRGN1_WBWA) |\ 19081038d102SZbigniew Bodek (TCR_ORGN0_WBWA | TCR_ORGN1_WBWA)) 19091038d102SZbigniew Bodek #ifdef SMP 19101038d102SZbigniew Bodek #define TCR_SMP_ATTRS (TCR_SH0_IS | TCR_SH1_IS) 19111038d102SZbigniew Bodek #else 19121038d102SZbigniew Bodek #define TCR_SMP_ATTRS 0 19131038d102SZbigniew Bodek #endif 19141038d102SZbigniew Bodek 19150accd726SAndrew Turner /* TTBR0_EL1 & TTBR1_EL1 - Translation Table Base Register 0 & 1 */ 19160accd726SAndrew Turner #define TTBR_ASID_SHIFT 48 19170accd726SAndrew Turner #define TTBR_ASID_MASK (0xfffful << TTBR_ASID_SHIFT) 19180accd726SAndrew Turner #define TTBR_BADDR 0x0000fffffffffffeul 19190accd726SAndrew Turner #define TTBR_CnP_SHIFT 0 19200accd726SAndrew Turner #define TTBR_CnP (1ul << TTBR_CnP_SHIFT) 19210accd726SAndrew Turner 19222f317e73SAndrew Turner /* ZCR_EL1 - SVE Control Register */ 19232f317e73SAndrew Turner #define ZCR_LEN_SHIFT 0 19242f317e73SAndrew Turner #define ZCR_LEN_MASK (0xf << ZCR_LEN_SHIFT) 19252f317e73SAndrew Turner #define ZCR_LEN_BYTES(x) ((((x) & ZCR_LEN_MASK) + 1) * 16) 19262f317e73SAndrew Turner 1927e5acd89cSAndrew Turner #endif /* !_MACHINE_ARMREG_H_ */ 1928