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 30d5d97bedSMike Karels #ifdef __arm__ 31d5d97bedSMike Karels #include <arm/armreg.h> 32d5d97bedSMike Karels #else /* !__arm__ */ 33d5d97bedSMike Karels 34e5acd89cSAndrew Turner #ifndef _MACHINE_ARMREG_H_ 35e5acd89cSAndrew Turner #define _MACHINE_ARMREG_H_ 36e5acd89cSAndrew Turner 378a1867f4SWojciech Macek #define INSN_SIZE 4 388a1867f4SWojciech Macek 39cb5343c2SAndrew Turner #define MRS_MASK 0xfff00000 40cb5343c2SAndrew Turner #define MRS_VALUE 0xd5300000 41cb5343c2SAndrew Turner #define MRS_SPECIAL(insn) ((insn) & 0x000fffe0) 42cb5343c2SAndrew Turner #define MRS_REGISTER(insn) ((insn) & 0x0000001f) 43cb5343c2SAndrew Turner #define MRS_Op0_SHIFT 19 44cb5343c2SAndrew Turner #define MRS_Op0_MASK 0x00080000 45cb5343c2SAndrew Turner #define MRS_Op1_SHIFT 16 46cb5343c2SAndrew Turner #define MRS_Op1_MASK 0x00070000 47cb5343c2SAndrew Turner #define MRS_CRn_SHIFT 12 48cb5343c2SAndrew Turner #define MRS_CRn_MASK 0x0000f000 49cb5343c2SAndrew Turner #define MRS_CRm_SHIFT 8 50cb5343c2SAndrew Turner #define MRS_CRm_MASK 0x00000f00 51cb5343c2SAndrew Turner #define MRS_Op2_SHIFT 5 52cb5343c2SAndrew Turner #define MRS_Op2_MASK 0x000000e0 53cb5343c2SAndrew Turner #define MRS_Rt_SHIFT 0 54cb5343c2SAndrew Turner #define MRS_Rt_MASK 0x0000001f 5510f6680fSAndrew Turner #define __MRS_REG(op0, op1, crn, crm, op2) \ 56e68508e1SAndrew Turner (((op0) << MRS_Op0_SHIFT) | ((op1) << MRS_Op1_SHIFT) | \ 57e68508e1SAndrew Turner ((crn) << MRS_CRn_SHIFT) | ((crm) << MRS_CRm_SHIFT) | \ 58e68508e1SAndrew Turner ((op2) << MRS_Op2_SHIFT)) 5910f6680fSAndrew Turner #define MRS_REG(reg) \ 6010f6680fSAndrew Turner __MRS_REG(reg##_op0, reg##_op1, reg##_CRn, reg##_CRm, reg##_op2) 6110f6680fSAndrew Turner 6266ba742dSAndrew Turner #define __MRS_REG_ALT_NAME(op0, op1, crn, crm, op2) \ 6366ba742dSAndrew Turner S##op0##_##op1##_C##crn##_C##crm##_##op2 6466ba742dSAndrew Turner #define _MRS_REG_ALT_NAME(op0, op1, crn, crm, op2) \ 6566ba742dSAndrew Turner __MRS_REG_ALT_NAME(op0, op1, crn, crm, op2) 6666ba742dSAndrew Turner #define MRS_REG_ALT_NAME(reg) \ 6766ba742dSAndrew Turner _MRS_REG_ALT_NAME(reg##_op0, reg##_op1, reg##_CRn, reg##_CRm, reg##_op2) 6810f6680fSAndrew Turner 69cb5343c2SAndrew Turner 70e5acd89cSAndrew Turner #define READ_SPECIALREG(reg) \ 71c749d685SJulian Elischer ({ uint64_t _val; \ 72c749d685SJulian Elischer __asm __volatile("mrs %0, " __STRING(reg) : "=&r" (_val)); \ 73c749d685SJulian Elischer _val; \ 74e5acd89cSAndrew Turner }) 75c749d685SJulian Elischer #define WRITE_SPECIALREG(reg, _val) \ 76c749d685SJulian Elischer __asm __volatile("msr " __STRING(reg) ", %0" : : "r"((uint64_t)_val)) 77e5acd89cSAndrew Turner 78f31c5955SAndrew Turner #define UL(x) UINT64_C(x) 79f31c5955SAndrew Turner 80139ba152SJustin Hibbits /* CCSIDR_EL1 - Cache Size ID Register */ 81139ba152SJustin Hibbits #define CCSIDR_NumSets_MASK 0x0FFFE000 82139ba152SJustin Hibbits #define CCSIDR_NumSets64_MASK 0x00FFFFFF00000000 83139ba152SJustin Hibbits #define CCSIDR_NumSets_SHIFT 13 84139ba152SJustin Hibbits #define CCSIDR_NumSets64_SHIFT 32 85139ba152SJustin Hibbits #define CCSIDR_Assoc_MASK 0x00001FF8 86139ba152SJustin Hibbits #define CCSIDR_Assoc64_MASK 0x0000000000FFFFF8 87139ba152SJustin Hibbits #define CCSIDR_Assoc_SHIFT 3 88139ba152SJustin Hibbits #define CCSIDR_Assoc64_SHIFT 3 89139ba152SJustin Hibbits #define CCSIDR_LineSize_MASK 0x7 90139ba152SJustin Hibbits #define CCSIDR_NSETS(idr) \ 91139ba152SJustin Hibbits (((idr) & CCSIDR_NumSets_MASK) >> CCSIDR_NumSets_SHIFT) 92139ba152SJustin Hibbits #define CCSIDR_ASSOC(idr) \ 93139ba152SJustin Hibbits (((idr) & CCSIDR_Assoc_MASK) >> CCSIDR_Assoc_SHIFT) 94139ba152SJustin Hibbits #define CCSIDR_NSETS_64(idr) \ 95139ba152SJustin Hibbits (((idr) & CCSIDR_NumSets64_MASK) >> CCSIDR_NumSets64_SHIFT) 96139ba152SJustin Hibbits #define CCSIDR_ASSOC_64(idr) \ 97139ba152SJustin Hibbits (((idr) & CCSIDR_Assoc64_MASK) >> CCSIDR_Assoc64_SHIFT) 98139ba152SJustin Hibbits 99139ba152SJustin Hibbits /* CLIDR_EL1 - Cache level ID register */ 100139ba152SJustin Hibbits #define CLIDR_CTYPE_MASK 0x7 /* Cache type mask bits */ 101139ba152SJustin Hibbits #define CLIDR_CTYPE_IO 0x1 /* Instruction only */ 102139ba152SJustin Hibbits #define CLIDR_CTYPE_DO 0x2 /* Data only */ 103139ba152SJustin Hibbits #define CLIDR_CTYPE_ID 0x3 /* Split instruction and data */ 104139ba152SJustin Hibbits #define CLIDR_CTYPE_UNIFIED 0x4 /* Unified */ 105139ba152SJustin Hibbits 1063a1c1a30SAndrew Turner /* CNTP_CTL_EL0 - Counter-timer Physical Timer Control register */ 1074dc81560SAndrew Turner #define CNTP_CTL_EL0 MRS_REG(CNTP_CTL_EL0) 1084dc81560SAndrew Turner #define CNTP_CTL_EL0_op0 3 1094dc81560SAndrew Turner #define CNTP_CTL_EL0_op1 3 1104dc81560SAndrew Turner #define CNTP_CTL_EL0_CRn 14 1114dc81560SAndrew Turner #define CNTP_CTL_EL0_CRm 2 1124dc81560SAndrew Turner #define CNTP_CTL_EL0_op2 1 1133a1c1a30SAndrew Turner #define CNTP_CTL_ENABLE (1 << 0) 1143a1c1a30SAndrew Turner #define CNTP_CTL_IMASK (1 << 1) 1153a1c1a30SAndrew Turner #define CNTP_CTL_ISTATUS (1 << 2) 1163a1c1a30SAndrew Turner 1174dc81560SAndrew Turner /* CNTP_CVAL_EL0 - Counter-timer Physical Timer CompareValue register */ 1184dc81560SAndrew Turner #define CNTP_CVAL_EL0 MRS_REG(CNTP_CVAL_EL0) 1194dc81560SAndrew Turner #define CNTP_CVAL_EL0_op0 3 1204dc81560SAndrew Turner #define CNTP_CVAL_EL0_op1 3 1214dc81560SAndrew Turner #define CNTP_CVAL_EL0_CRn 14 1224dc81560SAndrew Turner #define CNTP_CVAL_EL0_CRm 2 1234dc81560SAndrew Turner #define CNTP_CVAL_EL0_op2 2 1244dc81560SAndrew Turner 1254dc81560SAndrew Turner /* CNTP_TVAL_EL0 - Counter-timer Physical Timer TimerValue register */ 1264dc81560SAndrew Turner #define CNTP_TVAL_EL0 MRS_REG(CNTP_TVAL_EL0) 1274dc81560SAndrew Turner #define CNTP_TVAL_EL0_op0 3 1284dc81560SAndrew Turner #define CNTP_TVAL_EL0_op1 3 1294dc81560SAndrew Turner #define CNTP_TVAL_EL0_CRn 14 1304dc81560SAndrew Turner #define CNTP_TVAL_EL0_CRm 2 1314dc81560SAndrew Turner #define CNTP_TVAL_EL0_op2 0 1324dc81560SAndrew Turner 1334dc81560SAndrew Turner /* CNTPCT_EL0 - Counter-timer Physical Count register */ 1344dc81560SAndrew Turner #define CNTPCT_EL0 MRS_REG(CNTPCT_EL0) 1354dc81560SAndrew Turner #define CNTPCT_EL0_op0 3 1364dc81560SAndrew Turner #define CNTPCT_EL0_op1 3 1374dc81560SAndrew Turner #define CNTPCT_EL0_CRn 14 1384dc81560SAndrew Turner #define CNTPCT_EL0_CRm 0 1394dc81560SAndrew Turner #define CNTPCT_EL0_op2 1 1404dc81560SAndrew Turner 141e5acd89cSAndrew Turner /* CPACR_EL1 */ 1422f317e73SAndrew Turner #define CPACR_ZEN_MASK (0x3 << 16) 1432f317e73SAndrew Turner #define CPACR_ZEN_TRAP_ALL1 (0x0 << 16) /* Traps from EL0 and EL1 */ 1442f317e73SAndrew Turner #define CPACR_ZEN_TRAP_EL0 (0x1 << 16) /* Traps from EL0 */ 1452f317e73SAndrew Turner #define CPACR_ZEN_TRAP_ALL2 (0x2 << 16) /* Traps from EL0 and EL1 */ 1462f317e73SAndrew Turner #define CPACR_ZEN_TRAP_NONE (0x3 << 16) /* No traps */ 147e5acd89cSAndrew Turner #define CPACR_FPEN_MASK (0x3 << 20) 148e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_ALL1 (0x0 << 20) /* Traps from EL0 and EL1 */ 149e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_EL0 (0x1 << 20) /* Traps from EL0 */ 150e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_ALL2 (0x2 << 20) /* Traps from EL0 and EL1 */ 151e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_NONE (0x3 << 20) /* No traps */ 152e5acd89cSAndrew Turner #define CPACR_TTA (0x1 << 28) 153e5acd89cSAndrew Turner 154139ba152SJustin Hibbits /* CSSELR_EL1 - Cache size selection register */ 155139ba152SJustin Hibbits #define CSSELR_Level(i) (i << 1) 156139ba152SJustin Hibbits #define CSSELR_InD 0x00000001 157139ba152SJustin Hibbits 158e5acd89cSAndrew Turner /* CTR_EL0 - Cache Type Register */ 159c32e28d5SAndrew Turner #define CTR_RES1 (1 << 31) 160c32e28d5SAndrew Turner #define CTR_TminLine_SHIFT 32 161c32e28d5SAndrew Turner #define CTR_TminLine_MASK (UL(0x3f) << CTR_TminLine_SHIFT) 162c32e28d5SAndrew Turner #define CTR_TminLine_VAL(reg) ((reg) & CTR_TminLine_MASK) 163c32e28d5SAndrew Turner #define CTR_DIC_SHIFT 29 164c32e28d5SAndrew Turner #define CTR_DIC_MASK (0x1 << CTR_DIC_SHIFT) 165c32e28d5SAndrew Turner #define CTR_DIC_VAL(reg) ((reg) & CTR_DIC_MASK) 166c32e28d5SAndrew Turner #define CTR_IDC_SHIFT 28 167c32e28d5SAndrew Turner #define CTR_IDC_MASK (0x1 << CTR_IDC_SHIFT) 168c32e28d5SAndrew Turner #define CTR_IDC_VAL(reg) ((reg) & CTR_IDC_MASK) 169c32e28d5SAndrew Turner #define CTR_CWG_SHIFT 24 170c32e28d5SAndrew Turner #define CTR_CWG_MASK (0xf << CTR_CWG_SHIFT) 171c32e28d5SAndrew Turner #define CTR_CWG_VAL(reg) ((reg) & CTR_CWG_MASK) 172c32e28d5SAndrew Turner #define CTR_CWG_SIZE(reg) (4 << (CTR_CWG_VAL(reg) >> CTR_CWG_SHIFT)) 173c32e28d5SAndrew Turner #define CTR_ERG_SHIFT 20 174c32e28d5SAndrew Turner #define CTR_ERG_MASK (0xf << CTR_ERG_SHIFT) 175c32e28d5SAndrew Turner #define CTR_ERG_VAL(reg) ((reg) & CTR_ERG_MASK) 176c32e28d5SAndrew Turner #define CTR_ERG_SIZE(reg) (4 << (CTR_ERG_VAL(reg) >> CTR_ERG_SHIFT)) 177e5acd89cSAndrew Turner #define CTR_DLINE_SHIFT 16 178e5acd89cSAndrew Turner #define CTR_DLINE_MASK (0xf << CTR_DLINE_SHIFT) 179c32e28d5SAndrew Turner #define CTR_DLINE_VAL(reg) ((reg) & CTR_DLINE_MASK) 180c32e28d5SAndrew Turner #define CTR_DLINE_SIZE(reg) (4 << (CTR_DLINE_VAL(reg) >> CTR_DLINE_SHIFT)) 181c32e28d5SAndrew Turner #define CTR_L1IP_SHIFT 14 182c32e28d5SAndrew Turner #define CTR_L1IP_MASK (0x3 << CTR_L1IP_SHIFT) 183c32e28d5SAndrew Turner #define CTR_L1IP_VAL(reg) ((reg) & CTR_L1IP_MASK) 184c32e28d5SAndrew Turner #define CTR_L1IP_VPIPT (0 << CTR_L1IP_SHIFT) 185c32e28d5SAndrew Turner #define CTR_L1IP_AIVIVT (1 << CTR_L1IP_SHIFT) 1862923027cSAndrew Turner #define CTR_L1IP_VIPT (2 << CTR_L1IP_SHIFT) 187c32e28d5SAndrew Turner #define CTR_L1IP_PIPT (3 << CTR_L1IP_SHIFT) 188e5acd89cSAndrew Turner #define CTR_ILINE_SHIFT 0 189e5acd89cSAndrew Turner #define CTR_ILINE_MASK (0xf << CTR_ILINE_SHIFT) 190c32e28d5SAndrew Turner #define CTR_ILINE_VAL(reg) ((reg) & CTR_ILINE_MASK) 191c32e28d5SAndrew Turner #define CTR_ILINE_SIZE(reg) (4 << (CTR_ILINE_VAL(reg) >> CTR_ILINE_SHIFT)) 192e5acd89cSAndrew Turner 1935e7941b6SAndrew Turner /* CurrentEL - Current Exception Level */ 1945e7941b6SAndrew Turner #define CURRENTEL_EL_SHIFT 2 1955e7941b6SAndrew Turner #define CURRENTEL_EL_MASK (0x3 << CURRENTEL_EL_SHIFT) 1965e7941b6SAndrew Turner #define CURRENTEL_EL_EL0 (0x0 << CURRENTEL_EL_SHIFT) 1975e7941b6SAndrew Turner #define CURRENTEL_EL_EL1 (0x1 << CURRENTEL_EL_SHIFT) 1985e7941b6SAndrew Turner #define CURRENTEL_EL_EL2 (0x2 << CURRENTEL_EL_SHIFT) 1995e7941b6SAndrew Turner #define CURRENTEL_EL_EL3 (0x3 << CURRENTEL_EL_SHIFT) 2005e7941b6SAndrew Turner 201337eb2abSAndrew Turner /* DAIFSet/DAIFClear */ 202337eb2abSAndrew Turner #define DAIF_D (1 << 3) 203337eb2abSAndrew Turner #define DAIF_A (1 << 2) 204337eb2abSAndrew Turner #define DAIF_I (1 << 1) 205337eb2abSAndrew Turner #define DAIF_F (1 << 0) 206337eb2abSAndrew Turner #define DAIF_ALL (DAIF_D | DAIF_A | DAIF_I | DAIF_F) 207337eb2abSAndrew Turner #define DAIF_INTR (DAIF_I) /* All exceptions that pass */ 208337eb2abSAndrew Turner /* through the intr framework */ 209337eb2abSAndrew Turner 210664640baSAndrew Turner /* DBGBCR<n>_EL1 - Debug Breakpoint Control Registers */ 2114dc81560SAndrew Turner #define DBGBCR_EL1_op0 2 2124dc81560SAndrew Turner #define DBGBCR_EL1_op1 0 2134dc81560SAndrew Turner #define DBGBCR_EL1_CRn 0 2144dc81560SAndrew Turner /* DBGBCR_EL1_CRm indicates which watchpoint this register is for */ 2154dc81560SAndrew Turner #define DBGBCR_EL1_op2 5 216664640baSAndrew Turner #define DBGBCR_EN 0x1 217664640baSAndrew Turner #define DBGBCR_PMC_SHIFT 1 218664640baSAndrew Turner #define DBGBCR_PMC (0x3 << DBGBCR_PMC_SHIFT) 219664640baSAndrew Turner #define DBGBCR_PMC_EL1 (0x1 << DBGBCR_PMC_SHIFT) 220664640baSAndrew Turner #define DBGBCR_PMC_EL0 (0x2 << DBGBCR_PMC_SHIFT) 221664640baSAndrew Turner #define DBGBCR_BAS_SHIFT 5 222664640baSAndrew Turner #define DBGBCR_BAS (0xf << DBGBCR_BAS_SHIFT) 223664640baSAndrew Turner #define DBGBCR_HMC_SHIFT 13 224664640baSAndrew Turner #define DBGBCR_HMC (0x1 << DBGBCR_HMC_SHIFT) 225664640baSAndrew Turner #define DBGBCR_SSC_SHIFT 14 226664640baSAndrew Turner #define DBGBCR_SSC (0x3 << DBGBCR_SSC_SHIFT) 227664640baSAndrew Turner #define DBGBCR_LBN_SHIFT 16 228664640baSAndrew Turner #define DBGBCR_LBN (0xf << DBGBCR_LBN_SHIFT) 229664640baSAndrew Turner #define DBGBCR_BT_SHIFT 20 230664640baSAndrew Turner #define DBGBCR_BT (0xf << DBGBCR_BT_SHIFT) 231664640baSAndrew Turner 2324dc81560SAndrew Turner /* DBGBVR<n>_EL1 - Debug Breakpoint Value Registers */ 2334dc81560SAndrew Turner #define DBGBVR_EL1_op0 2 2344dc81560SAndrew Turner #define DBGBVR_EL1_op1 0 2354dc81560SAndrew Turner #define DBGBVR_EL1_CRn 0 2364dc81560SAndrew Turner /* DBGBVR_EL1_CRm indicates which watchpoint this register is for */ 2374dc81560SAndrew Turner #define DBGBVR_EL1_op2 4 2384dc81560SAndrew Turner 239664640baSAndrew Turner /* DBGWCR<n>_EL1 - Debug Watchpoint Control Registers */ 2404dc81560SAndrew Turner #define DBGWCR_EL1_op0 2 2414dc81560SAndrew Turner #define DBGWCR_EL1_op1 0 2424dc81560SAndrew Turner #define DBGWCR_EL1_CRn 0 2434dc81560SAndrew Turner /* DBGWCR_EL1_CRm indicates which watchpoint this register is for */ 2444dc81560SAndrew Turner #define DBGWCR_EL1_op2 7 245664640baSAndrew Turner #define DBGWCR_EN 0x1 246664640baSAndrew Turner #define DBGWCR_PAC_SHIFT 1 247664640baSAndrew Turner #define DBGWCR_PAC (0x3 << DBGWCR_PAC_SHIFT) 248664640baSAndrew Turner #define DBGWCR_PAC_EL1 (0x1 << DBGWCR_PAC_SHIFT) 249664640baSAndrew Turner #define DBGWCR_PAC_EL0 (0x2 << DBGWCR_PAC_SHIFT) 250664640baSAndrew Turner #define DBGWCR_LSC_SHIFT 3 251664640baSAndrew Turner #define DBGWCR_LSC (0x3 << DBGWCR_LSC_SHIFT) 252664640baSAndrew Turner #define DBGWCR_BAS_SHIFT 5 253664640baSAndrew Turner #define DBGWCR_BAS (0xff << DBGWCR_BAS_SHIFT) 254664640baSAndrew Turner #define DBGWCR_HMC_SHIFT 13 255664640baSAndrew Turner #define DBGWCR_HMC (0x1 << DBGWCR_HMC_SHIFT) 256664640baSAndrew Turner #define DBGWCR_SSC_SHIFT 14 257664640baSAndrew Turner #define DBGWCR_SSC (0x3 << DBGWCR_SSC_SHIFT) 258664640baSAndrew Turner #define DBGWCR_LBN_SHIFT 16 259664640baSAndrew Turner #define DBGWCR_LBN (0xf << DBGWCR_LBN_SHIFT) 260664640baSAndrew Turner #define DBGWCR_WT_SHIFT 20 261664640baSAndrew Turner #define DBGWCR_WT (0x1 << DBGWCR_WT_SHIFT) 262664640baSAndrew Turner #define DBGWCR_MASK_SHIFT 24 263664640baSAndrew Turner #define DBGWCR_MASK (0x1f << DBGWCR_MASK_SHIFT) 264664640baSAndrew Turner 2654dc81560SAndrew Turner /* DBGWVR<n>_EL1 - Debug Watchpoint Value Registers */ 2664dc81560SAndrew Turner #define DBGWVR_EL1_op0 2 2674dc81560SAndrew Turner #define DBGWVR_EL1_op1 0 2684dc81560SAndrew Turner #define DBGWVR_EL1_CRn 0 2694dc81560SAndrew Turner /* DBGWVR_EL1_CRm indicates which watchpoint this register is for */ 2704dc81560SAndrew Turner #define DBGWVR_EL1_op2 6 2714dc81560SAndrew Turner 272db278182SWojciech Macek /* DCZID_EL0 - Data Cache Zero ID register */ 273db278182SWojciech Macek #define DCZID_DZP (1 << 4) /* DC ZVA prohibited if non-0 */ 274db278182SWojciech Macek #define DCZID_BS_SHIFT 0 275db278182SWojciech Macek #define DCZID_BS_MASK (0xf << DCZID_BS_SHIFT) 276db278182SWojciech Macek #define DCZID_BS_SIZE(reg) (((reg) & DCZID_BS_MASK) >> DCZID_BS_SHIFT) 277db278182SWojciech Macek 2784dc81560SAndrew Turner /* DBGAUTHSTATUS_EL1 */ 2794dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1 MRS_REG(DBGAUTHSTATUS_EL1) 2804dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op0 2 2814dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op1 0 2824dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_CRn 7 2834dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_CRm 14 2844dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op2 6 2854dc81560SAndrew Turner 2864dc81560SAndrew Turner /* DBGCLAIMCLR_EL1 */ 2874dc81560SAndrew Turner #define DBGCLAIMCLR_EL1 MRS_REG(DBGCLAIMCLR_EL1) 2884dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op0 2 2894dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op1 0 2904dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_CRn 7 2914dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_CRm 9 2924dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op2 6 2934dc81560SAndrew Turner 2944dc81560SAndrew Turner /* DBGCLAIMSET_EL1 */ 2954dc81560SAndrew Turner #define DBGCLAIMSET_EL1 MRS_REG(DBGCLAIMSET_EL1) 2964dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op0 2 2974dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op1 0 2984dc81560SAndrew Turner #define DBGCLAIMSET_EL1_CRn 7 2994dc81560SAndrew Turner #define DBGCLAIMSET_EL1_CRm 8 3004dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op2 6 3014dc81560SAndrew Turner 3024dc81560SAndrew Turner /* DBGPRCR_EL1 */ 3034dc81560SAndrew Turner #define DBGPRCR_EL1 MRS_REG(DBGPRCR_EL1) 3044dc81560SAndrew Turner #define DBGPRCR_EL1_op0 2 3054dc81560SAndrew Turner #define DBGPRCR_EL1_op1 0 3064dc81560SAndrew Turner #define DBGPRCR_EL1_CRn 1 3074dc81560SAndrew Turner #define DBGPRCR_EL1_CRm 4 3084dc81560SAndrew Turner #define DBGPRCR_EL1_op2 4 3094dc81560SAndrew Turner 310e5acd89cSAndrew Turner /* ESR_ELx */ 3113a1c1a30SAndrew Turner #define ESR_ELx_ISS_MASK 0x01ffffff 3126e2caba7SDmitry Chagin #define ISS_FP_TFV_SHIFT 23 3136e2caba7SDmitry Chagin #define ISS_FP_TFV (0x01 << ISS_FP_TFV_SHIFT) 3146e2caba7SDmitry Chagin #define ISS_FP_IOF 0x01 3156e2caba7SDmitry Chagin #define ISS_FP_DZF 0x02 3166e2caba7SDmitry Chagin #define ISS_FP_OFF 0x04 3176e2caba7SDmitry Chagin #define ISS_FP_UFF 0x08 3186e2caba7SDmitry Chagin #define ISS_FP_IXF 0x10 3196e2caba7SDmitry Chagin #define ISS_FP_IDF 0x80 320e5acd89cSAndrew Turner #define ISS_INSN_FnV (0x01 << 10) 321e5acd89cSAndrew Turner #define ISS_INSN_EA (0x01 << 9) 322e5acd89cSAndrew Turner #define ISS_INSN_S1PTW (0x01 << 7) 323e5acd89cSAndrew Turner #define ISS_INSN_IFSC_MASK (0x1f << 0) 3243a1c1a30SAndrew Turner 325dd24d475SMark Johnston #define ISS_WFx_TI_SHIFT 0 326dd24d475SMark Johnston #define ISS_WFx_TI_MASK (0x03 << ISS_WFx_TI_SHIFT) 327dd24d475SMark Johnston #define ISS_WFx_TI_WFI (0x00 << ISS_WFx_TI_SHIFT) 328dd24d475SMark Johnston #define ISS_WFx_TI_WFE (0x01 << ISS_WFx_TI_SHIFT) 329dd24d475SMark Johnston #define ISS_WFx_TI_WFIT (0x02 << ISS_WFx_TI_SHIFT) 330dd24d475SMark Johnston #define ISS_WFx_TI_WFET (0x03 << ISS_WFx_TI_SHIFT) 331dd24d475SMark Johnston #define ISS_WFx_RV_SHIFT 2 332dd24d475SMark Johnston #define ISS_WFx_RV_MASK (0x01 << ISS_WFx_RV_SHIFT) 333dd24d475SMark Johnston #define ISS_WFx_RV_INVALID (0x00 << ISS_WFx_RV_SHIFT) 334dd24d475SMark Johnston #define ISS_WFx_RV_VALID (0x01 << ISS_WFx_RV_SHIFT) 335dd24d475SMark Johnston #define ISS_WFx_RN_SHIFT 5 336dd24d475SMark Johnston #define ISS_WFx_RN_MASK (0x1f << ISS_WFx_RN_SHIFT) 337dd24d475SMark Johnston #define ISS_WFx_RN(x) (((x) & ISS_WFx_RN_MASK) >> ISS_WFx_RN_SHIFT) 338dd24d475SMark Johnston #define ISS_WFx_COND_SHIFT 20 339dd24d475SMark Johnston #define ISS_WFx_COND_MASK (0x0f << ISS_WFx_COND_SHIFT) 340dd24d475SMark Johnston #define ISS_WFx_CV_SHIFT 24 341dd24d475SMark Johnston #define ISS_WFx_CV_MASK (0x01 << ISS_WFx_CV_SHIFT) 342dd24d475SMark Johnston #define ISS_WFx_CV_INVALID (0x00 << ISS_WFx_CV_SHIFT) 343dd24d475SMark Johnston #define ISS_WFx_CV_VALID (0x01 << ISS_WFx_CV_SHIFT) 344dd24d475SMark Johnston 3453a1c1a30SAndrew Turner #define ISS_MSR_DIR_SHIFT 0 3463a1c1a30SAndrew Turner #define ISS_MSR_DIR (0x01 << ISS_MSR_DIR_SHIFT) 3473a1c1a30SAndrew Turner #define ISS_MSR_Rt_SHIFT 5 3483a1c1a30SAndrew Turner #define ISS_MSR_Rt_MASK (0x1f << ISS_MSR_Rt_SHIFT) 3493a1c1a30SAndrew Turner #define ISS_MSR_Rt(x) (((x) & ISS_MSR_Rt_MASK) >> ISS_MSR_Rt_SHIFT) 3503a1c1a30SAndrew Turner #define ISS_MSR_CRm_SHIFT 1 3513a1c1a30SAndrew Turner #define ISS_MSR_CRm_MASK (0xf << ISS_MSR_CRm_SHIFT) 3523a1c1a30SAndrew Turner #define ISS_MSR_CRm(x) (((x) & ISS_MSR_CRm_MASK) >> ISS_MSR_CRm_SHIFT) 3533a1c1a30SAndrew Turner #define ISS_MSR_CRn_SHIFT 10 3543a1c1a30SAndrew Turner #define ISS_MSR_CRn_MASK (0xf << ISS_MSR_CRn_SHIFT) 3553a1c1a30SAndrew Turner #define ISS_MSR_CRn(x) (((x) & ISS_MSR_CRn_MASK) >> ISS_MSR_CRn_SHIFT) 3563a1c1a30SAndrew Turner #define ISS_MSR_OP1_SHIFT 14 3573a1c1a30SAndrew Turner #define ISS_MSR_OP1_MASK (0x7 << ISS_MSR_OP1_SHIFT) 3583a1c1a30SAndrew Turner #define ISS_MSR_OP1(x) (((x) & ISS_MSR_OP1_MASK) >> ISS_MSR_OP1_SHIFT) 3593a1c1a30SAndrew Turner #define ISS_MSR_OP2_SHIFT 17 3603a1c1a30SAndrew Turner #define ISS_MSR_OP2_MASK (0x7 << ISS_MSR_OP2_SHIFT) 3613a1c1a30SAndrew Turner #define ISS_MSR_OP2(x) (((x) & ISS_MSR_OP2_MASK) >> ISS_MSR_OP2_SHIFT) 3623a1c1a30SAndrew Turner #define ISS_MSR_OP0_SHIFT 20 3633a1c1a30SAndrew Turner #define ISS_MSR_OP0_MASK (0x3 << ISS_MSR_OP0_SHIFT) 3643a1c1a30SAndrew Turner #define ISS_MSR_OP0(x) (((x) & ISS_MSR_OP0_MASK) >> ISS_MSR_OP0_SHIFT) 3653a1c1a30SAndrew Turner #define ISS_MSR_REG_MASK \ 3663a1c1a30SAndrew Turner (ISS_MSR_OP0_MASK | ISS_MSR_OP2_MASK | ISS_MSR_OP1_MASK | \ 3673a1c1a30SAndrew Turner ISS_MSR_CRn_MASK | ISS_MSR_CRm_MASK) 368*09ac9cf8SAndrew Turner #define ISS_MSR_REG(reg) \ 369*09ac9cf8SAndrew Turner (((reg ## _op0) << ISS_MSR_OP0_SHIFT) | \ 370*09ac9cf8SAndrew Turner ((reg ## _op1) << ISS_MSR_OP1_SHIFT) | \ 371*09ac9cf8SAndrew Turner ((reg ## _CRn) << ISS_MSR_CRn_SHIFT) | \ 372*09ac9cf8SAndrew Turner ((reg ## _CRm) << ISS_MSR_CRm_SHIFT) | \ 373*09ac9cf8SAndrew Turner ((reg ## _op2) << ISS_MSR_OP2_SHIFT)) 3743a1c1a30SAndrew Turner 3753a1c1a30SAndrew Turner #define ISS_DATA_ISV_SHIFT 24 3763a1c1a30SAndrew Turner #define ISS_DATA_ISV (0x01 << ISS_DATA_ISV_SHIFT) 3773a1c1a30SAndrew Turner #define ISS_DATA_SAS_SHIFT 22 3783a1c1a30SAndrew Turner #define ISS_DATA_SAS_MASK (0x03 << ISS_DATA_SAS_SHIFT) 3793a1c1a30SAndrew Turner #define ISS_DATA_SSE_SHIFT 21 3803a1c1a30SAndrew Turner #define ISS_DATA_SSE (0x01 << ISS_DATA_SSE_SHIFT) 3813a1c1a30SAndrew Turner #define ISS_DATA_SRT_SHIFT 16 3823a1c1a30SAndrew Turner #define ISS_DATA_SRT_MASK (0x1f << ISS_DATA_SRT_SHIFT) 383e5acd89cSAndrew Turner #define ISS_DATA_SF (0x01 << 15) 384e5acd89cSAndrew Turner #define ISS_DATA_AR (0x01 << 14) 385e5acd89cSAndrew Turner #define ISS_DATA_FnV (0x01 << 10) 386a9da8477SMark Johnston #define ISS_DATA_EA (0x01 << 9) 387a9da8477SMark Johnston #define ISS_DATA_CM (0x01 << 8) 388a9da8477SMark Johnston #define ISS_DATA_S1PTW (0x01 << 7) 3893a1c1a30SAndrew Turner #define ISS_DATA_WnR_SHIFT 6 3903a1c1a30SAndrew Turner #define ISS_DATA_WnR (0x01 << ISS_DATA_WnR_SHIFT) 391a70475caSAndrew Turner #define ISS_DATA_DFSC_MASK (0x3f << 0) 39263512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L0 (0x00 << 0) 39363512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L1 (0x01 << 0) 39463512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L2 (0x02 << 0) 39563512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L3 (0x03 << 0) 39663512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L0 (0x04 << 0) 39763512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L1 (0x05 << 0) 39863512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L2 (0x06 << 0) 39963512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L3 (0x07 << 0) 40063512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L1 (0x09 << 0) 40163512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L2 (0x0a << 0) 40263512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L3 (0x0b << 0) 40363512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L1 (0x0d << 0) 40463512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L2 (0x0e << 0) 40563512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L3 (0x0f << 0) 40663512a12SAndrew Turner #define ISS_DATA_DFSC_EXT (0x10 << 0) 40763512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L0 (0x14 << 0) 40863512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L1 (0x15 << 0) 40963512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L2 (0x16 << 0) 41063512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L3 (0x17 << 0) 41163512a12SAndrew Turner #define ISS_DATA_DFSC_ECC (0x18 << 0) 41263512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L0 (0x1c << 0) 41363512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L1 (0x1d << 0) 41463512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L2 (0x1e << 0) 41563512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L3 (0x1f << 0) 41663512a12SAndrew Turner #define ISS_DATA_DFSC_ALIGN (0x21 << 0) 417dc836c65SAndrew Turner #define ISS_DATA_DFSC_TLB_CONFLICT (0x30 << 0) 418e5acd89cSAndrew Turner #define ESR_ELx_IL (0x01 << 25) 419e5acd89cSAndrew Turner #define ESR_ELx_EC_SHIFT 26 420e5acd89cSAndrew Turner #define ESR_ELx_EC_MASK (0x3f << 26) 421e5acd89cSAndrew Turner #define ESR_ELx_EXCEPTION(esr) (((esr) & ESR_ELx_EC_MASK) >> ESR_ELx_EC_SHIFT) 422e5acd89cSAndrew Turner #define EXCP_UNKNOWN 0x00 /* Unkwn exception */ 4233a1c1a30SAndrew Turner #define EXCP_TRAP_WFI_WFE 0x01 /* Trapped WFI or WFE */ 424e5acd89cSAndrew Turner #define EXCP_FP_SIMD 0x07 /* VFP/SIMD trap */ 425450f731bSAndrew Turner #define EXCP_BTI 0x0d /* Branch Target Exception */ 426e5acd89cSAndrew Turner #define EXCP_ILL_STATE 0x0e /* Illegal execution state */ 4277af24ff7SEd Schouten #define EXCP_SVC32 0x11 /* SVC trap for AArch32 */ 4287af24ff7SEd Schouten #define EXCP_SVC64 0x15 /* SVC trap for AArch64 */ 4293a1c1a30SAndrew Turner #define EXCP_HVC 0x16 /* HVC trap */ 430e5acd89cSAndrew Turner #define EXCP_MSR 0x18 /* MSR/MRS trap */ 431ffa5bf8bSAndrew Turner #define EXCP_SVE 0x19 /* SVE trap */ 43285b7c566SAndrew Turner #define EXCP_FPAC 0x1c /* Faulting PAC trap */ 433e5acd89cSAndrew Turner #define EXCP_INSN_ABORT_L 0x20 /* Instruction abort, from lower EL */ 434e5acd89cSAndrew Turner #define EXCP_INSN_ABORT 0x21 /* Instruction abort, from same EL */ 435e5acd89cSAndrew Turner #define EXCP_PC_ALIGN 0x22 /* PC alignment fault */ 436e5acd89cSAndrew Turner #define EXCP_DATA_ABORT_L 0x24 /* Data abort, from lower EL */ 437e5acd89cSAndrew Turner #define EXCP_DATA_ABORT 0x25 /* Data abort, from same EL */ 438e5acd89cSAndrew Turner #define EXCP_SP_ALIGN 0x26 /* SP slignment fault */ 439e5acd89cSAndrew Turner #define EXCP_TRAP_FP 0x2c /* Trapped FP exception */ 440e5acd89cSAndrew Turner #define EXCP_SERROR 0x2f /* SError interrupt */ 44105f39d1aSAndrew Turner #define EXCP_BRKPT_EL0 0x30 /* Hardware breakpoint, from same EL */ 44287e19994SAndrew Turner #define EXCP_SOFTSTP_EL0 0x32 /* Software Step, from lower EL */ 443e5acd89cSAndrew Turner #define EXCP_SOFTSTP_EL1 0x33 /* Software Step, from same EL */ 444bd012c71SMitchell Horne #define EXCP_WATCHPT_EL0 0x34 /* Watchpoint, from lower EL */ 445e5acd89cSAndrew Turner #define EXCP_WATCHPT_EL1 0x35 /* Watchpoint, from same EL */ 44627340501SOlivier Houchard #define EXCP_BRKPT_32 0x38 /* 32bits breakpoint */ 447e5acd89cSAndrew Turner #define EXCP_BRK 0x3c /* Breakpoint */ 448e5acd89cSAndrew Turner 44942cb216aSZbigniew Bodek /* ICC_CTLR_EL1 */ 45042cb216aSZbigniew Bodek #define ICC_CTLR_EL1_EOIMODE (1U << 1) 45142cb216aSZbigniew Bodek 45242cb216aSZbigniew Bodek /* ICC_IAR1_EL1 */ 45342cb216aSZbigniew Bodek #define ICC_IAR1_EL1_SPUR (0x03ff) 45442cb216aSZbigniew Bodek 45542cb216aSZbigniew Bodek /* ICC_IGRPEN0_EL1 */ 45642cb216aSZbigniew Bodek #define ICC_IGRPEN0_EL1_EN (1U << 0) 45742cb216aSZbigniew Bodek 45842cb216aSZbigniew Bodek /* ICC_PMR_EL1 */ 45942cb216aSZbigniew Bodek #define ICC_PMR_EL1_PRIO_MASK (0xFFUL) 46042cb216aSZbigniew Bodek 4618133eda9SZbigniew Bodek /* ICC_SGI1R_EL1 */ 4624dc81560SAndrew Turner #define ICC_SGI1R_EL1 MRS_REG(ICC_SGI1R_EL1) 4634dc81560SAndrew Turner #define ICC_SGI1R_EL1_op0 3 4644dc81560SAndrew Turner #define ICC_SGI1R_EL1_op1 0 4654dc81560SAndrew Turner #define ICC_SGI1R_EL1_CRn 12 4664dc81560SAndrew Turner #define ICC_SGI1R_EL1_CRm 11 4674dc81560SAndrew Turner #define ICC_SGI1R_EL1_op2 5 468419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_TL_SHIFT 0 469419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_TL_MASK (0xffffUL << ICC_SGI1R_EL1_TL_SHIFT) 470419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_TL_VAL(x) ((x) & ICC_SGI1R_EL1_TL_MASK) 4718133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF1_SHIFT 16 472419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF1_MASK (0xfful << ICC_SGI1R_EL1_AFF1_SHIFT) 473419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF1_VAL(x) ((x) & ICC_SGI1R_EL1_AFF1_MASK) 4748133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_SGIID_SHIFT 24 475419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_SGIID_MASK (0xfUL << ICC_SGI1R_EL1_SGIID_SHIFT) 476419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_SGIID_VAL(x) ((x) & ICC_SGI1R_EL1_SGIID_MASK) 4778133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF2_SHIFT 32 478419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF2_MASK (0xfful << ICC_SGI1R_EL1_AFF2_SHIFT) 479419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF2_VAL(x) ((x) & ICC_SGI1R_EL1_AFF2_MASK) 480419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_RS_SHIFT 44 481419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_RS_MASK (0xful << ICC_SGI1R_EL1_RS_SHIFT) 482419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_RS_VAL(x) ((x) & ICC_SGI1R_EL1_RS_MASK) 4838133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF3_SHIFT 48 484419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF3_MASK (0xfful << ICC_SGI1R_EL1_AFF3_SHIFT) 485419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF3_VAL(x) ((x) & ICC_SGI1R_EL1_AFF3_MASK) 4868133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_IRM (0x1UL << 40) 4878133eda9SZbigniew Bodek 48842cb216aSZbigniew Bodek /* ICC_SRE_EL1 */ 48942cb216aSZbigniew Bodek #define ICC_SRE_EL1_SRE (1U << 0) 49042cb216aSZbigniew Bodek 4914baf5db0SAndrew Turner /* ID_AA64AFR0_EL1 */ 4924baf5db0SAndrew Turner #define ID_AA64AFR0_EL1 MRS_REG(ID_AA64AFR0_EL1) 4934baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_op0 3 4944baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_op1 0 4954baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_CRn 0 4964baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_CRm 5 4974baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_op2 4 4984baf5db0SAndrew Turner 4994baf5db0SAndrew Turner /* ID_AA64AFR1_EL1 */ 5004baf5db0SAndrew Turner #define ID_AA64AFR1_EL1 MRS_REG(ID_AA64AFR1_EL1) 5014baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_op0 3 5024baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_op1 0 5034baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_CRn 0 5044baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_CRm 5 5054baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_op2 5 5064baf5db0SAndrew Turner 5075f0a5fefSAndrew Turner /* ID_AA64DFR0_EL1 */ 50810f6680fSAndrew Turner #define ID_AA64DFR0_EL1 MRS_REG(ID_AA64DFR0_EL1) 5096fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_op0 3 5106fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_op1 0 5116fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_CRn 0 5126fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_CRm 5 5136fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_op2 0 514f1fbf9c3SAndrew Turner #define ID_AA64DFR0_DebugVer_SHIFT 0 515f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_MASK (UL(0xf) << ID_AA64DFR0_DebugVer_SHIFT) 51644e446a1SAndrew Turner #define ID_AA64DFR0_DebugVer_VAL(x) ((x) & ID_AA64DFR0_DebugVer_MASK) 517f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8 (UL(0x6) << ID_AA64DFR0_DebugVer_SHIFT) 518f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8_VHE (UL(0x7) << ID_AA64DFR0_DebugVer_SHIFT) 519f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8_2 (UL(0x8) << ID_AA64DFR0_DebugVer_SHIFT) 520a7b05eb1SAndrew Turner #define ID_AA64DFR0_DebugVer_8_4 (UL(0x9) << ID_AA64DFR0_DebugVer_SHIFT) 5216fd44e5fSAndrew Turner #define ID_AA64DFR0_DebugVer_8_8 (UL(0xa) << ID_AA64DFR0_DebugVer_SHIFT) 522f1fbf9c3SAndrew Turner #define ID_AA64DFR0_TraceVer_SHIFT 4 523f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_MASK (UL(0xf) << ID_AA64DFR0_TraceVer_SHIFT) 52444e446a1SAndrew Turner #define ID_AA64DFR0_TraceVer_VAL(x) ((x) & ID_AA64DFR0_TraceVer_MASK) 525f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_NONE (UL(0x0) << ID_AA64DFR0_TraceVer_SHIFT) 526f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_IMPL (UL(0x1) << ID_AA64DFR0_TraceVer_SHIFT) 527f1fbf9c3SAndrew Turner #define ID_AA64DFR0_PMUVer_SHIFT 8 528f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_MASK (UL(0xf) << ID_AA64DFR0_PMUVer_SHIFT) 52944e446a1SAndrew Turner #define ID_AA64DFR0_PMUVer_VAL(x) ((x) & ID_AA64DFR0_PMUVer_MASK) 530f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_NONE (UL(0x0) << ID_AA64DFR0_PMUVer_SHIFT) 531f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_3 (UL(0x1) << ID_AA64DFR0_PMUVer_SHIFT) 532f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_3_1 (UL(0x4) << ID_AA64DFR0_PMUVer_SHIFT) 533a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMUVer_3_4 (UL(0x5) << ID_AA64DFR0_PMUVer_SHIFT) 534a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMUVer_3_5 (UL(0x6) << ID_AA64DFR0_PMUVer_SHIFT) 5356fd44e5fSAndrew Turner #define ID_AA64DFR0_PMUVer_3_7 (UL(0x7) << ID_AA64DFR0_PMUVer_SHIFT) 5366fd44e5fSAndrew Turner #define ID_AA64DFR0_PMUVer_3_8 (UL(0x8) << ID_AA64DFR0_PMUVer_SHIFT) 537f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_IMPL (UL(0xf) << ID_AA64DFR0_PMUVer_SHIFT) 538f1fbf9c3SAndrew Turner #define ID_AA64DFR0_BRPs_SHIFT 12 539f31c5955SAndrew Turner #define ID_AA64DFR0_BRPs_MASK (UL(0xf) << ID_AA64DFR0_BRPs_SHIFT) 54044e446a1SAndrew Turner #define ID_AA64DFR0_BRPs_VAL(x) \ 541f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_BRPs_SHIFT) & 0xf) + 1) 5426fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_SHIFT 16 5436fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_MASK (UL(0xf) << ID_AA64DFR0_PMSS_SHIFT) 5446fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_VAL(x) ((x) & ID_AA64DFR0_PMSS_MASK) 5456fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_NONE (UL(0x0) << ID_AA64DFR0_PMSS_SHIFT) 5466fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_IMPL (UL(0x1) << ID_AA64DFR0_PMSS_SHIFT) 547f1fbf9c3SAndrew Turner #define ID_AA64DFR0_WRPs_SHIFT 20 548f31c5955SAndrew Turner #define ID_AA64DFR0_WRPs_MASK (UL(0xf) << ID_AA64DFR0_WRPs_SHIFT) 54944e446a1SAndrew Turner #define ID_AA64DFR0_WRPs_VAL(x) \ 550f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_WRPs_SHIFT) & 0xf) + 1) 551f1fbf9c3SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_SHIFT 28 552f31c5955SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_MASK (UL(0xf) << ID_AA64DFR0_CTX_CMPs_SHIFT) 55344e446a1SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_VAL(x) \ 554f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_CTX_CMPs_SHIFT) & 0xf) + 1) 555f1fbf9c3SAndrew Turner #define ID_AA64DFR0_PMSVer_SHIFT 32 556f31c5955SAndrew Turner #define ID_AA64DFR0_PMSVer_MASK (UL(0xf) << ID_AA64DFR0_PMSVer_SHIFT) 55744e446a1SAndrew Turner #define ID_AA64DFR0_PMSVer_VAL(x) ((x) & ID_AA64DFR0_PMSVer_MASK) 558f31c5955SAndrew Turner #define ID_AA64DFR0_PMSVer_NONE (UL(0x0) << ID_AA64DFR0_PMSVer_SHIFT) 559a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMSVer_SPE (UL(0x1) << ID_AA64DFR0_PMSVer_SHIFT) 5606fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_1_1 (UL(0x2) << ID_AA64DFR0_PMSVer_SHIFT) 5616fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_1_2 (UL(0x3) << ID_AA64DFR0_PMSVer_SHIFT) 5626fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_1_3 (UL(0x4) << ID_AA64DFR0_PMSVer_SHIFT) 563a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_SHIFT 36 564a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_MASK (UL(0xf) << ID_AA64DFR0_DoubleLock_SHIFT) 565a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_VAL(x) ((x) & ID_AA64DFR0_DoubleLock_MASK) 566a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_IMPL (UL(0x0) << ID_AA64DFR0_DoubleLock_SHIFT) 567a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_NONE (UL(0xf) << ID_AA64DFR0_DoubleLock_SHIFT) 568a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_SHIFT 40 569a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_MASK (UL(0xf) << ID_AA64DFR0_TraceFilt_SHIFT) 570a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_VAL(x) ((x) & ID_AA64DFR0_TraceFilt_MASK) 571a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_NONE (UL(0x0) << ID_AA64DFR0_TraceFilt_SHIFT) 572a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_8_4 (UL(0x1) << ID_AA64DFR0_TraceFilt_SHIFT) 5736fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_SHIFT 44 5746fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_MASK (UL(0xf) << ID_AA64DFR0_TraceBuffer_SHIFT) 5756fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_VAL(x) ((x) & ID_AA64DFR0_TraceBuffer_MASK) 5766fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_NONE (UL(0x0) << ID_AA64DFR0_TraceBuffer_SHIFT) 5776fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_IMPL (UL(0x1) << ID_AA64DFR0_TraceBuffer_SHIFT) 5786fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_SHIFT 48 5796fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_MASK (UL(0xf) << ID_AA64DFR0_MTPMU_SHIFT) 5806fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_VAL(x) ((x) & ID_AA64DFR0_MTPMU_MASK) 5816fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_NONE (UL(0x0) << ID_AA64DFR0_MTPMU_SHIFT) 5826fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_IMPL (UL(0x1) << ID_AA64DFR0_MTPMU_SHIFT) 5836fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_NONE_MT_RES0 (UL(0xf) << ID_AA64DFR0_MTPMU_SHIFT) 5846fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_SHIFT 52 5856fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_MASK (UL(0xf) << ID_AA64DFR0_BRBE_SHIFT) 5866fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_VAL(x) ((x) & ID_AA64DFR0_BRBE_MASK) 5876fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_NONE (UL(0x0) << ID_AA64DFR0_BRBE_SHIFT) 5886fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_IMPL (UL(0x1) << ID_AA64DFR0_BRBE_SHIFT) 5896fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_EL3 (UL(0x2) << ID_AA64DFR0_BRBE_SHIFT) 5906fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_SHIFT 60 5916fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_MASK (UL(0xf) << ID_AA64DFR0_HPMN0_SHIFT) 5926fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_VAL(x) ((x) & ID_AA64DFR0_HPMN0_MASK) 5936fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_CONSTR (UL(0x0) << ID_AA64DFR0_HPMN0_SHIFT) 5946fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_DEFINED (UL(0x1) << ID_AA64DFR0_HPMN0_SHIFT) 5955f0a5fefSAndrew Turner 596419f8fc7SAndrew Turner /* ID_AA64DFR1_EL1 */ 597dd235575SAndrew Turner #define ID_AA64DFR1_EL1 MRS_REG(ID_AA64DFR1_EL1) 598419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_op0 3 599419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_op1 0 600419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_CRn 0 601419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_CRm 5 602419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_op2 1 603419f8fc7SAndrew Turner 6045f0a5fefSAndrew Turner /* ID_AA64ISAR0_EL1 */ 60510f6680fSAndrew Turner #define ID_AA64ISAR0_EL1 MRS_REG(ID_AA64ISAR0_EL1) 6064182f581SAndrew Turner #define ID_AA64ISAR0_EL1_op0 3 6074182f581SAndrew Turner #define ID_AA64ISAR0_EL1_op1 0 6084182f581SAndrew Turner #define ID_AA64ISAR0_EL1_CRn 0 6094182f581SAndrew Turner #define ID_AA64ISAR0_EL1_CRm 6 6104182f581SAndrew Turner #define ID_AA64ISAR0_EL1_op2 0 6115f0a5fefSAndrew Turner #define ID_AA64ISAR0_AES_SHIFT 4 612f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_MASK (UL(0xf) << ID_AA64ISAR0_AES_SHIFT) 61344e446a1SAndrew Turner #define ID_AA64ISAR0_AES_VAL(x) ((x) & ID_AA64ISAR0_AES_MASK) 614f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_NONE (UL(0x0) << ID_AA64ISAR0_AES_SHIFT) 615f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_BASE (UL(0x1) << ID_AA64ISAR0_AES_SHIFT) 616f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_PMULL (UL(0x2) << ID_AA64ISAR0_AES_SHIFT) 6175f0a5fefSAndrew Turner #define ID_AA64ISAR0_SHA1_SHIFT 8 618f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_MASK (UL(0xf) << ID_AA64ISAR0_SHA1_SHIFT) 61944e446a1SAndrew Turner #define ID_AA64ISAR0_SHA1_VAL(x) ((x) & ID_AA64ISAR0_SHA1_MASK) 620f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_NONE (UL(0x0) << ID_AA64ISAR0_SHA1_SHIFT) 621f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_BASE (UL(0x1) << ID_AA64ISAR0_SHA1_SHIFT) 6225f0a5fefSAndrew Turner #define ID_AA64ISAR0_SHA2_SHIFT 12 623f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_MASK (UL(0xf) << ID_AA64ISAR0_SHA2_SHIFT) 62444e446a1SAndrew Turner #define ID_AA64ISAR0_SHA2_VAL(x) ((x) & ID_AA64ISAR0_SHA2_MASK) 625f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_NONE (UL(0x0) << ID_AA64ISAR0_SHA2_SHIFT) 626f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_BASE (UL(0x1) << ID_AA64ISAR0_SHA2_SHIFT) 627f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_512 (UL(0x2) << ID_AA64ISAR0_SHA2_SHIFT) 6285f0a5fefSAndrew Turner #define ID_AA64ISAR0_CRC32_SHIFT 16 629f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_MASK (UL(0xf) << ID_AA64ISAR0_CRC32_SHIFT) 63044e446a1SAndrew Turner #define ID_AA64ISAR0_CRC32_VAL(x) ((x) & ID_AA64ISAR0_CRC32_MASK) 631f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_NONE (UL(0x0) << ID_AA64ISAR0_CRC32_SHIFT) 632f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_BASE (UL(0x1) << ID_AA64ISAR0_CRC32_SHIFT) 633f1fbf9c3SAndrew Turner #define ID_AA64ISAR0_Atomic_SHIFT 20 634f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_MASK (UL(0xf) << ID_AA64ISAR0_Atomic_SHIFT) 63544e446a1SAndrew Turner #define ID_AA64ISAR0_Atomic_VAL(x) ((x) & ID_AA64ISAR0_Atomic_MASK) 636f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_NONE (UL(0x0) << ID_AA64ISAR0_Atomic_SHIFT) 637f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_IMPL (UL(0x2) << ID_AA64ISAR0_Atomic_SHIFT) 6384182f581SAndrew Turner #define ID_AA64ISAR0_TME_SHIFT 24 6394182f581SAndrew Turner #define ID_AA64ISAR0_TME_MASK (UL(0xf) << ID_AA64ISAR0_TME_SHIFT) 6404182f581SAndrew Turner #define ID_AA64ISAR0_TME_NONE (UL(0x0) << ID_AA64ISAR0_TME_SHIFT) 6414182f581SAndrew Turner #define ID_AA64ISAR0_TME_IMPL (UL(0x1) << ID_AA64ISAR0_TME_SHIFT) 6422bafd72fSAndrew Turner #define ID_AA64ISAR0_RDM_SHIFT 28 643f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_MASK (UL(0xf) << ID_AA64ISAR0_RDM_SHIFT) 64444e446a1SAndrew Turner #define ID_AA64ISAR0_RDM_VAL(x) ((x) & ID_AA64ISAR0_RDM_MASK) 645f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_NONE (UL(0x0) << ID_AA64ISAR0_RDM_SHIFT) 646f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_IMPL (UL(0x1) << ID_AA64ISAR0_RDM_SHIFT) 647ca289945SAndrew Turner #define ID_AA64ISAR0_SHA3_SHIFT 32 648f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_MASK (UL(0xf) << ID_AA64ISAR0_SHA3_SHIFT) 64944e446a1SAndrew Turner #define ID_AA64ISAR0_SHA3_VAL(x) ((x) & ID_AA64ISAR0_SHA3_MASK) 650f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_NONE (UL(0x0) << ID_AA64ISAR0_SHA3_SHIFT) 651f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_IMPL (UL(0x1) << ID_AA64ISAR0_SHA3_SHIFT) 652ca289945SAndrew Turner #define ID_AA64ISAR0_SM3_SHIFT 36 653f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_MASK (UL(0xf) << ID_AA64ISAR0_SM3_SHIFT) 65444e446a1SAndrew Turner #define ID_AA64ISAR0_SM3_VAL(x) ((x) & ID_AA64ISAR0_SM3_MASK) 655f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_NONE (UL(0x0) << ID_AA64ISAR0_SM3_SHIFT) 656f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_IMPL (UL(0x1) << ID_AA64ISAR0_SM3_SHIFT) 657ca289945SAndrew Turner #define ID_AA64ISAR0_SM4_SHIFT 40 658f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_MASK (UL(0xf) << ID_AA64ISAR0_SM4_SHIFT) 65944e446a1SAndrew Turner #define ID_AA64ISAR0_SM4_VAL(x) ((x) & ID_AA64ISAR0_SM4_MASK) 660f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_NONE (UL(0x0) << ID_AA64ISAR0_SM4_SHIFT) 661f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_IMPL (UL(0x1) << ID_AA64ISAR0_SM4_SHIFT) 6625bb9cd61SAndrew Turner #define ID_AA64ISAR0_DP_SHIFT 44 663f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_MASK (UL(0xf) << ID_AA64ISAR0_DP_SHIFT) 66444e446a1SAndrew Turner #define ID_AA64ISAR0_DP_VAL(x) ((x) & ID_AA64ISAR0_DP_MASK) 665f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_NONE (UL(0x0) << ID_AA64ISAR0_DP_SHIFT) 666f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_IMPL (UL(0x1) << ID_AA64ISAR0_DP_SHIFT) 66761949736SMitchell Horne #define ID_AA64ISAR0_FHM_SHIFT 48 66861949736SMitchell Horne #define ID_AA64ISAR0_FHM_MASK (UL(0xf) << ID_AA64ISAR0_FHM_SHIFT) 66961949736SMitchell Horne #define ID_AA64ISAR0_FHM_VAL(x) ((x) & ID_AA64ISAR0_FHM_MASK) 67061949736SMitchell Horne #define ID_AA64ISAR0_FHM_NONE (UL(0x0) << ID_AA64ISAR0_FHM_SHIFT) 67161949736SMitchell Horne #define ID_AA64ISAR0_FHM_IMPL (UL(0x1) << ID_AA64ISAR0_FHM_SHIFT) 67261949736SMitchell Horne #define ID_AA64ISAR0_TS_SHIFT 52 67361949736SMitchell Horne #define ID_AA64ISAR0_TS_MASK (UL(0xf) << ID_AA64ISAR0_TS_SHIFT) 67461949736SMitchell Horne #define ID_AA64ISAR0_TS_VAL(x) ((x) & ID_AA64ISAR0_TS_MASK) 67561949736SMitchell Horne #define ID_AA64ISAR0_TS_NONE (UL(0x0) << ID_AA64ISAR0_TS_SHIFT) 67661949736SMitchell Horne #define ID_AA64ISAR0_TS_CondM_8_4 (UL(0x1) << ID_AA64ISAR0_TS_SHIFT) 67761949736SMitchell Horne #define ID_AA64ISAR0_TS_CondM_8_5 (UL(0x2) << ID_AA64ISAR0_TS_SHIFT) 67861949736SMitchell Horne #define ID_AA64ISAR0_TLB_SHIFT 56 67961949736SMitchell Horne #define ID_AA64ISAR0_TLB_MASK (UL(0xf) << ID_AA64ISAR0_TLB_SHIFT) 68061949736SMitchell Horne #define ID_AA64ISAR0_TLB_VAL(x) ((x) & ID_AA64ISAR0_TLB_MASK) 68161949736SMitchell Horne #define ID_AA64ISAR0_TLB_NONE (UL(0x0) << ID_AA64ISAR0_TLB_SHIFT) 68261949736SMitchell Horne #define ID_AA64ISAR0_TLB_TLBIOS (UL(0x1) << ID_AA64ISAR0_TLB_SHIFT) 68361949736SMitchell Horne #define ID_AA64ISAR0_TLB_TLBIOSR (UL(0x2) << ID_AA64ISAR0_TLB_SHIFT) 68461949736SMitchell Horne #define ID_AA64ISAR0_RNDR_SHIFT 60 68561949736SMitchell Horne #define ID_AA64ISAR0_RNDR_MASK (UL(0xf) << ID_AA64ISAR0_RNDR_SHIFT) 68661949736SMitchell Horne #define ID_AA64ISAR0_RNDR_VAL(x) ((x) & ID_AA64ISAR0_RNDR_MASK) 68761949736SMitchell Horne #define ID_AA64ISAR0_RNDR_NONE (UL(0x0) << ID_AA64ISAR0_RNDR_SHIFT) 68861949736SMitchell Horne #define ID_AA64ISAR0_RNDR_IMPL (UL(0x1) << ID_AA64ISAR0_RNDR_SHIFT) 6895f0a5fefSAndrew Turner 690f45dc694SAndrew Turner /* ID_AA64ISAR1_EL1 */ 69110f6680fSAndrew Turner #define ID_AA64ISAR1_EL1 MRS_REG(ID_AA64ISAR1_EL1) 692de013099SAndrew Turner #define ID_AA64ISAR1_EL1_op0 3 693de013099SAndrew Turner #define ID_AA64ISAR1_EL1_op1 0 694de013099SAndrew Turner #define ID_AA64ISAR1_EL1_CRn 0 695de013099SAndrew Turner #define ID_AA64ISAR1_EL1_CRm 6 696de013099SAndrew Turner #define ID_AA64ISAR1_EL1_op2 1 6971a2e5c00SAndrew Turner #define ID_AA64ISAR1_DPB_SHIFT 0 698f31c5955SAndrew Turner #define ID_AA64ISAR1_DPB_MASK (UL(0xf) << ID_AA64ISAR1_DPB_SHIFT) 69944e446a1SAndrew Turner #define ID_AA64ISAR1_DPB_VAL(x) ((x) & ID_AA64ISAR1_DPB_MASK) 700f31c5955SAndrew Turner #define ID_AA64ISAR1_DPB_NONE (UL(0x0) << ID_AA64ISAR1_DPB_SHIFT) 70161949736SMitchell Horne #define ID_AA64ISAR1_DPB_DCCVAP (UL(0x1) << ID_AA64ISAR1_DPB_SHIFT) 70261949736SMitchell Horne #define ID_AA64ISAR1_DPB_DCCVADP (UL(0x2) << ID_AA64ISAR1_DPB_SHIFT) 703ca289945SAndrew Turner #define ID_AA64ISAR1_APA_SHIFT 4 704f31c5955SAndrew Turner #define ID_AA64ISAR1_APA_MASK (UL(0xf) << ID_AA64ISAR1_APA_SHIFT) 70544e446a1SAndrew Turner #define ID_AA64ISAR1_APA_VAL(x) ((x) & ID_AA64ISAR1_APA_MASK) 706f31c5955SAndrew Turner #define ID_AA64ISAR1_APA_NONE (UL(0x0) << ID_AA64ISAR1_APA_SHIFT) 707a7b05eb1SAndrew Turner #define ID_AA64ISAR1_APA_PAC (UL(0x1) << ID_AA64ISAR1_APA_SHIFT) 708a7b05eb1SAndrew Turner #define ID_AA64ISAR1_APA_EPAC (UL(0x2) << ID_AA64ISAR1_APA_SHIFT) 709e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_EPAC2 (UL(0x3) << ID_AA64ISAR1_APA_SHIFT) 710e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_FPAC (UL(0x4) << ID_AA64ISAR1_APA_SHIFT) 711e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR1_APA_SHIFT) 712ca289945SAndrew Turner #define ID_AA64ISAR1_API_SHIFT 8 713f31c5955SAndrew Turner #define ID_AA64ISAR1_API_MASK (UL(0xf) << ID_AA64ISAR1_API_SHIFT) 71444e446a1SAndrew Turner #define ID_AA64ISAR1_API_VAL(x) ((x) & ID_AA64ISAR1_API_MASK) 715f31c5955SAndrew Turner #define ID_AA64ISAR1_API_NONE (UL(0x0) << ID_AA64ISAR1_API_SHIFT) 716a7b05eb1SAndrew Turner #define ID_AA64ISAR1_API_PAC (UL(0x1) << ID_AA64ISAR1_API_SHIFT) 717a7b05eb1SAndrew Turner #define ID_AA64ISAR1_API_EPAC (UL(0x2) << ID_AA64ISAR1_API_SHIFT) 718e3f70874SAndrew Turner #define ID_AA64ISAR1_API_EPAC2 (UL(0x3) << ID_AA64ISAR1_API_SHIFT) 719e3f70874SAndrew Turner #define ID_AA64ISAR1_API_FPAC (UL(0x4) << ID_AA64ISAR1_API_SHIFT) 720e3f70874SAndrew Turner #define ID_AA64ISAR1_API_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR1_API_SHIFT) 721ca289945SAndrew Turner #define ID_AA64ISAR1_JSCVT_SHIFT 12 722f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_MASK (UL(0xf) << ID_AA64ISAR1_JSCVT_SHIFT) 72344e446a1SAndrew Turner #define ID_AA64ISAR1_JSCVT_VAL(x) ((x) & ID_AA64ISAR1_JSCVT_MASK) 724f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_NONE (UL(0x0) << ID_AA64ISAR1_JSCVT_SHIFT) 725f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_IMPL (UL(0x1) << ID_AA64ISAR1_JSCVT_SHIFT) 726ca289945SAndrew Turner #define ID_AA64ISAR1_FCMA_SHIFT 16 727f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_MASK (UL(0xf) << ID_AA64ISAR1_FCMA_SHIFT) 72844e446a1SAndrew Turner #define ID_AA64ISAR1_FCMA_VAL(x) ((x) & ID_AA64ISAR1_FCMA_MASK) 729f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_NONE (UL(0x0) << ID_AA64ISAR1_FCMA_SHIFT) 730f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_IMPL (UL(0x1) << ID_AA64ISAR1_FCMA_SHIFT) 731ca289945SAndrew Turner #define ID_AA64ISAR1_LRCPC_SHIFT 20 732f31c5955SAndrew Turner #define ID_AA64ISAR1_LRCPC_MASK (UL(0xf) << ID_AA64ISAR1_LRCPC_SHIFT) 73344e446a1SAndrew Turner #define ID_AA64ISAR1_LRCPC_VAL(x) ((x) & ID_AA64ISAR1_LRCPC_MASK) 734f31c5955SAndrew Turner #define ID_AA64ISAR1_LRCPC_NONE (UL(0x0) << ID_AA64ISAR1_LRCPC_SHIFT) 73561949736SMitchell Horne #define ID_AA64ISAR1_LRCPC_RCPC_8_3 (UL(0x1) << ID_AA64ISAR1_LRCPC_SHIFT) 73661949736SMitchell Horne #define ID_AA64ISAR1_LRCPC_RCPC_8_4 (UL(0x2) << ID_AA64ISAR1_LRCPC_SHIFT) 737ca289945SAndrew Turner #define ID_AA64ISAR1_GPA_SHIFT 24 738f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_MASK (UL(0xf) << ID_AA64ISAR1_GPA_SHIFT) 73944e446a1SAndrew Turner #define ID_AA64ISAR1_GPA_VAL(x) ((x) & ID_AA64ISAR1_GPA_MASK) 740f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_NONE (UL(0x0) << ID_AA64ISAR1_GPA_SHIFT) 741f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_IMPL (UL(0x1) << ID_AA64ISAR1_GPA_SHIFT) 742ca289945SAndrew Turner #define ID_AA64ISAR1_GPI_SHIFT 28 743f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_MASK (UL(0xf) << ID_AA64ISAR1_GPI_SHIFT) 74444e446a1SAndrew Turner #define ID_AA64ISAR1_GPI_VAL(x) ((x) & ID_AA64ISAR1_GPI_MASK) 745f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_NONE (UL(0x0) << ID_AA64ISAR1_GPI_SHIFT) 746f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_IMPL (UL(0x1) << ID_AA64ISAR1_GPI_SHIFT) 74761949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_SHIFT 32 74861949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_MASK (UL(0xf) << ID_AA64ISAR1_FRINTTS_SHIFT) 74961949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_VAL(x) ((x) & ID_AA64ISAR1_FRINTTS_MASK) 75061949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_NONE (UL(0x0) << ID_AA64ISAR1_FRINTTS_SHIFT) 75161949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_IMPL (UL(0x1) << ID_AA64ISAR1_FRINTTS_SHIFT) 75261949736SMitchell Horne #define ID_AA64ISAR1_SB_SHIFT 36 75361949736SMitchell Horne #define ID_AA64ISAR1_SB_MASK (UL(0xf) << ID_AA64ISAR1_SB_SHIFT) 75461949736SMitchell Horne #define ID_AA64ISAR1_SB_VAL(x) ((x) & ID_AA64ISAR1_SB_MASK) 75561949736SMitchell Horne #define ID_AA64ISAR1_SB_NONE (UL(0x0) << ID_AA64ISAR1_SB_SHIFT) 75661949736SMitchell Horne #define ID_AA64ISAR1_SB_IMPL (UL(0x1) << ID_AA64ISAR1_SB_SHIFT) 75761949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_SHIFT 40 75861949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_MASK (UL(0xf) << ID_AA64ISAR1_SPECRES_SHIFT) 75961949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_VAL(x) ((x) & ID_AA64ISAR1_SPECRES_MASK) 76061949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_NONE (UL(0x0) << ID_AA64ISAR1_SPECRES_SHIFT) 76161949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_IMPL (UL(0x1) << ID_AA64ISAR1_SPECRES_SHIFT) 76261949736SMitchell Horne #define ID_AA64ISAR1_BF16_SHIFT 44 76361949736SMitchell Horne #define ID_AA64ISAR1_BF16_MASK (UL(0xf) << ID_AA64ISAR1_BF16_SHIFT) 76461949736SMitchell Horne #define ID_AA64ISAR1_BF16_VAL(x) ((x) & ID_AA64ISAR1_BF16_MASK) 76561949736SMitchell Horne #define ID_AA64ISAR1_BF16_NONE (UL(0x0) << ID_AA64ISAR1_BF16_SHIFT) 76661949736SMitchell Horne #define ID_AA64ISAR1_BF16_IMPL (UL(0x1) << ID_AA64ISAR1_BF16_SHIFT) 767de013099SAndrew Turner #define ID_AA64ISAR1_BF16_EBF (UL(0x2) << ID_AA64ISAR1_BF16_SHIFT) 76861949736SMitchell Horne #define ID_AA64ISAR1_DGH_SHIFT 48 76961949736SMitchell Horne #define ID_AA64ISAR1_DGH_MASK (UL(0xf) << ID_AA64ISAR1_DGH_SHIFT) 77061949736SMitchell Horne #define ID_AA64ISAR1_DGH_VAL(x) ((x) & ID_AA64ISAR1_DGH_MASK) 77161949736SMitchell Horne #define ID_AA64ISAR1_DGH_NONE (UL(0x0) << ID_AA64ISAR1_DGH_SHIFT) 77261949736SMitchell Horne #define ID_AA64ISAR1_DGH_IMPL (UL(0x1) << ID_AA64ISAR1_DGH_SHIFT) 77361949736SMitchell Horne #define ID_AA64ISAR1_I8MM_SHIFT 52 77461949736SMitchell Horne #define ID_AA64ISAR1_I8MM_MASK (UL(0xf) << ID_AA64ISAR1_I8MM_SHIFT) 77561949736SMitchell Horne #define ID_AA64ISAR1_I8MM_VAL(x) ((x) & ID_AA64ISAR1_I8MM_MASK) 77661949736SMitchell Horne #define ID_AA64ISAR1_I8MM_NONE (UL(0x0) << ID_AA64ISAR1_I8MM_SHIFT) 77761949736SMitchell Horne #define ID_AA64ISAR1_I8MM_IMPL (UL(0x1) << ID_AA64ISAR1_I8MM_SHIFT) 778de013099SAndrew Turner #define ID_AA64ISAR1_XS_SHIFT 56 779de013099SAndrew Turner #define ID_AA64ISAR1_XS_MASK (UL(0xf) << ID_AA64ISAR1_XS_SHIFT) 780de013099SAndrew Turner #define ID_AA64ISAR1_XS_VAL(x) ((x) & ID_AA64ISAR1_XS_MASK) 781de013099SAndrew Turner #define ID_AA64ISAR1_XS_NONE (UL(0x0) << ID_AA64ISAR1_XS_SHIFT) 782de013099SAndrew Turner #define ID_AA64ISAR1_XS_IMPL (UL(0x1) << ID_AA64ISAR1_XS_SHIFT) 783de013099SAndrew Turner #define ID_AA64ISAR1_LS64_SHIFT 60 784de013099SAndrew Turner #define ID_AA64ISAR1_LS64_MASK (UL(0xf) << ID_AA64ISAR1_LS64_SHIFT) 785de013099SAndrew Turner #define ID_AA64ISAR1_LS64_VAL(x) ((x) & ID_AA64ISAR1_LS64_MASK) 786de013099SAndrew Turner #define ID_AA64ISAR1_LS64_NONE (UL(0x0) << ID_AA64ISAR1_LS64_SHIFT) 787de013099SAndrew Turner #define ID_AA64ISAR1_LS64_IMPL (UL(0x1) << ID_AA64ISAR1_LS64_SHIFT) 788de013099SAndrew Turner #define ID_AA64ISAR1_LS64_V (UL(0x2) << ID_AA64ISAR1_LS64_SHIFT) 789de013099SAndrew Turner #define ID_AA64ISAR1_LS64_ACCDATA (UL(0x3) << ID_AA64ISAR1_LS64_SHIFT) 790f45dc694SAndrew Turner 791a8fac0ceSAndrew Turner /* ID_AA64ISAR2_EL1 */ 792a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1 MRS_REG(ID_AA64ISAR2_EL1) 793a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op0 3 794a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op1 0 795a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_CRn 0 796a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_CRm 6 797a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op2 2 798a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_SHIFT 0 799a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_MASK (UL(0xf) << ID_AA64ISAR2_WFxT_SHIFT) 800a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_VAL(x) ((x) & ID_AA64ISAR2_WFxT_MASK) 801a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_NONE (UL(0x0) << ID_AA64ISAR2_WFxT_SHIFT) 802a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_IMPL (UL(0x1) << ID_AA64ISAR2_WFxT_SHIFT) 803a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_SHIFT 4 804a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_MASK (UL(0xf) << ID_AA64ISAR2_RPRES_SHIFT) 805a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_VAL(x) ((x) & ID_AA64ISAR2_RPRES_MASK) 806a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_NONE (UL(0x0) << ID_AA64ISAR2_RPRES_SHIFT) 807a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_IMPL (UL(0x1) << ID_AA64ISAR2_RPRES_SHIFT) 808a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_SHIFT 8 809a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_MASK (UL(0xf) << ID_AA64ISAR2_GPA3_SHIFT) 810a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_VAL(x) ((x) & ID_AA64ISAR2_GPA3_MASK) 811a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_NONE (UL(0x0) << ID_AA64ISAR2_GPA3_SHIFT) 812a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_IMPL (UL(0x1) << ID_AA64ISAR2_GPA3_SHIFT) 813a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_SHIFT 12 814a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_MASK (UL(0xf) << ID_AA64ISAR2_APA3_SHIFT) 815a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_VAL(x) ((x) & ID_AA64ISAR2_APA3_MASK) 816a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_NONE (UL(0x0) << ID_AA64ISAR2_APA3_SHIFT) 817a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_PAC (UL(0x1) << ID_AA64ISAR2_APA3_SHIFT) 818a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_EPAC (UL(0x2) << ID_AA64ISAR2_APA3_SHIFT) 819a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_EPAC2 (UL(0x3) << ID_AA64ISAR2_APA3_SHIFT) 820a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_FPAC (UL(0x4) << ID_AA64ISAR2_APA3_SHIFT) 821a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR2_APA3_SHIFT) 822a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_SHIFT 16 823a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_MASK (UL(0xf) << ID_AA64ISAR2_MOPS_SHIFT) 824a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_VAL(x) ((x) & ID_AA64ISAR2_MOPS_MASK) 825a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_NONE (UL(0x0) << ID_AA64ISAR2_MOPS_SHIFT) 826a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_IMPL (UL(0x1) << ID_AA64ISAR2_MOPS_SHIFT) 827a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_SHIFT 20 828a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_MASK (UL(0xf) << ID_AA64ISAR2_BC_SHIFT) 829a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_VAL(x) ((x) & ID_AA64ISAR2_BC_MASK) 830a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_NONE (UL(0x0) << ID_AA64ISAR2_BC_SHIFT) 831a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_IMPL (UL(0x1) << ID_AA64ISAR2_BC_SHIFT) 832a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_SHIFT 28 833a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_MASK (UL(0xf) << ID_AA64ISAR2_PAC_frac_SHIFT) 834a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_VAL(x) ((x) & ID_AA64ISAR2_PAC_frac_MASK) 835a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_NONE (UL(0x0) << ID_AA64ISAR2_PAC_frac_SHIFT) 836a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_IMPL (UL(0x1) << ID_AA64ISAR2_PAC_frac_SHIFT) 837a8fac0ceSAndrew Turner 8385f0a5fefSAndrew Turner /* ID_AA64MMFR0_EL1 */ 83910f6680fSAndrew Turner #define ID_AA64MMFR0_EL1 MRS_REG(ID_AA64MMFR0_EL1) 840b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_op0 3 841b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_op1 0 842b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_CRn 0 843b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_CRm 7 844b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_op2 0 845f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_PARange_SHIFT 0 846f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_MASK (UL(0xf) << ID_AA64MMFR0_PARange_SHIFT) 84744e446a1SAndrew Turner #define ID_AA64MMFR0_PARange_VAL(x) ((x) & ID_AA64MMFR0_PARange_MASK) 848f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4G (UL(0x0) << ID_AA64MMFR0_PARange_SHIFT) 849f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_64G (UL(0x1) << ID_AA64MMFR0_PARange_SHIFT) 850f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_1T (UL(0x2) << ID_AA64MMFR0_PARange_SHIFT) 851f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4T (UL(0x3) << ID_AA64MMFR0_PARange_SHIFT) 852f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_16T (UL(0x4) << ID_AA64MMFR0_PARange_SHIFT) 853f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_256T (UL(0x5) << ID_AA64MMFR0_PARange_SHIFT) 854f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4P (UL(0x6) << ID_AA64MMFR0_PARange_SHIFT) 855f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_ASIDBits_SHIFT 4 856f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_MASK (UL(0xf) << ID_AA64MMFR0_ASIDBits_SHIFT) 85744e446a1SAndrew Turner #define ID_AA64MMFR0_ASIDBits_VAL(x) ((x) & ID_AA64MMFR0_ASIDBits_MASK) 858f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_8 (UL(0x0) << ID_AA64MMFR0_ASIDBits_SHIFT) 859f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_16 (UL(0x2) << ID_AA64MMFR0_ASIDBits_SHIFT) 860f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_BigEnd_SHIFT 8 861f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_MASK (UL(0xf) << ID_AA64MMFR0_BigEnd_SHIFT) 86244e446a1SAndrew Turner #define ID_AA64MMFR0_BigEnd_VAL(x) ((x) & ID_AA64MMFR0_BigEnd_MASK) 863f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_FIXED (UL(0x0) << ID_AA64MMFR0_BigEnd_SHIFT) 864f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_MIXED (UL(0x1) << ID_AA64MMFR0_BigEnd_SHIFT) 865f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_SNSMem_SHIFT 12 866f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_MASK (UL(0xf) << ID_AA64MMFR0_SNSMem_SHIFT) 86744e446a1SAndrew Turner #define ID_AA64MMFR0_SNSMem_VAL(x) ((x) & ID_AA64MMFR0_SNSMem_MASK) 868f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_NONE (UL(0x0) << ID_AA64MMFR0_SNSMem_SHIFT) 869f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_DISTINCT (UL(0x1) << ID_AA64MMFR0_SNSMem_SHIFT) 870f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_SHIFT 16 871f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_MASK (UL(0xf) << ID_AA64MMFR0_BigEndEL0_SHIFT) 87244e446a1SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_VAL(x) ((x) & ID_AA64MMFR0_BigEndEL0_MASK) 873f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_FIXED (UL(0x0) << ID_AA64MMFR0_BigEndEL0_SHIFT) 874f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_MIXED (UL(0x1) << ID_AA64MMFR0_BigEndEL0_SHIFT) 875f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran16_SHIFT 20 876f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_MASK (UL(0xf) << ID_AA64MMFR0_TGran16_SHIFT) 87744e446a1SAndrew Turner #define ID_AA64MMFR0_TGran16_VAL(x) ((x) & ID_AA64MMFR0_TGran16_MASK) 878f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_NONE (UL(0x0) << ID_AA64MMFR0_TGran16_SHIFT) 879f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_IMPL (UL(0x1) << ID_AA64MMFR0_TGran16_SHIFT) 880b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran16_LPA2 (UL(0x2) << ID_AA64MMFR0_TGran16_SHIFT) 881f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran64_SHIFT 24 882f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_MASK (UL(0xf) << ID_AA64MMFR0_TGran64_SHIFT) 88344e446a1SAndrew Turner #define ID_AA64MMFR0_TGran64_VAL(x) ((x) & ID_AA64MMFR0_TGran64_MASK) 884f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_IMPL (UL(0x0) << ID_AA64MMFR0_TGran64_SHIFT) 885f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_NONE (UL(0xf) << ID_AA64MMFR0_TGran64_SHIFT) 886f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran4_SHIFT 28 887f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_MASK (UL(0xf) << ID_AA64MMFR0_TGran4_SHIFT) 88844e446a1SAndrew Turner #define ID_AA64MMFR0_TGran4_VAL(x) ((x) & ID_AA64MMFR0_TGran4_MASK) 889f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_IMPL (UL(0x0) << ID_AA64MMFR0_TGran4_SHIFT) 890b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran4_LPA2 (UL(0x1) << ID_AA64MMFR0_TGran4_SHIFT) 891f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_NONE (UL(0xf) << ID_AA64MMFR0_TGran4_SHIFT) 892a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_SHIFT 32 893a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran16_2_SHIFT) 894a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_VAL(x) ((x) & ID_AA64MMFR0_TGran16_2_MASK) 895a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_TGran16 (UL(0x0) << ID_AA64MMFR0_TGran16_2_SHIFT) 896a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran16_2_SHIFT) 897a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran16_2_SHIFT) 898b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran16_2_LPA2 (UL(0x3) << ID_AA64MMFR0_TGran16_2_SHIFT) 899a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_SHIFT 36 900a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran64_2_SHIFT) 901a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_VAL(x) ((x) & ID_AA64MMFR0_TGran64_2_MASK) 902a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_TGran64 (UL(0x0) << ID_AA64MMFR0_TGran64_2_SHIFT) 903a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran64_2_SHIFT) 904a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran64_2_SHIFT) 905a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_SHIFT 40 906a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran4_2_SHIFT) 907a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_VAL(x) ((x) & ID_AA64MMFR0_TGran4_2_MASK) 908a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_TGran4 (UL(0x0) << ID_AA64MMFR0_TGran4_2_SHIFT) 909a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran4_2_SHIFT) 910a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran4_2_SHIFT) 911b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran4_2_LPA2 (UL(0x3) << ID_AA64MMFR0_TGran4_2_SHIFT) 912a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_SHIFT 44 913a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_MASK (UL(0xf) << ID_AA64MMFR0_ExS_SHIFT) 914a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_VAL(x) ((x) & ID_AA64MMFR0_ExS_MASK) 915a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_ALL (UL(0x0) << ID_AA64MMFR0_ExS_SHIFT) 916a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_IMPL (UL(0x1) << ID_AA64MMFR0_ExS_SHIFT) 917b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_SHIFT 56 918b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_MASK (UL(0xf) << ID_AA64MMFR0_FGT_SHIFT) 919b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_VAL(x) ((x) & ID_AA64MMFR0_FGT_MASK) 920b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_NONE (UL(0x0) << ID_AA64MMFR0_FGT_SHIFT) 921b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_IMPL (UL(0x1) << ID_AA64MMFR0_FGT_SHIFT) 922b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_SHIFT 60 923b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_MASK (UL(0xf) << ID_AA64MMFR0_ECV_SHIFT) 924b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_VAL(x) ((x) & ID_AA64MMFR0_ECV_MASK) 925b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_NONE (UL(0x0) << ID_AA64MMFR0_ECV_SHIFT) 926b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_IMPL (UL(0x1) << ID_AA64MMFR0_ECV_SHIFT) 927b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_CNTHCTL (UL(0x2) << ID_AA64MMFR0_ECV_SHIFT) 9285f0a5fefSAndrew Turner 9292bafd72fSAndrew Turner /* ID_AA64MMFR1_EL1 */ 93010f6680fSAndrew Turner #define ID_AA64MMFR1_EL1 MRS_REG(ID_AA64MMFR1_EL1) 931b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_op0 3 932b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_op1 0 933b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_CRn 0 934b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_CRm 7 935b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_op2 1 9362bafd72fSAndrew Turner #define ID_AA64MMFR1_HAFDBS_SHIFT 0 937f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_MASK (UL(0xf) << ID_AA64MMFR1_HAFDBS_SHIFT) 93844e446a1SAndrew Turner #define ID_AA64MMFR1_HAFDBS_VAL(x) ((x) & ID_AA64MMFR1_HAFDBS_MASK) 939f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_NONE (UL(0x0) << ID_AA64MMFR1_HAFDBS_SHIFT) 940f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_AF (UL(0x1) << ID_AA64MMFR1_HAFDBS_SHIFT) 941f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_AF_DBS (UL(0x2) << ID_AA64MMFR1_HAFDBS_SHIFT) 942f1fbf9c3SAndrew Turner #define ID_AA64MMFR1_VMIDBits_SHIFT 4 943f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_MASK (UL(0xf) << ID_AA64MMFR1_VMIDBits_SHIFT) 94444e446a1SAndrew Turner #define ID_AA64MMFR1_VMIDBits_VAL(x) ((x) & ID_AA64MMFR1_VMIDBits_MASK) 945f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_8 (UL(0x0) << ID_AA64MMFR1_VMIDBits_SHIFT) 946f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_16 (UL(0x2) << ID_AA64MMFR1_VMIDBits_SHIFT) 9472bafd72fSAndrew Turner #define ID_AA64MMFR1_VH_SHIFT 8 948f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_MASK (UL(0xf) << ID_AA64MMFR1_VH_SHIFT) 94944e446a1SAndrew Turner #define ID_AA64MMFR1_VH_VAL(x) ((x) & ID_AA64MMFR1_VH_MASK) 950f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_NONE (UL(0x0) << ID_AA64MMFR1_VH_SHIFT) 951f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_IMPL (UL(0x1) << ID_AA64MMFR1_VH_SHIFT) 9522bafd72fSAndrew Turner #define ID_AA64MMFR1_HPDS_SHIFT 12 953f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_MASK (UL(0xf) << ID_AA64MMFR1_HPDS_SHIFT) 95444e446a1SAndrew Turner #define ID_AA64MMFR1_HPDS_VAL(x) ((x) & ID_AA64MMFR1_HPDS_MASK) 955f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_NONE (UL(0x0) << ID_AA64MMFR1_HPDS_SHIFT) 956f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_HPD (UL(0x1) << ID_AA64MMFR1_HPDS_SHIFT) 957f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_TTPBHA (UL(0x2) << ID_AA64MMFR1_HPDS_SHIFT) 9582bafd72fSAndrew Turner #define ID_AA64MMFR1_LO_SHIFT 16 959f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_MASK (UL(0xf) << ID_AA64MMFR1_LO_SHIFT) 96044e446a1SAndrew Turner #define ID_AA64MMFR1_LO_VAL(x) ((x) & ID_AA64MMFR1_LO_MASK) 961f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_NONE (UL(0x0) << ID_AA64MMFR1_LO_SHIFT) 962f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_IMPL (UL(0x1) << ID_AA64MMFR1_LO_SHIFT) 9632bafd72fSAndrew Turner #define ID_AA64MMFR1_PAN_SHIFT 20 964f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_MASK (UL(0xf) << ID_AA64MMFR1_PAN_SHIFT) 96544e446a1SAndrew Turner #define ID_AA64MMFR1_PAN_VAL(x) ((x) & ID_AA64MMFR1_PAN_MASK) 966f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_NONE (UL(0x0) << ID_AA64MMFR1_PAN_SHIFT) 967f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_IMPL (UL(0x1) << ID_AA64MMFR1_PAN_SHIFT) 968f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_ATS1E1 (UL(0x2) << ID_AA64MMFR1_PAN_SHIFT) 969284f91deSAndrew Turner #define ID_AA64MMFR1_PAN_EPAN (UL(0x2) << ID_AA64MMFR1_PAN_SHIFT) 970f1fbf9c3SAndrew Turner #define ID_AA64MMFR1_SpecSEI_SHIFT 24 971f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_MASK (UL(0xf) << ID_AA64MMFR1_SpecSEI_SHIFT) 97244e446a1SAndrew Turner #define ID_AA64MMFR1_SpecSEI_VAL(x) ((x) & ID_AA64MMFR1_SpecSEI_MASK) 973f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_NONE (UL(0x0) << ID_AA64MMFR1_SpecSEI_SHIFT) 974f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_IMPL (UL(0x1) << ID_AA64MMFR1_SpecSEI_SHIFT) 975f45dc694SAndrew Turner #define ID_AA64MMFR1_XNX_SHIFT 28 976f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_MASK (UL(0xf) << ID_AA64MMFR1_XNX_SHIFT) 97744e446a1SAndrew Turner #define ID_AA64MMFR1_XNX_VAL(x) ((x) & ID_AA64MMFR1_XNX_MASK) 978f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_NONE (UL(0x0) << ID_AA64MMFR1_XNX_SHIFT) 979f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_IMPL (UL(0x1) << ID_AA64MMFR1_XNX_SHIFT) 980284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_SHIFT 32 981284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_MASK (UL(0xf) << ID_AA64MMFR1_TWED_SHIFT) 982284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_VAL(x) ((x) & ID_AA64MMFR1_TWED_MASK) 983284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_NONE (UL(0x0) << ID_AA64MMFR1_TWED_SHIFT) 984284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_IMPL (UL(0x1) << ID_AA64MMFR1_TWED_SHIFT) 985284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_SHIFT 36 986284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_MASK (UL(0xf) << ID_AA64MMFR1_ETS_SHIFT) 987284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_VAL(x) ((x) & ID_AA64MMFR1_ETS_MASK) 988284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_NONE (UL(0x0) << ID_AA64MMFR1_ETS_SHIFT) 989284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_IMPL (UL(0x1) << ID_AA64MMFR1_ETS_SHIFT) 990284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_SHIFT 40 991284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_MASK (UL(0xf) << ID_AA64MMFR1_HCX_SHIFT) 992284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_VAL(x) ((x) & ID_AA64MMFR1_HCX_MASK) 993284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_NONE (UL(0x0) << ID_AA64MMFR1_HCX_SHIFT) 994284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_IMPL (UL(0x1) << ID_AA64MMFR1_HCX_SHIFT) 995284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_SHIFT 44 996284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_MASK (UL(0xf) << ID_AA64MMFR1_AFP_SHIFT) 997284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_VAL(x) ((x) & ID_AA64MMFR1_AFP_MASK) 998284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_NONE (UL(0x0) << ID_AA64MMFR1_AFP_SHIFT) 999284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_IMPL (UL(0x1) << ID_AA64MMFR1_AFP_SHIFT) 1000284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_SHIFT 48 1001284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_MASK (UL(0xf) << ID_AA64MMFR1_nTLBPA_SHIFT) 1002284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_VAL(x) ((x) & ID_AA64MMFR1_nTLBPA_MASK) 1003284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_NONE (UL(0x0) << ID_AA64MMFR1_nTLBPA_SHIFT) 1004284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_IMPL (UL(0x1) << ID_AA64MMFR1_nTLBPA_SHIFT) 1005284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_SHIFT 52 1006284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_MASK (UL(0xf) << ID_AA64MMFR1_TIDCP1_SHIFT) 1007284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_VAL(x) ((x) & ID_AA64MMFR1_TIDCP1_MASK) 1008284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_NONE (UL(0x0) << ID_AA64MMFR1_TIDCP1_SHIFT) 1009284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_IMPL (UL(0x1) << ID_AA64MMFR1_TIDCP1_SHIFT) 1010284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_SHIFT 56 1011284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_MASK (UL(0xf) << ID_AA64MMFR1_CMOVW_SHIFT) 1012284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_VAL(x) ((x) & ID_AA64MMFR1_CMOVW_MASK) 1013284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_NONE (UL(0x0) << ID_AA64MMFR1_CMOVW_SHIFT) 1014284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_IMPL (UL(0x1) << ID_AA64MMFR1_CMOVW_SHIFT) 1015f45dc694SAndrew Turner 1016f45dc694SAndrew Turner /* ID_AA64MMFR2_EL1 */ 101710f6680fSAndrew Turner #define ID_AA64MMFR2_EL1 MRS_REG(ID_AA64MMFR2_EL1) 10182134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_op0 3 10192134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_op1 0 10202134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_CRn 0 10212134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_CRm 7 10222134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_op2 2 1023f1fbf9c3SAndrew Turner #define ID_AA64MMFR2_CnP_SHIFT 0 1024f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_MASK (UL(0xf) << ID_AA64MMFR2_CnP_SHIFT) 102544e446a1SAndrew Turner #define ID_AA64MMFR2_CnP_VAL(x) ((x) & ID_AA64MMFR2_CnP_MASK) 1026f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_NONE (UL(0x0) << ID_AA64MMFR2_CnP_SHIFT) 1027f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_IMPL (UL(0x1) << ID_AA64MMFR2_CnP_SHIFT) 1028f45dc694SAndrew Turner #define ID_AA64MMFR2_UAO_SHIFT 4 1029f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_MASK (UL(0xf) << ID_AA64MMFR2_UAO_SHIFT) 103044e446a1SAndrew Turner #define ID_AA64MMFR2_UAO_VAL(x) ((x) & ID_AA64MMFR2_UAO_MASK) 1031f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_NONE (UL(0x0) << ID_AA64MMFR2_UAO_SHIFT) 1032f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_IMPL (UL(0x1) << ID_AA64MMFR2_UAO_SHIFT) 1033f45dc694SAndrew Turner #define ID_AA64MMFR2_LSM_SHIFT 8 1034f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_MASK (UL(0xf) << ID_AA64MMFR2_LSM_SHIFT) 103544e446a1SAndrew Turner #define ID_AA64MMFR2_LSM_VAL(x) ((x) & ID_AA64MMFR2_LSM_MASK) 1036f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_NONE (UL(0x0) << ID_AA64MMFR2_LSM_SHIFT) 1037f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_IMPL (UL(0x1) << ID_AA64MMFR2_LSM_SHIFT) 1038f45dc694SAndrew Turner #define ID_AA64MMFR2_IESB_SHIFT 12 1039f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_MASK (UL(0xf) << ID_AA64MMFR2_IESB_SHIFT) 104044e446a1SAndrew Turner #define ID_AA64MMFR2_IESB_VAL(x) ((x) & ID_AA64MMFR2_IESB_MASK) 1041f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_NONE (UL(0x0) << ID_AA64MMFR2_IESB_SHIFT) 1042f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_IMPL (UL(0x1) << ID_AA64MMFR2_IESB_SHIFT) 1043f1fbf9c3SAndrew Turner #define ID_AA64MMFR2_VARange_SHIFT 16 1044f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_MASK (UL(0xf) << ID_AA64MMFR2_VARange_SHIFT) 104544e446a1SAndrew Turner #define ID_AA64MMFR2_VARange_VAL(x) ((x) & ID_AA64MMFR2_VARange_MASK) 1046f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_48 (UL(0x0) << ID_AA64MMFR2_VARange_SHIFT) 1047f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_52 (UL(0x1) << ID_AA64MMFR2_VARange_SHIFT) 1048ca289945SAndrew Turner #define ID_AA64MMFR2_CCIDX_SHIFT 20 1049f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_MASK (UL(0xf) << ID_AA64MMFR2_CCIDX_SHIFT) 105044e446a1SAndrew Turner #define ID_AA64MMFR2_CCIDX_VAL(x) ((x) & ID_AA64MMFR2_CCIDX_MASK) 1051f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_32 (UL(0x0) << ID_AA64MMFR2_CCIDX_SHIFT) 1052f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_64 (UL(0x1) << ID_AA64MMFR2_CCIDX_SHIFT) 1053ca289945SAndrew Turner #define ID_AA64MMFR2_NV_SHIFT 24 1054f31c5955SAndrew Turner #define ID_AA64MMFR2_NV_MASK (UL(0xf) << ID_AA64MMFR2_NV_SHIFT) 105544e446a1SAndrew Turner #define ID_AA64MMFR2_NV_VAL(x) ((x) & ID_AA64MMFR2_NV_MASK) 1056f31c5955SAndrew Turner #define ID_AA64MMFR2_NV_NONE (UL(0x0) << ID_AA64MMFR2_NV_SHIFT) 1057a7b05eb1SAndrew Turner #define ID_AA64MMFR2_NV_8_3 (UL(0x1) << ID_AA64MMFR2_NV_SHIFT) 1058a7b05eb1SAndrew Turner #define ID_AA64MMFR2_NV_8_4 (UL(0x2) << ID_AA64MMFR2_NV_SHIFT) 10590387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_SHIFT 28 10600387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_MASK (UL(0xf) << ID_AA64MMFR2_ST_SHIFT) 10610387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_VAL(x) ((x) & ID_AA64MMFR2_ST_MASK) 10620387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_NONE (UL(0x0) << ID_AA64MMFR2_ST_SHIFT) 10630387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_IMPL (UL(0x1) << ID_AA64MMFR2_ST_SHIFT) 10640387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_SHIFT 32 10650387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_MASK (UL(0xf) << ID_AA64MMFR2_AT_SHIFT) 10660387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_VAL(x) ((x) & ID_AA64MMFR2_AT_MASK) 10670387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_NONE (UL(0x0) << ID_AA64MMFR2_AT_SHIFT) 10680387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_IMPL (UL(0x1) << ID_AA64MMFR2_AT_SHIFT) 10690387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_SHIFT 36 10700387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_MASK (UL(0xf) << ID_AA64MMFR2_IDS_SHIFT) 10710387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_VAL(x) ((x) & ID_AA64MMFR2_IDS_MASK) 10720387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_NONE (UL(0x0) << ID_AA64MMFR2_IDS_SHIFT) 10730387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_IMPL (UL(0x1) << ID_AA64MMFR2_IDS_SHIFT) 10740387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_SHIFT 40 10750387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_MASK (UL(0xf) << ID_AA64MMFR2_FWB_SHIFT) 10760387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_VAL(x) ((x) & ID_AA64MMFR2_FWB_MASK) 10770387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_NONE (UL(0x0) << ID_AA64MMFR2_FWB_SHIFT) 10780387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_IMPL (UL(0x1) << ID_AA64MMFR2_FWB_SHIFT) 10790387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_SHIFT 48 10800387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_MASK (UL(0xf) << ID_AA64MMFR2_TTL_SHIFT) 10810387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_VAL(x) ((x) & ID_AA64MMFR2_TTL_MASK) 10820387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_NONE (UL(0x0) << ID_AA64MMFR2_TTL_SHIFT) 10830387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_IMPL (UL(0x1) << ID_AA64MMFR2_TTL_SHIFT) 10840387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_SHIFT 52 10850387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_MASK (UL(0xf) << ID_AA64MMFR2_BBM_SHIFT) 10860387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_VAL(x) ((x) & ID_AA64MMFR2_BBM_MASK) 10870387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL0 (UL(0x0) << ID_AA64MMFR2_BBM_SHIFT) 10880387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL1 (UL(0x1) << ID_AA64MMFR2_BBM_SHIFT) 10890387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL2 (UL(0x2) << ID_AA64MMFR2_BBM_SHIFT) 10900387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_SHIFT 56 10910387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_MASK (UL(0xf) << ID_AA64MMFR2_EVT_SHIFT) 10920387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_VAL(x) ((x) & ID_AA64MMFR2_EVT_MASK) 10930387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_NONE (UL(0x0) << ID_AA64MMFR2_EVT_SHIFT) 10940387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_8_2 (UL(0x1) << ID_AA64MMFR2_EVT_SHIFT) 10950387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_8_5 (UL(0x2) << ID_AA64MMFR2_EVT_SHIFT) 10960387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_SHIFT 60 10970387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_MASK (UL(0xf) << ID_AA64MMFR2_E0PD_SHIFT) 10980387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_VAL(x) ((x) & ID_AA64MMFR2_E0PD_MASK) 10990387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_NONE (UL(0x0) << ID_AA64MMFR2_E0PD_SHIFT) 11000387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_IMPL (UL(0x1) << ID_AA64MMFR2_E0PD_SHIFT) 11012bafd72fSAndrew Turner 1102c6567914SAndrew Turner /* ID_AA64MMFR3_EL1 */ 1103c6567914SAndrew Turner #define ID_AA64MMFR3_EL1 MRS_REG(ID_AA64MMFR3_EL1) 1104c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_op0 3 1105c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_op1 0 1106c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_CRn 0 1107c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_CRm 7 1108c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_op2 3 1109c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_SHIFT 0 1110c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_MASK (UL(0xf) << ID_AA64MMFR3_TCRX_SHIFT) 1111c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_VAL(x) ((x) & ID_AA64MMFR3_TCRX_MASK) 1112c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_NONE (UL(0x0) << ID_AA64MMFR3_TCRX_SHIFT) 1113c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_IMPL (UL(0x1) << ID_AA64MMFR3_TCRX_SHIFT) 1114c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_SHIFT 4 1115c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_MASK (UL(0xf) << ID_AA64MMFR3_SCTLRX_SHIFT) 1116c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_VAL(x) ((x) & ID_AA64MMFR3_SCTLRX_MASK) 1117c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_NONE (UL(0x0) << ID_AA64MMFR3_SCTLRX_SHIFT) 1118c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_IMPL (UL(0x1) << ID_AA64MMFR3_SCTLRX_SHIFT) 1119c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_SHIFT 28 1120c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_MASK (UL(0xf) << ID_AA64MMFR3_MEC_SHIFT) 1121c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_VAL(x) ((x) & ID_AA64MMFR3_MEC_MASK) 1122c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_NONE (UL(0x0) << ID_AA64MMFR3_MEC_SHIFT) 1123c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_IMPL (UL(0x1) << ID_AA64MMFR3_MEC_SHIFT) 1124c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_SHIFT 60 1125c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_MASK (UL(0xf) << ID_AA64MMFR3_Spec_FPACC_SHIFT) 1126c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_VAL(x) ((x) & ID_AA64MMFR3_Spec_FPACC_MASK) 1127c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_NONE (UL(0x0) << ID_AA64MMFR3_Spec_FPACC_SHIFT) 1128c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_IMPL (UL(0x1) << ID_AA64MMFR3_Spec_FPACC_SHIFT) 1129c6567914SAndrew Turner 113022235b63SAndrew Turner /* ID_AA64MMFR4_EL1 */ 113122235b63SAndrew Turner #define ID_AA64MMFR4_EL1 MRS_REG(ID_AA64MMFR4_EL1) 113222235b63SAndrew Turner #define ID_AA64MMFR4_EL1_op0 3 113322235b63SAndrew Turner #define ID_AA64MMFR4_EL1_op1 0 113422235b63SAndrew Turner #define ID_AA64MMFR4_EL1_CRn 0 113522235b63SAndrew Turner #define ID_AA64MMFR4_EL1_CRm 7 113622235b63SAndrew Turner #define ID_AA64MMFR4_EL1_op2 4 113722235b63SAndrew Turner 1138e5acd89cSAndrew Turner /* ID_AA64PFR0_EL1 */ 113910f6680fSAndrew Turner #define ID_AA64PFR0_EL1 MRS_REG(ID_AA64PFR0_EL1) 11400766dde9SAndrew Turner #define ID_AA64PFR0_EL1_op0 3 11410766dde9SAndrew Turner #define ID_AA64PFR0_EL1_op1 0 11420766dde9SAndrew Turner #define ID_AA64PFR0_EL1_CRn 0 11430766dde9SAndrew Turner #define ID_AA64PFR0_EL1_CRm 4 11440766dde9SAndrew Turner #define ID_AA64PFR0_EL1_op2 0 11455f0a5fefSAndrew Turner #define ID_AA64PFR0_EL0_SHIFT 0 1146f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_MASK (UL(0xf) << ID_AA64PFR0_EL0_SHIFT) 114744e446a1SAndrew Turner #define ID_AA64PFR0_EL0_VAL(x) ((x) & ID_AA64PFR0_EL0_MASK) 1148f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_64 (UL(0x1) << ID_AA64PFR0_EL0_SHIFT) 1149f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_64_32 (UL(0x2) << ID_AA64PFR0_EL0_SHIFT) 11505f0a5fefSAndrew Turner #define ID_AA64PFR0_EL1_SHIFT 4 1151f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_MASK (UL(0xf) << ID_AA64PFR0_EL1_SHIFT) 115244e446a1SAndrew Turner #define ID_AA64PFR0_EL1_VAL(x) ((x) & ID_AA64PFR0_EL1_MASK) 1153f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_64 (UL(0x1) << ID_AA64PFR0_EL1_SHIFT) 1154f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_64_32 (UL(0x2) << ID_AA64PFR0_EL1_SHIFT) 11555f0a5fefSAndrew Turner #define ID_AA64PFR0_EL2_SHIFT 8 1156f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_MASK (UL(0xf) << ID_AA64PFR0_EL2_SHIFT) 115744e446a1SAndrew Turner #define ID_AA64PFR0_EL2_VAL(x) ((x) & ID_AA64PFR0_EL2_MASK) 1158f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_NONE (UL(0x0) << ID_AA64PFR0_EL2_SHIFT) 1159f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_64 (UL(0x1) << ID_AA64PFR0_EL2_SHIFT) 1160f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_64_32 (UL(0x2) << ID_AA64PFR0_EL2_SHIFT) 11615f0a5fefSAndrew Turner #define ID_AA64PFR0_EL3_SHIFT 12 1162f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_MASK (UL(0xf) << ID_AA64PFR0_EL3_SHIFT) 116344e446a1SAndrew Turner #define ID_AA64PFR0_EL3_VAL(x) ((x) & ID_AA64PFR0_EL3_MASK) 1164f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_NONE (UL(0x0) << ID_AA64PFR0_EL3_SHIFT) 1165f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_64 (UL(0x1) << ID_AA64PFR0_EL3_SHIFT) 1166f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_64_32 (UL(0x2) << ID_AA64PFR0_EL3_SHIFT) 11675f0a5fefSAndrew Turner #define ID_AA64PFR0_FP_SHIFT 16 1168f31c5955SAndrew Turner #define ID_AA64PFR0_FP_MASK (UL(0xf) << ID_AA64PFR0_FP_SHIFT) 116944e446a1SAndrew Turner #define ID_AA64PFR0_FP_VAL(x) ((x) & ID_AA64PFR0_FP_MASK) 1170f31c5955SAndrew Turner #define ID_AA64PFR0_FP_IMPL (UL(0x0) << ID_AA64PFR0_FP_SHIFT) 1171f31c5955SAndrew Turner #define ID_AA64PFR0_FP_HP (UL(0x1) << ID_AA64PFR0_FP_SHIFT) 1172f31c5955SAndrew Turner #define ID_AA64PFR0_FP_NONE (UL(0xf) << ID_AA64PFR0_FP_SHIFT) 1173f1fbf9c3SAndrew Turner #define ID_AA64PFR0_AdvSIMD_SHIFT 20 1174f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_MASK (UL(0xf) << ID_AA64PFR0_AdvSIMD_SHIFT) 117544e446a1SAndrew Turner #define ID_AA64PFR0_AdvSIMD_VAL(x) ((x) & ID_AA64PFR0_AdvSIMD_MASK) 1176f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_IMPL (UL(0x0) << ID_AA64PFR0_AdvSIMD_SHIFT) 1177f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_HP (UL(0x1) << ID_AA64PFR0_AdvSIMD_SHIFT) 1178f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_NONE (UL(0xf) << ID_AA64PFR0_AdvSIMD_SHIFT) 11795f0a5fefSAndrew Turner #define ID_AA64PFR0_GIC_BITS 0x4 /* Number of bits in GIC field */ 11805f0a5fefSAndrew Turner #define ID_AA64PFR0_GIC_SHIFT 24 1181f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_MASK (UL(0xf) << ID_AA64PFR0_GIC_SHIFT) 118244e446a1SAndrew Turner #define ID_AA64PFR0_GIC_VAL(x) ((x) & ID_AA64PFR0_GIC_MASK) 1183f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_NONE (UL(0x0) << ID_AA64PFR0_GIC_SHIFT) 1184f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_EN (UL(0x1) << ID_AA64PFR0_GIC_SHIFT) 1185477204e7SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_4_1 (UL(0x3) << ID_AA64PFR0_GIC_SHIFT) 1186f45dc694SAndrew Turner #define ID_AA64PFR0_RAS_SHIFT 28 1187f31c5955SAndrew Turner #define ID_AA64PFR0_RAS_MASK (UL(0xf) << ID_AA64PFR0_RAS_SHIFT) 118844e446a1SAndrew Turner #define ID_AA64PFR0_RAS_VAL(x) ((x) & ID_AA64PFR0_RAS_MASK) 1189f31c5955SAndrew Turner #define ID_AA64PFR0_RAS_NONE (UL(0x0) << ID_AA64PFR0_RAS_SHIFT) 1190a7b05eb1SAndrew Turner #define ID_AA64PFR0_RAS_IMPL (UL(0x1) << ID_AA64PFR0_RAS_SHIFT) 1191a7b05eb1SAndrew Turner #define ID_AA64PFR0_RAS_8_4 (UL(0x2) << ID_AA64PFR0_RAS_SHIFT) 1192f9fc9faaSAndrew Turner #define ID_AA64PFR0_SVE_SHIFT 32 1193f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_MASK (UL(0xf) << ID_AA64PFR0_SVE_SHIFT) 119444e446a1SAndrew Turner #define ID_AA64PFR0_SVE_VAL(x) ((x) & ID_AA64PFR0_SVE_MASK) 1195f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_NONE (UL(0x0) << ID_AA64PFR0_SVE_SHIFT) 1196f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_IMPL (UL(0x1) << ID_AA64PFR0_SVE_SHIFT) 1197b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_SHIFT 36 1198b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_MASK (UL(0xf) << ID_AA64PFR0_SEL2_SHIFT) 1199b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_VAL(x) ((x) & ID_AA64PFR0_SEL2_MASK) 1200b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_NONE (UL(0x0) << ID_AA64PFR0_SEL2_SHIFT) 1201b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_IMPL (UL(0x1) << ID_AA64PFR0_SEL2_SHIFT) 1202b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_SHIFT 40 1203b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_MASK (UL(0xf) << ID_AA64PFR0_MPAM_SHIFT) 1204b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_VAL(x) ((x) & ID_AA64PFR0_MPAM_MASK) 1205b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_NONE (UL(0x0) << ID_AA64PFR0_MPAM_SHIFT) 1206b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_IMPL (UL(0x1) << ID_AA64PFR0_MPAM_SHIFT) 1207b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_SHIFT 44 1208b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_MASK (UL(0xf) << ID_AA64PFR0_AMU_SHIFT) 1209b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_VAL(x) ((x) & ID_AA64PFR0_AMU_MASK) 1210b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_NONE (UL(0x0) << ID_AA64PFR0_AMU_SHIFT) 1211b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_V1 (UL(0x1) << ID_AA64PFR0_AMU_SHIFT) 12120766dde9SAndrew Turner #define ID_AA64PFR0_AMU_V1_1 (UL(0x2) << ID_AA64PFR0_AMU_SHIFT) 1213b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_SHIFT 48 1214b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_MASK (UL(0xf) << ID_AA64PFR0_DIT_SHIFT) 1215b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_VAL(x) ((x) & ID_AA64PFR0_DIT_MASK) 1216b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_NONE (UL(0x0) << ID_AA64PFR0_DIT_SHIFT) 1217b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_PSTATE (UL(0x1) << ID_AA64PFR0_DIT_SHIFT) 12180766dde9SAndrew Turner #define ID_AA64PFR0_RME_SHIFT 52 12190766dde9SAndrew Turner #define ID_AA64PFR0_RME_MASK (UL(0xf) << ID_AA64PFR0_RME_SHIFT) 12200766dde9SAndrew Turner #define ID_AA64PFR0_RME_VAL(x) ((x) & ID_AA64PFR0_RME_MASK) 12210766dde9SAndrew Turner #define ID_AA64PFR0_RME_NONE (UL(0x0) << ID_AA64PFR0_RME_SHIFT) 12220766dde9SAndrew Turner #define ID_AA64PFR0_RME_IMPL (UL(0x1) << ID_AA64PFR0_RME_SHIFT) 1223b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_SHIFT 56 1224b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_MASK (UL(0xf) << ID_AA64PFR0_CSV2_SHIFT) 1225b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_VAL(x) ((x) & ID_AA64PFR0_CSV2_MASK) 1226b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_NONE (UL(0x0) << ID_AA64PFR0_CSV2_SHIFT) 1227b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV2_SHIFT) 1228b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_SCXTNUM (UL(0x2) << ID_AA64PFR0_CSV2_SHIFT) 12290766dde9SAndrew Turner #define ID_AA64PFR0_CSV2_3 (UL(0x3) << ID_AA64PFR0_CSV2_SHIFT) 1230b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_SHIFT 60 1231b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_MASK (UL(0xf) << ID_AA64PFR0_CSV3_SHIFT) 1232b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_VAL(x) ((x) & ID_AA64PFR0_CSV3_MASK) 1233b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_NONE (UL(0x0) << ID_AA64PFR0_CSV3_SHIFT) 1234b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV3_SHIFT) 1235b6cf94aeSMark Johnston 1236b6cf94aeSMark Johnston /* ID_AA64PFR1_EL1 */ 123710f6680fSAndrew Turner #define ID_AA64PFR1_EL1 MRS_REG(ID_AA64PFR1_EL1) 12388c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_op0 3 12398c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_op1 0 12408c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_CRn 0 12418c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_CRm 4 12428c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_op2 1 1243b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_SHIFT 0 1244b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_MASK (UL(0xf) << ID_AA64PFR1_BT_SHIFT) 1245b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_VAL(x) ((x) & ID_AA64PFR1_BT_MASK) 1246b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_NONE (UL(0x0) << ID_AA64PFR1_BT_SHIFT) 1247b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_IMPL (UL(0x1) << ID_AA64PFR1_BT_SHIFT) 1248b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_SHIFT 4 1249b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_MASK (UL(0xf) << ID_AA64PFR1_SSBS_SHIFT) 1250b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_VAL(x) ((x) & ID_AA64PFR1_SSBS_MASK) 1251b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_NONE (UL(0x0) << ID_AA64PFR1_SSBS_SHIFT) 1252b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_PSTATE (UL(0x1) << ID_AA64PFR1_SSBS_SHIFT) 1253b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_PSTATE_MSR (UL(0x2) << ID_AA64PFR1_SSBS_SHIFT) 1254b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_SHIFT 8 1255b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_MASK (UL(0xf) << ID_AA64PFR1_MTE_SHIFT) 1256b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_VAL(x) ((x) & ID_AA64PFR1_MTE_MASK) 1257b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_NONE (UL(0x0) << ID_AA64PFR1_MTE_SHIFT) 12588c111e5bSAndrew Turner #define ID_AA64PFR1_MTE_MTE (UL(0x1) << ID_AA64PFR1_MTE_SHIFT) 12598c111e5bSAndrew Turner #define ID_AA64PFR1_MTE_MTE2 (UL(0x2) << ID_AA64PFR1_MTE_SHIFT) 12608c111e5bSAndrew Turner #define ID_AA64PFR1_MTE_MTE3 (UL(0x3) << ID_AA64PFR1_MTE_SHIFT) 1261b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_SHIFT 12 1262b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_MASK (UL(0xf) << ID_AA64PFR1_RAS_frac_SHIFT) 1263b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_VAL(x) ((x) & ID_AA64PFR1_RAS_frac_MASK) 12648c111e5bSAndrew Turner #define ID_AA64PFR1_RAS_frac_p0 (UL(0x0) << ID_AA64PFR1_RAS_frac_SHIFT) 12658c111e5bSAndrew Turner #define ID_AA64PFR1_RAS_frac_p1 (UL(0x1) << ID_AA64PFR1_RAS_frac_SHIFT) 12668c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_SHIFT 16 12678c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_MASK (UL(0xf) << ID_AA64PFR1_MPAM_frac_SHIFT) 12688c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_VAL(x) ((x) & ID_AA64PFR1_MPAM_frac_MASK) 12698c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_p0 (UL(0x0) << ID_AA64PFR1_MPAM_frac_SHIFT) 12708c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_p1 (UL(0x1) << ID_AA64PFR1_MPAM_frac_SHIFT) 12718c111e5bSAndrew Turner #define ID_AA64PFR1_SME_SHIFT 24 12728c111e5bSAndrew Turner #define ID_AA64PFR1_SME_MASK (UL(0xf) << ID_AA64PFR1_SME_SHIFT) 12738c111e5bSAndrew Turner #define ID_AA64PFR1_SME_VAL(x) ((x) & ID_AA64PFR1_SME_MASK) 12748c111e5bSAndrew Turner #define ID_AA64PFR1_SME_NONE (UL(0x0) << ID_AA64PFR1_SME_SHIFT) 12758c111e5bSAndrew Turner #define ID_AA64PFR1_SME_SME (UL(0x1) << ID_AA64PFR1_SME_SHIFT) 12768c111e5bSAndrew Turner #define ID_AA64PFR1_SME_SME2 (UL(0x2) << ID_AA64PFR1_SME_SHIFT) 12778c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_SHIFT 28 12788c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_MASK (UL(0xf) << ID_AA64PFR1_RNDR_trap_SHIFT) 12798c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_VAL(x) ((x) & ID_AA64PFR1_RNDR_trap_MASK) 12808c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_NONE (UL(0x0) << ID_AA64PFR1_RNDR_trap_SHIFT) 12818c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_IMPL (UL(0x1) << ID_AA64PFR1_RNDR_trap_SHIFT) 12828c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_SHIFT 32 12838c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_MASK (UL(0xf) << ID_AA64PFR1_CSV2_frac_SHIFT) 12848c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_VAL(x) ((x) & ID_AA64PFR1_CSV2_frac_MASK) 12858c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_p0 (UL(0x0) << ID_AA64PFR1_CSV2_frac_SHIFT) 12868c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_p1 (UL(0x1) << ID_AA64PFR1_CSV2_frac_SHIFT) 12878c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_p2 (UL(0x2) << ID_AA64PFR1_CSV2_frac_SHIFT) 12888c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_SHIFT 36 12898c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_MASK (UL(0xf) << ID_AA64PFR1_NMI_SHIFT) 12908c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_VAL(x) ((x) & ID_AA64PFR1_NMI_MASK) 12918c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_NONE (UL(0x0) << ID_AA64PFR1_NMI_SHIFT) 12928c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_IMPL (UL(0x1) << ID_AA64PFR1_NMI_SHIFT) 1293e5acd89cSAndrew Turner 129453e1af5aSAndrew Turner /* ID_AA64PFR2_EL1 */ 129553e1af5aSAndrew Turner #define ID_AA64PFR2_EL1 MRS_REG(ID_AA64PFR2_EL1) 129653e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_op0 3 129753e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_op1 0 129853e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_CRn 0 129953e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_CRm 4 130053e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_op2 2 130153e1af5aSAndrew Turner 1302cb91f112SAndrew Turner /* ID_AA64ZFR0_EL1 */ 1303cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1 MRS_REG(ID_AA64ZFR0_EL1) 1304cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64ZFR0_EL1) 1305cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op0 3 1306cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op1 0 1307cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_CRn 0 1308cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_CRm 4 1309cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op2 4 1310cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SHIFT 0 1311cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_MASK (UL(0xf) << ID_AA64ZFR0_SVEver_SHIFT) 1312cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_VAL(x) ((x) & ID_AA64ZFR0_SVEver_MASK 1313cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE1 (UL(0x0) << ID_AA64ZFR0_SVEver_SHIFT) 1314cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE2 (UL(0x1) << ID_AA64ZFR0_SVEver_SHIFT) 1315cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_SHIFT 4 1316cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_MASK (UL(0xf) << ID_AA64ZFR0_AES_SHIFT) 1317cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_VAL(x) ((x) & ID_AA64ZFR0_AES_MASK 1318cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_NONE (UL(0x0) << ID_AA64ZFR0_AES_SHIFT) 1319cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_BASE (UL(0x1) << ID_AA64ZFR0_AES_SHIFT) 1320cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_PMULL (UL(0x2) << ID_AA64ZFR0_AES_SHIFT) 1321cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_SHIFT 16 1322cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_MASK (UL(0xf) << ID_AA64ZFR0_BitPerm_SHIFT) 1323cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_VAL(x) ((x) & ID_AA64ZFR0_BitPerm_MASK 1324cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_NONE (UL(0x0) << ID_AA64ZFR0_BitPerm_SHIFT) 1325cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_IMPL (UL(0x1) << ID_AA64ZFR0_BitPerm_SHIFT) 1326cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_SHIFT 20 1327cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_MASK (UL(0xf) << ID_AA64ZFR0_BF16_SHIFT) 1328cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_VAL(x) ((x) & ID_AA64ZFR0_BF16_MASK 1329cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_NONE (UL(0x0) << ID_AA64ZFR0_BF16_SHIFT) 1330cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_BASE (UL(0x1) << ID_AA64ZFR0_BF16_SHIFT) 1331cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_EBF (UL(0x1) << ID_AA64ZFR0_BF16_SHIFT) 1332cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_SHIFT 32 1333cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_MASK (UL(0xf) << ID_AA64ZFR0_SHA3_SHIFT) 1334cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_VAL(x) ((x) & ID_AA64ZFR0_SHA3_MASK 1335cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_NONE (UL(0x0) << ID_AA64ZFR0_SHA3_SHIFT) 1336cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_IMPL (UL(0x1) << ID_AA64ZFR0_SHA3_SHIFT) 1337cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_SHIFT 40 1338cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_MASK (UL(0xf) << ID_AA64ZFR0_SM4_SHIFT) 1339cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_VAL(x) ((x) & ID_AA64ZFR0_SM4_MASK 1340cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_NONE (UL(0x0) << ID_AA64ZFR0_SM4_SHIFT) 1341cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_IMPL (UL(0x1) << ID_AA64ZFR0_SM4_SHIFT) 1342cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_SHIFT 44 1343cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_MASK (UL(0xf) << ID_AA64ZFR0_I8MM_SHIFT) 1344cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_VAL(x) ((x) & ID_AA64ZFR0_I8MM_MASK 1345cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_NONE (UL(0x0) << ID_AA64ZFR0_I8MM_SHIFT) 1346cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_IMPL (UL(0x1) << ID_AA64ZFR0_I8MM_SHIFT) 1347cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_SHIFT 52 1348cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_MASK (UL(0xf) << ID_AA64ZFR0_F32MM_SHIFT) 1349cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_VAL(x) ((x) & ID_AA64ZFR0_F32MM_MASK 1350cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_NONE (UL(0x0) << ID_AA64ZFR0_F32MM_SHIFT) 1351cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_IMPL (UL(0x1) << ID_AA64ZFR0_F32MM_SHIFT) 1352cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_SHIFT 56 1353cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_MASK (UL(0xf) << ID_AA64ZFR0_F64MM_SHIFT) 1354cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_VAL(x) ((x) & ID_AA64ZFR0_F64MM_MASK 1355cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_NONE (UL(0x0) << ID_AA64ZFR0_F64MM_SHIFT) 1356cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_IMPL (UL(0x1) << ID_AA64ZFR0_F64MM_SHIFT) 1357cb91f112SAndrew Turner 1358bbe80bffSPeter Grehan /* ID_ISAR5_EL1 */ 135910f6680fSAndrew Turner #define ID_ISAR5_EL1 MRS_REG(ID_ISAR5_EL1) 136010f6680fSAndrew Turner #define ID_ISAR5_EL1_op0 0x3 136110f6680fSAndrew Turner #define ID_ISAR5_EL1_op1 0x0 136210f6680fSAndrew Turner #define ID_ISAR5_EL1_CRn 0x0 136310f6680fSAndrew Turner #define ID_ISAR5_EL1_CRm 0x2 136410f6680fSAndrew Turner #define ID_ISAR5_EL1_op2 0x5 1365bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_SHIFT 0 1366bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_MASK (UL(0xf) << ID_ISAR5_SEVL_SHIFT) 1367bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_VAL(x) ((x) & ID_ISAR5_SEVL_MASK) 1368bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_NOP (UL(0x0) << ID_ISAR5_SEVL_SHIFT) 1369bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_IMPL (UL(0x1) << ID_ISAR5_SEVL_SHIFT) 1370bbe80bffSPeter Grehan #define ID_ISAR5_AES_SHIFT 4 1371bbe80bffSPeter Grehan #define ID_ISAR5_AES_MASK (UL(0xf) << ID_ISAR5_AES_SHIFT) 1372bbe80bffSPeter Grehan #define ID_ISAR5_AES_VAL(x) ((x) & ID_ISAR5_AES_MASK) 1373bbe80bffSPeter Grehan #define ID_ISAR5_AES_NONE (UL(0x0) << ID_ISAR5_AES_SHIFT) 1374bbe80bffSPeter Grehan #define ID_ISAR5_AES_BASE (UL(0x1) << ID_ISAR5_AES_SHIFT) 1375bbe80bffSPeter Grehan #define ID_ISAR5_AES_VMULL (UL(0x2) << ID_ISAR5_AES_SHIFT) 1376bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_SHIFT 8 1377bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_MASK (UL(0xf) << ID_ISAR5_SHA1_SHIFT) 1378bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_VAL(x) ((x) & ID_ISAR5_SHA1_MASK) 1379bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_NONE (UL(0x0) << ID_ISAR5_SHA1_SHIFT) 1380bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_IMPL (UL(0x1) << ID_ISAR5_SHA1_SHIFT) 1381bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_SHIFT 12 1382bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_MASK (UL(0xf) << ID_ISAR5_SHA2_SHIFT) 1383bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_VAL(x) ((x) & ID_ISAR5_SHA2_MASK) 1384bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_NONE (UL(0x0) << ID_ISAR5_SHA2_SHIFT) 1385bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_IMPL (UL(0x1) << ID_ISAR5_SHA2_SHIFT) 1386bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_SHIFT 16 1387bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_MASK (UL(0xf) << ID_ISAR5_CRC32_SHIFT) 1388bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_VAL(x) ((x) & ID_ISAR5_CRC32_MASK) 1389bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_NONE (UL(0x0) << ID_ISAR5_CRC32_SHIFT) 1390bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_IMPL (UL(0x1) << ID_ISAR5_CRC32_SHIFT) 1391bbe80bffSPeter Grehan #define ID_ISAR5_RDM_SHIFT 24 1392bbe80bffSPeter Grehan #define ID_ISAR5_RDM_MASK (UL(0xf) << ID_ISAR5_RDM_SHIFT) 1393bbe80bffSPeter Grehan #define ID_ISAR5_RDM_VAL(x) ((x) & ID_ISAR5_RDM_MASK) 1394bbe80bffSPeter Grehan #define ID_ISAR5_RDM_NONE (UL(0x0) << ID_ISAR5_RDM_SHIFT) 1395bbe80bffSPeter Grehan #define ID_ISAR5_RDM_IMPL (UL(0x1) << ID_ISAR5_RDM_SHIFT) 1396bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_SHIFT 28 1397bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_MASK (UL(0xf) << ID_ISAR5_VCMA_SHIFT) 1398bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_VAL(x) ((x) & ID_ISAR5_VCMA_MASK) 1399bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_NONE (UL(0x0) << ID_ISAR5_VCMA_SHIFT) 1400bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_IMPL (UL(0x1) << ID_ISAR5_VCMA_SHIFT) 1401bbe80bffSPeter Grehan 14022abeef73SAndrew Turner /* MAIR_EL1 - Memory Attribute Indirection Register */ 1403a671f96dSAndrew Turner #define MAIR_ATTR_MASK(idx) (UL(0xff) << ((n)* 8)) 14042abeef73SAndrew Turner #define MAIR_ATTR(attr, idx) ((attr) << ((idx) * 8)) 1405a671f96dSAndrew Turner #define MAIR_DEVICE_nGnRnE UL(0x00) 1406a671f96dSAndrew Turner #define MAIR_DEVICE_nGnRE UL(0x04) 1407a671f96dSAndrew Turner #define MAIR_NORMAL_NC UL(0x44) 1408a671f96dSAndrew Turner #define MAIR_NORMAL_WT UL(0xbb) 1409a671f96dSAndrew Turner #define MAIR_NORMAL_WB UL(0xff) 14102abeef73SAndrew Turner 14114dc81560SAndrew Turner /* MDCCINT_EL1 */ 14124dc81560SAndrew Turner #define MDCCINT_EL1 MRS_REG(MDCCINT_EL1) 14134dc81560SAndrew Turner #define MDCCINT_EL1_op0 2 14144dc81560SAndrew Turner #define MDCCINT_EL1_op1 0 14154dc81560SAndrew Turner #define MDCCINT_EL1_CRn 0 14164dc81560SAndrew Turner #define MDCCINT_EL1_CRm 2 14174dc81560SAndrew Turner #define MDCCINT_EL1_op2 0 14184dc81560SAndrew Turner 14194dc81560SAndrew Turner /* MDCCSR_EL0 */ 14204dc81560SAndrew Turner #define MDCCSR_EL0 MRS_REG(MDCCSR_EL0) 14214dc81560SAndrew Turner #define MDCCSR_EL0_op0 2 14224dc81560SAndrew Turner #define MDCCSR_EL0_op1 3 14234dc81560SAndrew Turner #define MDCCSR_EL0_CRn 0 14244dc81560SAndrew Turner #define MDCCSR_EL0_CRm 1 14254dc81560SAndrew Turner #define MDCCSR_EL0_op2 0 14264dc81560SAndrew Turner 14272abeef73SAndrew Turner /* MDSCR_EL1 - Monitor Debug System Control Register */ 14284dc81560SAndrew Turner #define MDSCR_EL1 MRS_REG(MDSCR_EL1) 14294dc81560SAndrew Turner #define MDSCR_EL1_op0 2 14304dc81560SAndrew Turner #define MDSCR_EL1_op1 0 14314dc81560SAndrew Turner #define MDSCR_EL1_CRn 0 14324dc81560SAndrew Turner #define MDSCR_EL1_CRm 2 14334dc81560SAndrew Turner #define MDSCR_EL1_op2 2 14342abeef73SAndrew Turner #define MDSCR_SS_SHIFT 0 14352abeef73SAndrew Turner #define MDSCR_SS (UL(0x1) << MDSCR_SS_SHIFT) 14362abeef73SAndrew Turner #define MDSCR_KDE_SHIFT 13 14372abeef73SAndrew Turner #define MDSCR_KDE (UL(0x1) << MDSCR_KDE_SHIFT) 14382abeef73SAndrew Turner #define MDSCR_MDE_SHIFT 15 14392abeef73SAndrew Turner #define MDSCR_MDE (UL(0x1) << MDSCR_MDE_SHIFT) 14402abeef73SAndrew Turner 1441178747a1SAndrew Turner /* MIDR_EL1 - Main ID Register */ 1442178747a1SAndrew Turner #define MIDR_EL1 MRS_REG(MIDR_EL1) 1443178747a1SAndrew Turner #define MIDR_EL1_op0 3 1444178747a1SAndrew Turner #define MIDR_EL1_op1 0 1445178747a1SAndrew Turner #define MIDR_EL1_CRn 0 1446178747a1SAndrew Turner #define MIDR_EL1_CRm 0 1447178747a1SAndrew Turner #define MIDR_EL1_op2 0 1448178747a1SAndrew Turner 1449419f8fc7SAndrew Turner /* MPIDR_EL1 - Multiprocessor Affinity Register */ 1450419f8fc7SAndrew Turner #define MPIDR_EL1 MRS_REG(MPIDR_EL1) 1451419f8fc7SAndrew Turner #define MPIDR_EL1_op0 3 1452419f8fc7SAndrew Turner #define MPIDR_EL1_op1 0 1453419f8fc7SAndrew Turner #define MPIDR_EL1_CRn 0 1454419f8fc7SAndrew Turner #define MPIDR_EL1_CRm 0 1455419f8fc7SAndrew Turner #define MPIDR_EL1_op2 5 1456419f8fc7SAndrew Turner #define MPIDR_AFF0_SHIFT 0 1457419f8fc7SAndrew Turner #define MPIDR_AFF0_MASK (UL(0xff) << MPIDR_AFF0_SHIFT) 1458419f8fc7SAndrew Turner #define MPIDR_AFF0_VAL(x) ((x) & MPIDR_AFF0_MASK) 1459419f8fc7SAndrew Turner #define MPIDR_AFF1_SHIFT 8 1460419f8fc7SAndrew Turner #define MPIDR_AFF1_MASK (UL(0xff) << MPIDR_AFF1_SHIFT) 1461419f8fc7SAndrew Turner #define MPIDR_AFF1_VAL(x) ((x) & MPIDR_AFF1_MASK) 1462419f8fc7SAndrew Turner #define MPIDR_AFF2_SHIFT 16 1463419f8fc7SAndrew Turner #define MPIDR_AFF2_MASK (UL(0xff) << MPIDR_AFF2_SHIFT) 1464419f8fc7SAndrew Turner #define MPIDR_AFF2_VAL(x) ((x) & MPIDR_AFF2_MASK) 1465419f8fc7SAndrew Turner #define MPIDR_MT_SHIFT 24 1466419f8fc7SAndrew Turner #define MPIDR_MT_MASK (UL(0x1) << MPIDR_MT_SHIFT) 1467419f8fc7SAndrew Turner #define MPIDR_U_SHIFT 30 1468419f8fc7SAndrew Turner #define MPIDR_U_MASK (UL(0x1) << MPIDR_U_SHIFT) 1469419f8fc7SAndrew Turner #define MPIDR_AFF3_SHIFT 32 1470419f8fc7SAndrew Turner #define MPIDR_AFF3_MASK (UL(0xff) << MPIDR_AFF3_SHIFT) 1471419f8fc7SAndrew Turner #define MPIDR_AFF3_VAL(x) ((x) & MPIDR_AFF3_MASK) 1472419f8fc7SAndrew Turner 14732abeef73SAndrew Turner /* MVFR0_EL1 */ 14742abeef73SAndrew Turner #define MVFR0_EL1 MRS_REG(MVFR0_EL1) 14752abeef73SAndrew Turner #define MVFR0_EL1_op0 0x3 14762abeef73SAndrew Turner #define MVFR0_EL1_op1 0x0 14772abeef73SAndrew Turner #define MVFR0_EL1_CRn 0x0 14782abeef73SAndrew Turner #define MVFR0_EL1_CRm 0x3 14792abeef73SAndrew Turner #define MVFR0_EL1_op2 0x0 14802abeef73SAndrew Turner #define MVFR0_SIMDReg_SHIFT 0 14812abeef73SAndrew Turner #define MVFR0_SIMDReg_MASK (UL(0xf) << MVFR0_SIMDReg_SHIFT) 14822abeef73SAndrew Turner #define MVFR0_SIMDReg_VAL(x) ((x) & MVFR0_SIMDReg_MASK) 14832abeef73SAndrew Turner #define MVFR0_SIMDReg_NONE (UL(0x0) << MVFR0_SIMDReg_SHIFT) 14842abeef73SAndrew Turner #define MVFR0_SIMDReg_FP (UL(0x1) << MVFR0_SIMDReg_SHIFT) 14852abeef73SAndrew Turner #define MVFR0_SIMDReg_AdvSIMD (UL(0x2) << MVFR0_SIMDReg_SHIFT) 14862abeef73SAndrew Turner #define MVFR0_FPSP_SHIFT 4 14872abeef73SAndrew Turner #define MVFR0_FPSP_MASK (UL(0xf) << MVFR0_FPSP_SHIFT) 14882abeef73SAndrew Turner #define MVFR0_FPSP_VAL(x) ((x) & MVFR0_FPSP_MASK) 14892abeef73SAndrew Turner #define MVFR0_FPSP_NONE (UL(0x0) << MVFR0_FPSP_SHIFT) 14902abeef73SAndrew Turner #define MVFR0_FPSP_VFP_v2 (UL(0x1) << MVFR0_FPSP_SHIFT) 14912abeef73SAndrew Turner #define MVFR0_FPSP_VFP_v3_v4 (UL(0x2) << MVFR0_FPSP_SHIFT) 14922abeef73SAndrew Turner #define MVFR0_FPDP_SHIFT 8 14932abeef73SAndrew Turner #define MVFR0_FPDP_MASK (UL(0xf) << MVFR0_FPDP_SHIFT) 14942abeef73SAndrew Turner #define MVFR0_FPDP_VAL(x) ((x) & MVFR0_FPDP_MASK) 14952abeef73SAndrew Turner #define MVFR0_FPDP_NONE (UL(0x0) << MVFR0_FPDP_SHIFT) 14962abeef73SAndrew Turner #define MVFR0_FPDP_VFP_v2 (UL(0x1) << MVFR0_FPDP_SHIFT) 14972abeef73SAndrew Turner #define MVFR0_FPDP_VFP_v3_v4 (UL(0x2) << MVFR0_FPDP_SHIFT) 14982abeef73SAndrew Turner #define MVFR0_FPTrap_SHIFT 12 14992abeef73SAndrew Turner #define MVFR0_FPTrap_MASK (UL(0xf) << MVFR0_FPTrap_SHIFT) 15002abeef73SAndrew Turner #define MVFR0_FPTrap_VAL(x) ((x) & MVFR0_FPTrap_MASK) 15012abeef73SAndrew Turner #define MVFR0_FPTrap_NONE (UL(0x0) << MVFR0_FPTrap_SHIFT) 15022abeef73SAndrew Turner #define MVFR0_FPTrap_IMPL (UL(0x1) << MVFR0_FPTrap_SHIFT) 15032abeef73SAndrew Turner #define MVFR0_FPDivide_SHIFT 16 15042abeef73SAndrew Turner #define MVFR0_FPDivide_MASK (UL(0xf) << MVFR0_FPDivide_SHIFT) 15052abeef73SAndrew Turner #define MVFR0_FPDivide_VAL(x) ((x) & MVFR0_FPDivide_MASK) 15062abeef73SAndrew Turner #define MVFR0_FPDivide_NONE (UL(0x0) << MVFR0_FPDivide_SHIFT) 15072abeef73SAndrew Turner #define MVFR0_FPDivide_IMPL (UL(0x1) << MVFR0_FPDivide_SHIFT) 15082abeef73SAndrew Turner #define MVFR0_FPSqrt_SHIFT 20 15092abeef73SAndrew Turner #define MVFR0_FPSqrt_MASK (UL(0xf) << MVFR0_FPSqrt_SHIFT) 15102abeef73SAndrew Turner #define MVFR0_FPSqrt_VAL(x) ((x) & MVFR0_FPSqrt_MASK) 15112abeef73SAndrew Turner #define MVFR0_FPSqrt_NONE (UL(0x0) << MVFR0_FPSqrt_SHIFT) 15122abeef73SAndrew Turner #define MVFR0_FPSqrt_IMPL (UL(0x1) << MVFR0_FPSqrt_SHIFT) 15132abeef73SAndrew Turner #define MVFR0_FPShVec_SHIFT 24 15142abeef73SAndrew Turner #define MVFR0_FPShVec_MASK (UL(0xf) << MVFR0_FPShVec_SHIFT) 15152abeef73SAndrew Turner #define MVFR0_FPShVec_VAL(x) ((x) & MVFR0_FPShVec_MASK) 15162abeef73SAndrew Turner #define MVFR0_FPShVec_NONE (UL(0x0) << MVFR0_FPShVec_SHIFT) 15172abeef73SAndrew Turner #define MVFR0_FPShVec_IMPL (UL(0x1) << MVFR0_FPShVec_SHIFT) 15182abeef73SAndrew Turner #define MVFR0_FPRound_SHIFT 28 15192abeef73SAndrew Turner #define MVFR0_FPRound_MASK (UL(0xf) << MVFR0_FPRound_SHIFT) 15202abeef73SAndrew Turner #define MVFR0_FPRound_VAL(x) ((x) & MVFR0_FPRound_MASK) 15212abeef73SAndrew Turner #define MVFR0_FPRound_NONE (UL(0x0) << MVFR0_FPRound_SHIFT) 15222abeef73SAndrew Turner #define MVFR0_FPRound_IMPL (UL(0x1) << MVFR0_FPRound_SHIFT) 15232abeef73SAndrew Turner 15242abeef73SAndrew Turner /* MVFR1_EL1 */ 15252abeef73SAndrew Turner #define MVFR1_EL1 MRS_REG(MVFR1_EL1) 15262abeef73SAndrew Turner #define MVFR1_EL1_op0 0x3 15272abeef73SAndrew Turner #define MVFR1_EL1_op1 0x0 15282abeef73SAndrew Turner #define MVFR1_EL1_CRn 0x0 15292abeef73SAndrew Turner #define MVFR1_EL1_CRm 0x3 15302abeef73SAndrew Turner #define MVFR1_EL1_op2 0x1 15312abeef73SAndrew Turner #define MVFR1_FPFtZ_SHIFT 0 15322abeef73SAndrew Turner #define MVFR1_FPFtZ_MASK (UL(0xf) << MVFR1_FPFtZ_SHIFT) 15332abeef73SAndrew Turner #define MVFR1_FPFtZ_VAL(x) ((x) & MVFR1_FPFtZ_MASK) 15342abeef73SAndrew Turner #define MVFR1_FPFtZ_NONE (UL(0x0) << MVFR1_FPFtZ_SHIFT) 15352abeef73SAndrew Turner #define MVFR1_FPFtZ_IMPL (UL(0x1) << MVFR1_FPFtZ_SHIFT) 15362abeef73SAndrew Turner #define MVFR1_FPDNaN_SHIFT 4 15372abeef73SAndrew Turner #define MVFR1_FPDNaN_MASK (UL(0xf) << MVFR1_FPDNaN_SHIFT) 15382abeef73SAndrew Turner #define MVFR1_FPDNaN_VAL(x) ((x) & MVFR1_FPDNaN_MASK) 15392abeef73SAndrew Turner #define MVFR1_FPDNaN_NONE (UL(0x0) << MVFR1_FPDNaN_SHIFT) 15402abeef73SAndrew Turner #define MVFR1_FPDNaN_IMPL (UL(0x1) << MVFR1_FPDNaN_SHIFT) 15412abeef73SAndrew Turner #define MVFR1_SIMDLS_SHIFT 8 15422abeef73SAndrew Turner #define MVFR1_SIMDLS_MASK (UL(0xf) << MVFR1_SIMDLS_SHIFT) 15432abeef73SAndrew Turner #define MVFR1_SIMDLS_VAL(x) ((x) & MVFR1_SIMDLS_MASK) 15442abeef73SAndrew Turner #define MVFR1_SIMDLS_NONE (UL(0x0) << MVFR1_SIMDLS_SHIFT) 15452abeef73SAndrew Turner #define MVFR1_SIMDLS_IMPL (UL(0x1) << MVFR1_SIMDLS_SHIFT) 15462abeef73SAndrew Turner #define MVFR1_SIMDInt_SHIFT 12 15472abeef73SAndrew Turner #define MVFR1_SIMDInt_MASK (UL(0xf) << MVFR1_SIMDInt_SHIFT) 15482abeef73SAndrew Turner #define MVFR1_SIMDInt_VAL(x) ((x) & MVFR1_SIMDInt_MASK) 15492abeef73SAndrew Turner #define MVFR1_SIMDInt_NONE (UL(0x0) << MVFR1_SIMDInt_SHIFT) 15502abeef73SAndrew Turner #define MVFR1_SIMDInt_IMPL (UL(0x1) << MVFR1_SIMDInt_SHIFT) 15512abeef73SAndrew Turner #define MVFR1_SIMDSP_SHIFT 16 15522abeef73SAndrew Turner #define MVFR1_SIMDSP_MASK (UL(0xf) << MVFR1_SIMDSP_SHIFT) 15532abeef73SAndrew Turner #define MVFR1_SIMDSP_VAL(x) ((x) & MVFR1_SIMDSP_MASK) 15542abeef73SAndrew Turner #define MVFR1_SIMDSP_NONE (UL(0x0) << MVFR1_SIMDSP_SHIFT) 15552abeef73SAndrew Turner #define MVFR1_SIMDSP_IMPL (UL(0x1) << MVFR1_SIMDSP_SHIFT) 15562abeef73SAndrew Turner #define MVFR1_SIMDHP_SHIFT 20 15572abeef73SAndrew Turner #define MVFR1_SIMDHP_MASK (UL(0xf) << MVFR1_SIMDHP_SHIFT) 15582abeef73SAndrew Turner #define MVFR1_SIMDHP_VAL(x) ((x) & MVFR1_SIMDHP_MASK) 15592abeef73SAndrew Turner #define MVFR1_SIMDHP_NONE (UL(0x0) << MVFR1_SIMDHP_SHIFT) 15602abeef73SAndrew Turner #define MVFR1_SIMDHP_CONV_SP (UL(0x1) << MVFR1_SIMDHP_SHIFT) 15612abeef73SAndrew Turner #define MVFR1_SIMDHP_ARITH (UL(0x2) << MVFR1_SIMDHP_SHIFT) 15622abeef73SAndrew Turner #define MVFR1_FPHP_SHIFT 24 15632abeef73SAndrew Turner #define MVFR1_FPHP_MASK (UL(0xf) << MVFR1_FPHP_SHIFT) 15642abeef73SAndrew Turner #define MVFR1_FPHP_VAL(x) ((x) & MVFR1_FPHP_MASK) 15652abeef73SAndrew Turner #define MVFR1_FPHP_NONE (UL(0x0) << MVFR1_FPHP_SHIFT) 15662abeef73SAndrew Turner #define MVFR1_FPHP_CONV_SP (UL(0x1) << MVFR1_FPHP_SHIFT) 15672abeef73SAndrew Turner #define MVFR1_FPHP_CONV_DP (UL(0x2) << MVFR1_FPHP_SHIFT) 15682abeef73SAndrew Turner #define MVFR1_FPHP_ARITH (UL(0x3) << MVFR1_FPHP_SHIFT) 15692abeef73SAndrew Turner #define MVFR1_SIMDFMAC_SHIFT 28 15702abeef73SAndrew Turner #define MVFR1_SIMDFMAC_MASK (UL(0xf) << MVFR1_SIMDFMAC_SHIFT) 15712abeef73SAndrew Turner #define MVFR1_SIMDFMAC_VAL(x) ((x) & MVFR1_SIMDFMAC_MASK) 15722abeef73SAndrew Turner #define MVFR1_SIMDFMAC_NONE (UL(0x0) << MVFR1_SIMDFMAC_SHIFT) 15732abeef73SAndrew Turner #define MVFR1_SIMDFMAC_IMPL (UL(0x1) << MVFR1_SIMDFMAC_SHIFT) 15742abeef73SAndrew Turner 15754dc81560SAndrew Turner /* OSDLR_EL1 */ 15764dc81560SAndrew Turner #define OSDLR_EL1 MRS_REG(OSDLR_EL1) 15774dc81560SAndrew Turner #define OSDLR_EL1_op0 2 15784dc81560SAndrew Turner #define OSDLR_EL1_op1 0 15794dc81560SAndrew Turner #define OSDLR_EL1_CRn 1 15804dc81560SAndrew Turner #define OSDLR_EL1_CRm 3 15814dc81560SAndrew Turner #define OSDLR_EL1_op2 4 15824dc81560SAndrew Turner 15834dc81560SAndrew Turner /* OSLAR_EL1 */ 15844dc81560SAndrew Turner #define OSLAR_EL1 MRS_REG(OSLAR_EL1) 15854dc81560SAndrew Turner #define OSLAR_EL1_op0 2 15864dc81560SAndrew Turner #define OSLAR_EL1_op1 0 15874dc81560SAndrew Turner #define OSLAR_EL1_CRn 1 15884dc81560SAndrew Turner #define OSLAR_EL1_CRm 0 15894dc81560SAndrew Turner #define OSLAR_EL1_op2 4 15904dc81560SAndrew Turner 15914dc81560SAndrew Turner /* OSLSR_EL1 */ 15924dc81560SAndrew Turner #define OSLSR_EL1 MRS_REG(OSLSR_EL1) 15934dc81560SAndrew Turner #define OSLSR_EL1_op0 2 15944dc81560SAndrew Turner #define OSLSR_EL1_op1 0 15954dc81560SAndrew Turner #define OSLSR_EL1_CRn 1 15964dc81560SAndrew Turner #define OSLSR_EL1_CRm 1 15974dc81560SAndrew Turner #define OSLSR_EL1_op2 4 15984dc81560SAndrew Turner 15992abeef73SAndrew Turner /* PAR_EL1 - Physical Address Register */ 16002abeef73SAndrew Turner #define PAR_F_SHIFT 0 16012abeef73SAndrew Turner #define PAR_F (0x1 << PAR_F_SHIFT) 16022abeef73SAndrew Turner #define PAR_SUCCESS(x) (((x) & PAR_F) == 0) 16032abeef73SAndrew Turner /* When PAR_F == 0 (success) */ 16042abeef73SAndrew Turner #define PAR_LOW_MASK 0xfff 16052abeef73SAndrew Turner #define PAR_SH_SHIFT 7 16062abeef73SAndrew Turner #define PAR_SH_MASK (0x3 << PAR_SH_SHIFT) 16072abeef73SAndrew Turner #define PAR_NS_SHIFT 9 16082abeef73SAndrew Turner #define PAR_NS_MASK (0x3 << PAR_NS_SHIFT) 16092abeef73SAndrew Turner #define PAR_PA_SHIFT 12 16102abeef73SAndrew Turner #define PAR_PA_MASK 0x0000fffffffff000 16112abeef73SAndrew Turner #define PAR_ATTR_SHIFT 56 16122abeef73SAndrew Turner #define PAR_ATTR_MASK (0xff << PAR_ATTR_SHIFT) 16132abeef73SAndrew Turner /* When PAR_F == 1 (aborted) */ 16142abeef73SAndrew Turner #define PAR_FST_SHIFT 1 16152abeef73SAndrew Turner #define PAR_FST_MASK (0x3f << PAR_FST_SHIFT) 16162abeef73SAndrew Turner #define PAR_PTW_SHIFT 8 16172abeef73SAndrew Turner #define PAR_PTW_MASK (0x1 << PAR_PTW_SHIFT) 16182abeef73SAndrew Turner #define PAR_S_SHIFT 9 16192abeef73SAndrew Turner #define PAR_S_MASK (0x1 << PAR_S_SHIFT) 16202abeef73SAndrew Turner 16212ad19997SAndrew Turner /* PMBIDR_EL1 */ 16222ad19997SAndrew Turner #define PMBIDR_EL1 MRS_REG(PMBIDR_EL1) 16232ad19997SAndrew Turner #define PMBIDR_EL1_op0 0x3 16242ad19997SAndrew Turner #define PMBIDR_EL1_op1 0x0 16252ad19997SAndrew Turner #define PMBIDR_EL1_CRn 0x9 16262ad19997SAndrew Turner #define PMBIDR_EL1_CRm 0xa 16272ad19997SAndrew Turner #define PMBIDR_EL1_op2 0x7 16282ad19997SAndrew Turner #define PMBIDR_Align_SHIFT 0 16292ad19997SAndrew Turner #define PMBIDR_Align_MASK (UL(0xf) << PMBIDR_Align_SHIFT) 16302ad19997SAndrew Turner #define PMBIDR_P_SHIFT 4 16312ad19997SAndrew Turner #define PMBIDR_P (UL(0x1) << PMBIDR_P_SHIFT) 16322ad19997SAndrew Turner #define PMBIDR_F_SHIFT 5 16332ad19997SAndrew Turner #define PMBIDR_F (UL(0x1) << PMBIDR_F_SHIFT) 16342ad19997SAndrew Turner 16352ad19997SAndrew Turner /* PMBLIMITR_EL1 */ 16362ad19997SAndrew Turner #define PMBLIMITR_EL1 MRS_REG(PMBLIMITR_EL1) 16372ad19997SAndrew Turner #define PMBLIMITR_EL1_op0 0x3 16382ad19997SAndrew Turner #define PMBLIMITR_EL1_op1 0x0 16392ad19997SAndrew Turner #define PMBLIMITR_EL1_CRn 0x9 16402ad19997SAndrew Turner #define PMBLIMITR_EL1_CRm 0xa 16412ad19997SAndrew Turner #define PMBLIMITR_EL1_op2 0x0 16422ad19997SAndrew Turner #define PMBLIMITR_E_SHIFT 0 16432ad19997SAndrew Turner #define PMBLIMITR_E (UL(0x1) << PMBLIMITR_E_SHIFT) 16442ad19997SAndrew Turner #define PMBLIMITR_FM_SHIFT 1 16452ad19997SAndrew Turner #define PMBLIMITR_FM_MASK (UL(0x3) << PMBLIMITR_FM_SHIFT) 16462ad19997SAndrew Turner #define PMBLIMITR_PMFZ_SHIFT 5 16472ad19997SAndrew Turner #define PMBLIMITR_PMFZ (UL(0x1) << PMBLIMITR_PMFZ_SHIFT) 16482ad19997SAndrew Turner #define PMBLIMITR_LIMIT_SHIFT 12 16492ad19997SAndrew Turner #define PMBLIMITR_LIMIT_MASK \ 16502ad19997SAndrew Turner (UL(0xfffffffffffff) << PMBLIMITR_LIMIT_SHIFT) 16512ad19997SAndrew Turner 16522ad19997SAndrew Turner /* PMBPTR_EL1 */ 16532ad19997SAndrew Turner #define PMBPTR_EL1 MRS_REG(PMBPTR_EL1) 16542ad19997SAndrew Turner #define PMBPTR_EL1_op0 0x3 16552ad19997SAndrew Turner #define PMBPTR_EL1_op1 0x0 16562ad19997SAndrew Turner #define PMBPTR_EL1_CRn 0x9 16572ad19997SAndrew Turner #define PMBPTR_EL1_CRm 0xa 16582ad19997SAndrew Turner #define PMBPTR_EL1_op2 0x1 16592ad19997SAndrew Turner #define PMBPTR_PTR_SHIFT 0 16602ad19997SAndrew Turner #define PMBPTR_PTR_MASK \ 16612ad19997SAndrew Turner (UL(0xffffffffffffffff) << PMBPTR_PTR_SHIFT) 16622ad19997SAndrew Turner 16632ad19997SAndrew Turner /* PMBSR_EL1 */ 16642ad19997SAndrew Turner #define PMBSR_EL1 MRS_REG(PMBSR_EL1) 16652ad19997SAndrew Turner #define PMBSR_EL1_op0 0x3 16662ad19997SAndrew Turner #define PMBSR_EL1_op1 0x0 16672ad19997SAndrew Turner #define PMBSR_EL1_CRn 0x9 16682ad19997SAndrew Turner #define PMBSR_EL1_CRm 0xa 16692ad19997SAndrew Turner #define PMBSR_EL1_op2 0x3 16702ad19997SAndrew Turner #define PMBSR_MSS_SHIFT 0 16712ad19997SAndrew Turner #define PMBSR_MSS_MASK (UL(0xffff) << PMBSR_MSS_SHIFT) 16722ad19997SAndrew Turner #define PMBSR_COLL_SHIFT 16 16732ad19997SAndrew Turner #define PMBSR_COLL (UL(0x1) << PMBSR_COLL_SHIFT) 16742ad19997SAndrew Turner #define PMBSR_S_SHIFT 17 16752ad19997SAndrew Turner #define PMBSR_S (UL(0x1) << PMBSR_S_SHIFT) 16762ad19997SAndrew Turner #define PMBSR_EA_SHIFT 18 16772ad19997SAndrew Turner #define PMBSR_EA (UL(0x1) << PMBSR_EA_SHIFT) 16782ad19997SAndrew Turner #define PMBSR_DL_SHIFT 19 16792ad19997SAndrew Turner #define PMBSR_DL (UL(0x1) << PMBSR_DL_SHIFT) 16802ad19997SAndrew Turner #define PMBSR_EC_SHIFT 26 16812ad19997SAndrew Turner #define PMBSR_EC_MASK (UL(0x3f) << PMBSR_EC_SHIFT) 16822ad19997SAndrew Turner 16834dc81560SAndrew Turner /* PMCCFILTR_EL0 */ 16844dc81560SAndrew Turner #define PMCCFILTR_EL0 MRS_REG(PMCCFILTR_EL0) 16854dc81560SAndrew Turner #define PMCCFILTR_EL0_op0 3 16864dc81560SAndrew Turner #define PMCCFILTR_EL0_op1 3 16874dc81560SAndrew Turner #define PMCCFILTR_EL0_CRn 14 16884dc81560SAndrew Turner #define PMCCFILTR_EL0_CRm 15 16894dc81560SAndrew Turner #define PMCCFILTR_EL0_op2 7 16904dc81560SAndrew Turner 16914dc81560SAndrew Turner /* PMCCNTR_EL0 */ 16924dc81560SAndrew Turner #define PMCCNTR_EL0 MRS_REG(PMCCNTR_EL0) 16934dc81560SAndrew Turner #define PMCCNTR_EL0_op0 3 16944dc81560SAndrew Turner #define PMCCNTR_EL0_op1 3 16954dc81560SAndrew Turner #define PMCCNTR_EL0_CRn 9 16964dc81560SAndrew Turner #define PMCCNTR_EL0_CRm 13 16974dc81560SAndrew Turner #define PMCCNTR_EL0_op2 0 16984dc81560SAndrew Turner 16994dc81560SAndrew Turner /* PMCEID0_EL0 */ 17004dc81560SAndrew Turner #define PMCEID0_EL0 MRS_REG(PMCEID0_EL0) 17014dc81560SAndrew Turner #define PMCEID0_EL0_op0 3 17024dc81560SAndrew Turner #define PMCEID0_EL0_op1 3 17034dc81560SAndrew Turner #define PMCEID0_EL0_CRn 9 17044dc81560SAndrew Turner #define PMCEID0_EL0_CRm 12 17054dc81560SAndrew Turner #define PMCEID0_EL0_op2 6 17064dc81560SAndrew Turner 17074dc81560SAndrew Turner /* PMCEID1_EL0 */ 17084dc81560SAndrew Turner #define PMCEID1_EL0 MRS_REG(PMCEID1_EL0) 17094dc81560SAndrew Turner #define PMCEID1_EL0_op0 3 17104dc81560SAndrew Turner #define PMCEID1_EL0_op1 3 17114dc81560SAndrew Turner #define PMCEID1_EL0_CRn 9 17124dc81560SAndrew Turner #define PMCEID1_EL0_CRm 12 17134dc81560SAndrew Turner #define PMCEID1_EL0_op2 7 17144dc81560SAndrew Turner 17154dc81560SAndrew Turner /* PMCNTENCLR_EL0 */ 17164dc81560SAndrew Turner #define PMCNTENCLR_EL0 MRS_REG(PMCNTENCLR_EL0) 17174dc81560SAndrew Turner #define PMCNTENCLR_EL0_op0 3 17184dc81560SAndrew Turner #define PMCNTENCLR_EL0_op1 3 17194dc81560SAndrew Turner #define PMCNTENCLR_EL0_CRn 9 17204dc81560SAndrew Turner #define PMCNTENCLR_EL0_CRm 12 17214dc81560SAndrew Turner #define PMCNTENCLR_EL0_op2 2 17224dc81560SAndrew Turner 17234dc81560SAndrew Turner /* PMCNTENSET_EL0 */ 17244dc81560SAndrew Turner #define PMCNTENSET_EL0 MRS_REG(PMCNTENSET_EL0) 17254dc81560SAndrew Turner #define PMCNTENSET_EL0_op0 3 17264dc81560SAndrew Turner #define PMCNTENSET_EL0_op1 3 17274dc81560SAndrew Turner #define PMCNTENSET_EL0_CRn 9 17284dc81560SAndrew Turner #define PMCNTENSET_EL0_CRm 12 17294dc81560SAndrew Turner #define PMCNTENSET_EL0_op2 1 17304dc81560SAndrew Turner 1731a1b4e4faSAndrew Turner /* PMCR_EL0 - Perfomance Monitoring Counters */ 17324dc81560SAndrew Turner #define PMCR_EL0 MRS_REG(PMCR_EL0) 17334dc81560SAndrew Turner #define PMCR_EL0_op0 3 17344dc81560SAndrew Turner #define PMCR_EL0_op1 3 17354dc81560SAndrew Turner #define PMCR_EL0_CRn 9 17364dc81560SAndrew Turner #define PMCR_EL0_CRm 12 17374dc81560SAndrew Turner #define PMCR_EL0_op2 0 1738a1b4e4faSAndrew Turner #define PMCR_E (1 << 0) /* Enable all counters */ 1739a1b4e4faSAndrew Turner #define PMCR_P (1 << 1) /* Reset all counters */ 1740a1b4e4faSAndrew Turner #define PMCR_C (1 << 2) /* Clock counter reset */ 1741a1b4e4faSAndrew Turner #define PMCR_D (1 << 3) /* CNTR counts every 64 clk cycles */ 1742a1b4e4faSAndrew Turner #define PMCR_X (1 << 4) /* Export to ext. monitoring (ETM) */ 1743a1b4e4faSAndrew Turner #define PMCR_DP (1 << 5) /* Disable CCNT if non-invasive debug*/ 1744a1b4e4faSAndrew Turner #define PMCR_LC (1 << 6) /* Long cycle count enable */ 1745a1b4e4faSAndrew Turner #define PMCR_IMP_SHIFT 24 /* Implementer code */ 1746a1b4e4faSAndrew Turner #define PMCR_IMP_MASK (0xff << PMCR_IMP_SHIFT) 1747a1b4e4faSAndrew Turner #define PMCR_IMP_ARM 0x41 1748a1b4e4faSAndrew Turner #define PMCR_IDCODE_SHIFT 16 /* Identification code */ 1749a1b4e4faSAndrew Turner #define PMCR_IDCODE_MASK (0xff << PMCR_IDCODE_SHIFT) 1750a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A57 0x01 1751a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A72 0x02 1752a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A53 0x03 1753a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A73 0x04 1754a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A35 0x0a 1755a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A76 0x0b 1756a1b4e4faSAndrew Turner #define PMCR_IDCODE_NEOVERSE_N1 0x0c 1757a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A77 0x10 1758a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A55 0x45 1759a1b4e4faSAndrew Turner #define PMCR_IDCODE_NEOVERSE_E1 0x46 1760a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A75 0x4a 1761a1b4e4faSAndrew Turner #define PMCR_N_SHIFT 11 /* Number of counters implemented */ 1762a1b4e4faSAndrew Turner #define PMCR_N_MASK (0x1f << PMCR_N_SHIFT) 1763a1b4e4faSAndrew Turner 17644dc81560SAndrew Turner /* PMEVCNTR<n>_EL0 */ 17654dc81560SAndrew Turner #define PMEVCNTR_EL0_op0 3 17664dc81560SAndrew Turner #define PMEVCNTR_EL0_op1 3 17674dc81560SAndrew Turner #define PMEVCNTR_EL0_CRn 14 17684dc81560SAndrew Turner #define PMEVCNTR_EL0_CRm 8 17694dc81560SAndrew Turner /* 17704dc81560SAndrew Turner * PMEVCNTRn_EL0_CRm[1:0] holds the upper 2 bits of 'n' 17714dc81560SAndrew Turner * PMEVCNTRn_EL0_op2 holds the lower 3 bits of 'n' 17724dc81560SAndrew Turner */ 17734dc81560SAndrew Turner 1774456d57a6SJohn Baldwin /* PMEVTYPER<n>_EL0 - Performance Monitoring Event Type */ 17754dc81560SAndrew Turner #define PMEVTYPER_EL0_op0 3 17764dc81560SAndrew Turner #define PMEVTYPER_EL0_op1 3 17774dc81560SAndrew Turner #define PMEVTYPER_EL0_CRn 14 17784dc81560SAndrew Turner #define PMEVTYPER_EL0_CRm 12 17794dc81560SAndrew Turner /* 17804dc81560SAndrew Turner * PMEVTYPERn_EL0_CRm[1:0] holds the upper 2 bits of 'n' 17814dc81560SAndrew Turner * PMEVTYPERn_EL0_op2 holds the lower 3 bits of 'n' 17824dc81560SAndrew Turner */ 1783456d57a6SJohn Baldwin #define PMEVTYPER_EVTCOUNT_MASK 0x000003ff /* ARMv8.0 */ 1784456d57a6SJohn Baldwin #define PMEVTYPER_EVTCOUNT_8_1_MASK 0x0000ffff /* ARMv8.1+ */ 1785456d57a6SJohn Baldwin #define PMEVTYPER_MT (1 << 25) /* Multithreading */ 1786456d57a6SJohn Baldwin #define PMEVTYPER_M (1 << 26) /* Secure EL3 filtering */ 1787456d57a6SJohn Baldwin #define PMEVTYPER_NSH (1 << 27) /* Non-secure hypervisor filtering */ 1788456d57a6SJohn Baldwin #define PMEVTYPER_NSU (1 << 28) /* Non-secure user filtering */ 1789456d57a6SJohn Baldwin #define PMEVTYPER_NSK (1 << 29) /* Non-secure kernel filtering */ 1790456d57a6SJohn Baldwin #define PMEVTYPER_U (1 << 30) /* User filtering */ 1791456d57a6SJohn Baldwin #define PMEVTYPER_P (1 << 31) /* Privileged filtering */ 17924dc81560SAndrew Turner 17934dc81560SAndrew Turner /* PMINTENCLR_EL1 */ 17944dc81560SAndrew Turner #define PMINTENCLR_EL1 MRS_REG(PMINTENCLR_EL1) 17954dc81560SAndrew Turner #define PMINTENCLR_EL1_op0 3 17964dc81560SAndrew Turner #define PMINTENCLR_EL1_op1 0 17974dc81560SAndrew Turner #define PMINTENCLR_EL1_CRn 9 17984dc81560SAndrew Turner #define PMINTENCLR_EL1_CRm 14 17994dc81560SAndrew Turner #define PMINTENCLR_EL1_op2 2 18004dc81560SAndrew Turner 18014dc81560SAndrew Turner /* PMINTENSET_EL1 */ 18024dc81560SAndrew Turner #define PMINTENSET_EL1 MRS_REG(PMINTENSET_EL1) 18034dc81560SAndrew Turner #define PMINTENSET_EL1_op0 3 18044dc81560SAndrew Turner #define PMINTENSET_EL1_op1 0 18054dc81560SAndrew Turner #define PMINTENSET_EL1_CRn 9 18064dc81560SAndrew Turner #define PMINTENSET_EL1_CRm 14 18074dc81560SAndrew Turner #define PMINTENSET_EL1_op2 1 18084dc81560SAndrew Turner 18094dc81560SAndrew Turner /* PMMIR_EL1 */ 18104dc81560SAndrew Turner #define PMMIR_EL1 MRS_REG(PMMIR_EL1) 18114dc81560SAndrew Turner #define PMMIR_EL1_op0 3 18124dc81560SAndrew Turner #define PMMIR_EL1_op1 0 18134dc81560SAndrew Turner #define PMMIR_EL1_CRn 9 18144dc81560SAndrew Turner #define PMMIR_EL1_CRm 14 18154dc81560SAndrew Turner #define PMMIR_EL1_op2 6 18164dc81560SAndrew Turner 18174dc81560SAndrew Turner /* PMOVSCLR_EL0 */ 18184dc81560SAndrew Turner #define PMOVSCLR_EL0 MRS_REG(PMOVSCLR_EL0) 18194dc81560SAndrew Turner #define PMOVSCLR_EL0_op0 3 18204dc81560SAndrew Turner #define PMOVSCLR_EL0_op1 3 18214dc81560SAndrew Turner #define PMOVSCLR_EL0_CRn 9 18224dc81560SAndrew Turner #define PMOVSCLR_EL0_CRm 12 18234dc81560SAndrew Turner #define PMOVSCLR_EL0_op2 3 18244dc81560SAndrew Turner 18254dc81560SAndrew Turner /* PMOVSSET_EL0 */ 18264dc81560SAndrew Turner #define PMOVSSET_EL0 MRS_REG(PMOVSSET_EL0) 18274dc81560SAndrew Turner #define PMOVSSET_EL0_op0 3 18284dc81560SAndrew Turner #define PMOVSSET_EL0_op1 3 18294dc81560SAndrew Turner #define PMOVSSET_EL0_CRn 9 18304dc81560SAndrew Turner #define PMOVSSET_EL0_CRm 14 18314dc81560SAndrew Turner #define PMOVSSET_EL0_op2 3 18324dc81560SAndrew Turner 18332ad19997SAndrew Turner /* PMSCR_EL1 */ 18342ad19997SAndrew Turner #define PMSCR_EL1 MRS_REG(PMSCR_EL1) 18352ad19997SAndrew Turner #define PMSCR_EL1_op0 0x3 18362ad19997SAndrew Turner #define PMSCR_EL1_op1 0x0 18372ad19997SAndrew Turner #define PMSCR_EL1_CRn 0x9 18382ad19997SAndrew Turner #define PMSCR_EL1_CRm 0x9 18392ad19997SAndrew Turner #define PMSCR_EL1_op2 0x0 18402ad19997SAndrew Turner #define PMSCR_E0SPE_SHIFT 0 18412ad19997SAndrew Turner #define PMSCR_E0SPE (UL(0x1) << PMSCR_E0SPE_SHIFT) 18422ad19997SAndrew Turner #define PMSCR_E1SPE_SHIFT 1 18432ad19997SAndrew Turner #define PMSCR_E1SPE (UL(0x1) << PMSCR_E1SPE_SHIFT) 18442ad19997SAndrew Turner #define PMSCR_CX_SHIFT 3 18452ad19997SAndrew Turner #define PMSCR_CX (UL(0x1) << PMSCR_CX_SHIFT) 18462ad19997SAndrew Turner #define PMSCR_PA_SHIFT 4 18472ad19997SAndrew Turner #define PMSCR_PA (UL(0x1) << PMSCR_PA_SHIFT) 18482ad19997SAndrew Turner #define PMSCR_TS_SHIFT 5 18492ad19997SAndrew Turner #define PMSCR_TS (UL(0x1) << PMSCR_TS_SHIFT) 18502ad19997SAndrew Turner #define PMSCR_PCT_SHIFT 6 18512ad19997SAndrew Turner #define PMSCR_PCT_MASK (UL(0x3) << PMSCR_PCT_SHIFT) 18522ad19997SAndrew Turner 18534dc81560SAndrew Turner /* PMSELR_EL0 */ 18544dc81560SAndrew Turner #define PMSELR_EL0 MRS_REG(PMSELR_EL0) 18554dc81560SAndrew Turner #define PMSELR_EL0_op0 3 18564dc81560SAndrew Turner #define PMSELR_EL0_op1 3 18574dc81560SAndrew Turner #define PMSELR_EL0_CRn 9 18584dc81560SAndrew Turner #define PMSELR_EL0_CRm 12 18594dc81560SAndrew Turner #define PMSELR_EL0_op2 5 18604dc81560SAndrew Turner #define PMSELR_SEL_MASK 0x1f 18614dc81560SAndrew Turner 18622ad19997SAndrew Turner /* PMSEVFR_EL1 */ 18632ad19997SAndrew Turner #define PMSEVFR_EL1 MRS_REG(PMSEVFR_EL1) 18642ad19997SAndrew Turner #define PMSEVFR_EL1_op0 0x3 18652ad19997SAndrew Turner #define PMSEVFR_EL1_op1 0x0 18662ad19997SAndrew Turner #define PMSEVFR_EL1_CRn 0x9 18672ad19997SAndrew Turner #define PMSEVFR_EL1_CRm 0x9 18682ad19997SAndrew Turner #define PMSEVFR_EL1_op2 0x5 18692ad19997SAndrew Turner 18702ad19997SAndrew Turner /* PMSFCR_EL1 */ 18712ad19997SAndrew Turner #define PMSFCR_EL1 MRS_REG(PMSFCR_EL1) 18722ad19997SAndrew Turner #define PMSFCR_EL1_op0 0x3 18732ad19997SAndrew Turner #define PMSFCR_EL1_op1 0x0 18742ad19997SAndrew Turner #define PMSFCR_EL1_CRn 0x9 18752ad19997SAndrew Turner #define PMSFCR_EL1_CRm 0x9 18762ad19997SAndrew Turner #define PMSFCR_EL1_op2 0x4 18772ad19997SAndrew Turner #define PMSFCR_FE_SHIFT 0 18782ad19997SAndrew Turner #define PMSFCR_FE (UL(0x1) << PMSFCR_FE_SHIFT) 18792ad19997SAndrew Turner #define PMSFCR_FT_SHIFT 1 18802ad19997SAndrew Turner #define PMSFCR_FT (UL(0x1) << PMSFCR_FT_SHIFT) 18812ad19997SAndrew Turner #define PMSFCR_FL_SHIFT 2 18822ad19997SAndrew Turner #define PMSFCR_FL (UL(0x1) << PMSFCR_FL_SHIFT) 18832ad19997SAndrew Turner #define PMSFCR_FnE_SHIFT 3 18842ad19997SAndrew Turner #define PMSFCR_FnE (UL(0x1) << PMSFCR_FnE_SHIFT) 18852ad19997SAndrew Turner #define PMSFCR_B_SHIFT 16 18862ad19997SAndrew Turner #define PMSFCR_B (UL(0x1) << PMSFCR_B_SHIFT) 18872ad19997SAndrew Turner #define PMSFCR_LD_SHIFT 17 18882ad19997SAndrew Turner #define PMSFCR_LD (UL(0x1) << PMSFCR_LD_SHIFT) 18892ad19997SAndrew Turner #define PMSFCR_ST_SHIFT 18 18902ad19997SAndrew Turner #define PMSFCR_ST (UL(0x1) << PMSFCR_ST_SHIFT) 18912ad19997SAndrew Turner 18922ad19997SAndrew Turner /* PMSICR_EL1 */ 18932ad19997SAndrew Turner #define PMSICR_EL1 MRS_REG(PMSICR_EL1) 18942ad19997SAndrew Turner #define PMSICR_EL1_op0 0x3 18952ad19997SAndrew Turner #define PMSICR_EL1_op1 0x0 18962ad19997SAndrew Turner #define PMSICR_EL1_CRn 0x9 18972ad19997SAndrew Turner #define PMSICR_EL1_CRm 0x9 18982ad19997SAndrew Turner #define PMSICR_EL1_op2 0x2 18992ad19997SAndrew Turner #define PMSICR_COUNT_SHIFT 0 19002ad19997SAndrew Turner #define PMSICR_COUNT_MASK (UL(0xffffffff) << PMSICR_COUNT_SHIFT) 19012ad19997SAndrew Turner #define PMSICR_ECOUNT_SHIFT 56 19022ad19997SAndrew Turner #define PMSICR_ECOUNT_MASK (UL(0xff) << PMSICR_ECOUNT_SHIFT) 19032ad19997SAndrew Turner 19042ad19997SAndrew Turner /* PMSIDR_EL1 */ 19052ad19997SAndrew Turner #define PMSIDR_EL1 MRS_REG(PMSIDR_EL1) 19062ad19997SAndrew Turner #define PMSIDR_EL1_op0 0x3 19072ad19997SAndrew Turner #define PMSIDR_EL1_op1 0x0 19082ad19997SAndrew Turner #define PMSIDR_EL1_CRn 0x9 19092ad19997SAndrew Turner #define PMSIDR_EL1_CRm 0x9 19102ad19997SAndrew Turner #define PMSIDR_EL1_op2 0x7 19112ad19997SAndrew Turner #define PMSIDR_FE_SHIFT 0 19122ad19997SAndrew Turner #define PMSIDR_FE (UL(0x1) << PMSIDR_FE_SHIFT) 19132ad19997SAndrew Turner #define PMSIDR_FT_SHIFT 1 19142ad19997SAndrew Turner #define PMSIDR_FT (UL(0x1) << PMSIDR_FT_SHIFT) 19152ad19997SAndrew Turner #define PMSIDR_FL_SHIFT 2 19162ad19997SAndrew Turner #define PMSIDR_FL (UL(0x1) << PMSIDR_FL_SHIFT) 19172ad19997SAndrew Turner #define PMSIDR_ArchInst_SHIFT 3 19182ad19997SAndrew Turner #define PMSIDR_ArchInst (UL(0x1) << PMSIDR_ArchInst_SHIFT) 19192ad19997SAndrew Turner #define PMSIDR_LDS_SHIFT 4 19202ad19997SAndrew Turner #define PMSIDR_LDS (UL(0x1) << PMSIDR_LDS_SHIFT) 19212ad19997SAndrew Turner #define PMSIDR_ERnd_SHIFT 5 19222ad19997SAndrew Turner #define PMSIDR_ERnd (UL(0x1) << PMSIDR_ERnd_SHIFT) 19232ad19997SAndrew Turner #define PMSIDR_FnE_SHIFT 6 19242ad19997SAndrew Turner #define PMSIDR_FnE (UL(0x1) << PMSIDR_FnE_SHIFT) 19252ad19997SAndrew Turner #define PMSIDR_Interval_SHIFT 8 19262ad19997SAndrew Turner #define PMSIDR_Interval_MASK (UL(0xf) << PMSIDR_Interval_SHIFT) 19272ad19997SAndrew Turner #define PMSIDR_MaxSize_SHIFT 12 19282ad19997SAndrew Turner #define PMSIDR_MaxSize_MASK (UL(0xf) << PMSIDR_MaxSize_SHIFT) 19292ad19997SAndrew Turner #define PMSIDR_CountSize_SHIFT 16 19302ad19997SAndrew Turner #define PMSIDR_CountSize_MASK (UL(0xf) << PMSIDR_CountSize_SHIFT) 19312ad19997SAndrew Turner #define PMSIDR_Format_SHIFT 20 19322ad19997SAndrew Turner #define PMSIDR_Format_MASK (UL(0xf) << PMSIDR_Format_SHIFT) 19332ad19997SAndrew Turner #define PMSIDR_PBT_SHIFT 24 19342ad19997SAndrew Turner #define PMSIDR_PBT (UL(0x1) << PMSIDR_PBT_SHIFT) 19352ad19997SAndrew Turner 19362ad19997SAndrew Turner /* PMSIRR_EL1 */ 19372ad19997SAndrew Turner #define PMSIRR_EL1 MRS_REG(PMSIRR_EL1) 19382ad19997SAndrew Turner #define PMSIRR_EL1_op0 0x3 19392ad19997SAndrew Turner #define PMSIRR_EL1_op1 0x0 19402ad19997SAndrew Turner #define PMSIRR_EL1_CRn 0x9 19412ad19997SAndrew Turner #define PMSIRR_EL1_CRm 0x9 19422ad19997SAndrew Turner #define PMSIRR_EL1_op2 0x3 19432ad19997SAndrew Turner #define PMSIRR_RND_SHIFT 0 19442ad19997SAndrew Turner #define PMSIRR_RND (UL(0x1) << PMSIRR_RND_SHIFT) 19452ad19997SAndrew Turner #define PMSIRR_INTERVAL_SHIFT 8 19462ad19997SAndrew Turner #define PMSIRR_INTERVAL_MASK (UL(0xffffff) << PMSIRR_INTERVAL_SHIFT) 19472ad19997SAndrew Turner 19482ad19997SAndrew Turner /* PMSLATFR_EL1 */ 19492ad19997SAndrew Turner #define PMSLATFR_EL1 MRS_REG(PMSLATFR_EL1) 19502ad19997SAndrew Turner #define PMSLATFR_EL1_op0 0x3 19512ad19997SAndrew Turner #define PMSLATFR_EL1_op1 0x0 19522ad19997SAndrew Turner #define PMSLATFR_EL1_CRn 0x9 19532ad19997SAndrew Turner #define PMSLATFR_EL1_CRm 0x9 19542ad19997SAndrew Turner #define PMSLATFR_EL1_op2 0x6 19552ad19997SAndrew Turner #define PMSLATFR_MINLAT_SHIFT 0 19562ad19997SAndrew Turner #define PMSLATFR_MINLAT_MASK (UL(0xfff) << PMSLATFR_MINLAT_SHIFT) 19572ad19997SAndrew Turner 19582ad19997SAndrew Turner /* PMSNEVFR_EL1 */ 19592ad19997SAndrew Turner #define PMSNEVFR_EL1 MRS_REG(PMSNEVFR_EL1) 19602ad19997SAndrew Turner #define PMSNEVFR_EL1_op0 0x3 19612ad19997SAndrew Turner #define PMSNEVFR_EL1_op1 0x0 19622ad19997SAndrew Turner #define PMSNEVFR_EL1_CRn 0x9 19632ad19997SAndrew Turner #define PMSNEVFR_EL1_CRm 0x9 19642ad19997SAndrew Turner #define PMSNEVFR_EL1_op2 0x1 19652ad19997SAndrew Turner 19664dc81560SAndrew Turner /* PMSWINC_EL0 */ 19674dc81560SAndrew Turner #define PMSWINC_EL0 MRS_REG(PMSWINC_EL0) 19684dc81560SAndrew Turner #define PMSWINC_EL0_op0 3 19694dc81560SAndrew Turner #define PMSWINC_EL0_op1 3 19704dc81560SAndrew Turner #define PMSWINC_EL0_CRn 9 19714dc81560SAndrew Turner #define PMSWINC_EL0_CRm 12 19724dc81560SAndrew Turner #define PMSWINC_EL0_op2 4 19734dc81560SAndrew Turner 19744dc81560SAndrew Turner /* PMUSERENR_EL0 */ 19754dc81560SAndrew Turner #define PMUSERENR_EL0 MRS_REG(PMUSERENR_EL0) 19764dc81560SAndrew Turner #define PMUSERENR_EL0_op0 3 19774dc81560SAndrew Turner #define PMUSERENR_EL0_op1 3 19784dc81560SAndrew Turner #define PMUSERENR_EL0_CRn 9 19794dc81560SAndrew Turner #define PMUSERENR_EL0_CRm 14 19804dc81560SAndrew Turner #define PMUSERENR_EL0_op2 0 19814dc81560SAndrew Turner 19824dc81560SAndrew Turner /* PMXEVCNTR_EL0 */ 19834dc81560SAndrew Turner #define PMXEVCNTR_EL0 MRS_REG(PMXEVCNTR_EL0) 19844dc81560SAndrew Turner #define PMXEVCNTR_EL0_op0 3 19854dc81560SAndrew Turner #define PMXEVCNTR_EL0_op1 3 19864dc81560SAndrew Turner #define PMXEVCNTR_EL0_CRn 9 19874dc81560SAndrew Turner #define PMXEVCNTR_EL0_CRm 13 19884dc81560SAndrew Turner #define PMXEVCNTR_EL0_op2 2 19894dc81560SAndrew Turner 19904dc81560SAndrew Turner /* PMXEVTYPER_EL0 */ 19914dc81560SAndrew Turner #define PMXEVTYPER_EL0 MRS_REG(PMXEVTYPER_EL0) 19924dc81560SAndrew Turner #define PMXEVTYPER_EL0_op0 3 19934dc81560SAndrew Turner #define PMXEVTYPER_EL0_op1 3 19944dc81560SAndrew Turner #define PMXEVTYPER_EL0_CRn 9 19954dc81560SAndrew Turner #define PMXEVTYPER_EL0_CRm 13 19964dc81560SAndrew Turner #define PMXEVTYPER_EL0_op2 1 19974dc81560SAndrew Turner 19989560ac4bSJessica Clarke /* RNDRRS */ 19999560ac4bSJessica Clarke #define RNDRRS MRS_REG(RNDRRS) 20009560ac4bSJessica Clarke #define RNDRRS_REG MRS_REG_ALT_NAME(RNDRRS) 20019560ac4bSJessica Clarke #define RNDRRS_op0 3 20029560ac4bSJessica Clarke #define RNDRRS_op1 3 20039560ac4bSJessica Clarke #define RNDRRS_CRn 2 20049560ac4bSJessica Clarke #define RNDRRS_CRm 4 20059560ac4bSJessica Clarke #define RNDRRS_op2 1 20069560ac4bSJessica Clarke 2007e5acd89cSAndrew Turner /* SCTLR_EL1 - System Control Register */ 2008aec085f4SAndrew Turner #define SCTLR_RES1 0x30d00800 /* Reserved ARMv8.0, write 1 */ 20095484e6d9SAndrew Turner #define SCTLR_M (UL(0x1) << 0) 20105484e6d9SAndrew Turner #define SCTLR_A (UL(0x1) << 1) 20115484e6d9SAndrew Turner #define SCTLR_C (UL(0x1) << 2) 20125484e6d9SAndrew Turner #define SCTLR_SA (UL(0x1) << 3) 20135484e6d9SAndrew Turner #define SCTLR_SA0 (UL(0x1) << 4) 20145484e6d9SAndrew Turner #define SCTLR_CP15BEN (UL(0x1) << 5) 20155484e6d9SAndrew Turner #define SCTLR_nAA (UL(0x1) << 6) 20165484e6d9SAndrew Turner #define SCTLR_ITD (UL(0x1) << 7) 20175484e6d9SAndrew Turner #define SCTLR_SED (UL(0x1) << 8) 20185484e6d9SAndrew Turner #define SCTLR_UMA (UL(0x1) << 9) 20195484e6d9SAndrew Turner #define SCTLR_EnRCTX (UL(0x1) << 10) 20205484e6d9SAndrew Turner #define SCTLR_EOS (UL(0x1) << 11) 20215484e6d9SAndrew Turner #define SCTLR_I (UL(0x1) << 12) 20225484e6d9SAndrew Turner #define SCTLR_EnDB (UL(0x1) << 13) 20235484e6d9SAndrew Turner #define SCTLR_DZE (UL(0x1) << 14) 20245484e6d9SAndrew Turner #define SCTLR_UCT (UL(0x1) << 15) 20255484e6d9SAndrew Turner #define SCTLR_nTWI (UL(0x1) << 16) 2026a9725b63SAndrew Turner /* Bit 17 is reserved */ 20275484e6d9SAndrew Turner #define SCTLR_nTWE (UL(0x1) << 18) 20285484e6d9SAndrew Turner #define SCTLR_WXN (UL(0x1) << 19) 20295484e6d9SAndrew Turner #define SCTLR_TSCXT (UL(0x1) << 20) 20305484e6d9SAndrew Turner #define SCTLR_IESB (UL(0x1) << 21) 20315484e6d9SAndrew Turner #define SCTLR_EIS (UL(0x1) << 22) 20325484e6d9SAndrew Turner #define SCTLR_SPAN (UL(0x1) << 23) 20335484e6d9SAndrew Turner #define SCTLR_E0E (UL(0x1) << 24) 20345484e6d9SAndrew Turner #define SCTLR_EE (UL(0x1) << 25) 20355484e6d9SAndrew Turner #define SCTLR_UCI (UL(0x1) << 26) 20365484e6d9SAndrew Turner #define SCTLR_EnDA (UL(0x1) << 27) 20375484e6d9SAndrew Turner #define SCTLR_nTLSMD (UL(0x1) << 28) 20385484e6d9SAndrew Turner #define SCTLR_LSMAOE (UL(0x1) << 29) 20395484e6d9SAndrew Turner #define SCTLR_EnIB (UL(0x1) << 30) 20405484e6d9SAndrew Turner #define SCTLR_EnIA (UL(0x1) << 31) 20415484e6d9SAndrew Turner /* Bits 34:32 are reserved */ 20425484e6d9SAndrew Turner #define SCTLR_BT0 (UL(0x1) << 35) 20435484e6d9SAndrew Turner #define SCTLR_BT1 (UL(0x1) << 36) 20445484e6d9SAndrew Turner #define SCTLR_ITFSB (UL(0x1) << 37) 20455484e6d9SAndrew Turner #define SCTLR_TCF0_MASK (UL(0x3) << 38) 20465484e6d9SAndrew Turner #define SCTLR_TCF_MASK (UL(0x3) << 40) 20475484e6d9SAndrew Turner #define SCTLR_ATA0 (UL(0x1) << 42) 20485484e6d9SAndrew Turner #define SCTLR_ATA (UL(0x1) << 43) 20495484e6d9SAndrew Turner #define SCTLR_DSSBS (UL(0x1) << 44) 20505484e6d9SAndrew Turner #define SCTLR_TWEDEn (UL(0x1) << 45) 20515484e6d9SAndrew Turner #define SCTLR_TWEDEL_MASK (UL(0xf) << 46) 20525484e6d9SAndrew Turner /* Bits 53:50 are reserved */ 20535484e6d9SAndrew Turner #define SCTLR_EnASR (UL(0x1) << 54) 20545484e6d9SAndrew Turner #define SCTLR_EnAS0 (UL(0x1) << 55) 20555484e6d9SAndrew Turner #define SCTLR_EnALS (UL(0x1) << 56) 20565484e6d9SAndrew Turner #define SCTLR_EPAN (UL(0x1) << 57) 2057e5acd89cSAndrew Turner 2058e5acd89cSAndrew Turner /* SPSR_EL1 */ 2059e5acd89cSAndrew Turner /* 2060e5acd89cSAndrew Turner * When the exception is taken in AArch64: 2061e5acd89cSAndrew Turner * M[3:2] is the exception level 2062e5acd89cSAndrew Turner * M[1] is unused 2063e5acd89cSAndrew Turner * M[0] is the SP select: 2064e5acd89cSAndrew Turner * 0: always SP0 2065e5acd89cSAndrew Turner * 1: current ELs SP 2066e5acd89cSAndrew Turner */ 20676a4f5fddSAndrew Turner #define PSR_M_EL0t 0x00000000UL 20686a4f5fddSAndrew Turner #define PSR_M_EL1t 0x00000004UL 20696a4f5fddSAndrew Turner #define PSR_M_EL1h 0x00000005UL 20706a4f5fddSAndrew Turner #define PSR_M_EL2t 0x00000008UL 20716a4f5fddSAndrew Turner #define PSR_M_EL2h 0x00000009UL 20726a4f5fddSAndrew Turner #define PSR_M_64 0x00000000UL 20736a4f5fddSAndrew Turner #define PSR_M_32 0x00000010UL 20746a4f5fddSAndrew Turner #define PSR_M_MASK 0x0000000fUL 2075e5acd89cSAndrew Turner 20766a4f5fddSAndrew Turner #define PSR_T 0x00000020UL 20778c9c3144SOlivier Houchard 20786a4f5fddSAndrew Turner #define PSR_AARCH32 0x00000010UL 20796a4f5fddSAndrew Turner #define PSR_F 0x00000040UL 20806a4f5fddSAndrew Turner #define PSR_I 0x00000080UL 20816a4f5fddSAndrew Turner #define PSR_A 0x00000100UL 20826a4f5fddSAndrew Turner #define PSR_D 0x00000200UL 2083739e4482SAndrew Turner #define PSR_DAIF (PSR_D | PSR_A | PSR_I | PSR_F) 208417b6ee96SAndrew Turner /* The default DAIF mask. These bits are valid in spsr_el1 and daif */ 208517b6ee96SAndrew Turner #define PSR_DAIF_DEFAULT (PSR_F) 208664963dd2SAndrew Turner #define PSR_BTYPE 0x00000c00UL 208764963dd2SAndrew Turner #define PSR_SSBS 0x00001000UL 208864963dd2SAndrew Turner #define PSR_ALLINT 0x00002000UL 20896a4f5fddSAndrew Turner #define PSR_IL 0x00100000UL 20906a4f5fddSAndrew Turner #define PSR_SS 0x00200000UL 209164963dd2SAndrew Turner #define PSR_PAN 0x00400000UL 209264963dd2SAndrew Turner #define PSR_UAO 0x00800000UL 209364963dd2SAndrew Turner #define PSR_DIT 0x01000000UL 209464963dd2SAndrew Turner #define PSR_TCO 0x02000000UL 20956a4f5fddSAndrew Turner #define PSR_V 0x10000000UL 20966a4f5fddSAndrew Turner #define PSR_C 0x20000000UL 20976a4f5fddSAndrew Turner #define PSR_Z 0x40000000UL 20986a4f5fddSAndrew Turner #define PSR_N 0x80000000UL 20996a4f5fddSAndrew Turner #define PSR_FLAGS 0xf0000000UL 210031cf95ceSAndrew Turner /* PSR fields that can be set from 32-bit and 64-bit processes */ 210131cf95ceSAndrew Turner #define PSR_SETTABLE_32 PSR_FLAGS 210231cf95ceSAndrew Turner #define PSR_SETTABLE_64 (PSR_FLAGS | PSR_SS) 2103e5acd89cSAndrew Turner 2104178747a1SAndrew Turner /* REVIDR_EL1 - Revision ID Register */ 2105178747a1SAndrew Turner #define REVIDR_EL1 MRS_REG(REVIDR_EL1) 2106178747a1SAndrew Turner #define REVIDR_EL1_op0 3 2107178747a1SAndrew Turner #define REVIDR_EL1_op1 0 2108178747a1SAndrew Turner #define REVIDR_EL1_CRn 0 2109178747a1SAndrew Turner #define REVIDR_EL1_CRm 0 2110178747a1SAndrew Turner #define REVIDR_EL1_op2 6 2111178747a1SAndrew Turner 2112e5acd89cSAndrew Turner /* TCR_EL1 - Translation Control Register */ 2113f3e9395dSAndrew Turner /* Bits 63:59 are reserved */ 2114f3e9395dSAndrew Turner #define TCR_TCMA1_SHIFT 58 2115f3e9395dSAndrew Turner #define TCR_TCMA1 (1UL << TCR_TCMA1_SHIFT) 2116f3e9395dSAndrew Turner #define TCR_TCMA0_SHIFT 57 2117f3e9395dSAndrew Turner #define TCR_TCMA0 (1UL << TCR_TCMA0_SHIFT) 2118f3e9395dSAndrew Turner #define TCR_E0PD1_SHIFT 56 2119f3e9395dSAndrew Turner #define TCR_E0PD1 (1UL << TCR_E0PD1_SHIFT) 2120f3e9395dSAndrew Turner #define TCR_E0PD0_SHIFT 55 2121f3e9395dSAndrew Turner #define TCR_E0PD0 (1UL << TCR_E0PD0_SHIFT) 2122f3e9395dSAndrew Turner #define TCR_NFD1_SHIFT 54 2123f3e9395dSAndrew Turner #define TCR_NFD1 (1UL << TCR_NFD1_SHIFT) 2124f3e9395dSAndrew Turner #define TCR_NFD0_SHIFT 53 2125f3e9395dSAndrew Turner #define TCR_NFD0 (1UL << TCR_NFD0_SHIFT) 2126f3e9395dSAndrew Turner #define TCR_TBID1_SHIFT 52 2127f3e9395dSAndrew Turner #define TCR_TBID1 (1UL << TCR_TBID1_SHIFT) 2128f3e9395dSAndrew Turner #define TCR_TBID0_SHIFT 51 2129f3e9395dSAndrew Turner #define TCR_TBID0 (1UL << TCR_TBID0_SHIFT) 2130f3e9395dSAndrew Turner #define TCR_HWU162_SHIFT 50 2131f3e9395dSAndrew Turner #define TCR_HWU162 (1UL << TCR_HWU162_SHIFT) 2132f3e9395dSAndrew Turner #define TCR_HWU161_SHIFT 49 2133f3e9395dSAndrew Turner #define TCR_HWU161 (1UL << TCR_HWU161_SHIFT) 2134f3e9395dSAndrew Turner #define TCR_HWU160_SHIFT 48 2135f3e9395dSAndrew Turner #define TCR_HWU160 (1UL << TCR_HWU160_SHIFT) 2136f3e9395dSAndrew Turner #define TCR_HWU159_SHIFT 47 2137f3e9395dSAndrew Turner #define TCR_HWU159 (1UL << TCR_HWU159_SHIFT) 2138f3e9395dSAndrew Turner #define TCR_HWU1 \ 2139f3e9395dSAndrew Turner (TCR_HWU159 | TCR_HWU160 | TCR_HWU161 | TCR_HWU162) 2140f3e9395dSAndrew Turner #define TCR_HWU062_SHIFT 46 2141f3e9395dSAndrew Turner #define TCR_HWU062 (1UL << TCR_HWU062_SHIFT) 2142f3e9395dSAndrew Turner #define TCR_HWU061_SHIFT 45 2143f3e9395dSAndrew Turner #define TCR_HWU061 (1UL << TCR_HWU061_SHIFT) 2144f3e9395dSAndrew Turner #define TCR_HWU060_SHIFT 44 2145f3e9395dSAndrew Turner #define TCR_HWU060 (1UL << TCR_HWU060_SHIFT) 2146f3e9395dSAndrew Turner #define TCR_HWU059_SHIFT 43 2147f3e9395dSAndrew Turner #define TCR_HWU059 (1UL << TCR_HWU059_SHIFT) 2148f3e9395dSAndrew Turner #define TCR_HWU0 \ 2149f3e9395dSAndrew Turner (TCR_HWU059 | TCR_HWU060 | TCR_HWU061 | TCR_HWU062) 2150f3e9395dSAndrew Turner #define TCR_HPD1_SHIFT 42 2151f3e9395dSAndrew Turner #define TCR_HPD1 (1UL << TCR_HPD1_SHIFT) 2152f3e9395dSAndrew Turner #define TCR_HPD0_SHIFT 41 2153f3e9395dSAndrew Turner #define TCR_HPD0 (1UL << TCR_HPD0_SHIFT) 2154b0a0152aSAlan Cox #define TCR_HD_SHIFT 40 2155f3e9395dSAndrew Turner #define TCR_HD (1UL << TCR_HD_SHIFT) 2156b0a0152aSAlan Cox #define TCR_HA_SHIFT 39 2157f3e9395dSAndrew Turner #define TCR_HA (1UL << TCR_HA_SHIFT) 2158f3e9395dSAndrew Turner #define TCR_TBI1_SHIFT 38 2159e46cf959SEd Maste #define TCR_TBI1 (1UL << TCR_TBI1_SHIFT) 2160f3e9395dSAndrew Turner #define TCR_TBI0_SHIFT 37 2161aea54053SAndrew Turner #define TCR_TBI0 (1UL << TCR_TBI0_SHIFT) 216265565c97SAndrew Turner #define TCR_ASID_SHIFT 36 216365565c97SAndrew Turner #define TCR_ASID_WIDTH 1 2164f3e9395dSAndrew Turner #define TCR_ASID_16 (1UL << TCR_ASID_SHIFT) 2165f3e9395dSAndrew Turner /* Bit 35 is reserved */ 2166e5acd89cSAndrew Turner #define TCR_IPS_SHIFT 32 216765565c97SAndrew Turner #define TCR_IPS_WIDTH 3 2168f3e9395dSAndrew Turner #define TCR_IPS_32BIT (0UL << TCR_IPS_SHIFT) 2169f3e9395dSAndrew Turner #define TCR_IPS_36BIT (1UL << TCR_IPS_SHIFT) 2170f3e9395dSAndrew Turner #define TCR_IPS_40BIT (2UL << TCR_IPS_SHIFT) 2171f3e9395dSAndrew Turner #define TCR_IPS_42BIT (3UL << TCR_IPS_SHIFT) 2172f3e9395dSAndrew Turner #define TCR_IPS_44BIT (4UL << TCR_IPS_SHIFT) 2173f3e9395dSAndrew Turner #define TCR_IPS_48BIT (5UL << TCR_IPS_SHIFT) 2174e5acd89cSAndrew Turner #define TCR_TG1_SHIFT 30 2175a35e4736SAndrew Turner #define TCR_TG1_MASK (3UL << TCR_TG1_SHIFT) 2176f3e9395dSAndrew Turner #define TCR_TG1_16K (1UL << TCR_TG1_SHIFT) 2177f3e9395dSAndrew Turner #define TCR_TG1_4K (2UL << TCR_TG1_SHIFT) 2178f3e9395dSAndrew Turner #define TCR_TG1_64K (3UL << TCR_TG1_SHIFT) 21791038d102SZbigniew Bodek #define TCR_SH1_SHIFT 28 2180f3e9395dSAndrew Turner #define TCR_SH1_IS (3UL << TCR_SH1_SHIFT) 21811038d102SZbigniew Bodek #define TCR_ORGN1_SHIFT 26 2182f3e9395dSAndrew Turner #define TCR_ORGN1_WBWA (1UL << TCR_ORGN1_SHIFT) 21831038d102SZbigniew Bodek #define TCR_IRGN1_SHIFT 24 2184f3e9395dSAndrew Turner #define TCR_IRGN1_WBWA (1UL << TCR_IRGN1_SHIFT) 2185f3e9395dSAndrew Turner #define TCR_EPD1_SHIFT 23 2186f3e9395dSAndrew Turner #define TCR_EPD1 (1UL << TCR_EPD1_SHIFT) 218750e3ab6bSAlan Cox #define TCR_A1_SHIFT 22 218850e3ab6bSAlan Cox #define TCR_A1 (0x1UL << TCR_A1_SHIFT) 2189f3e9395dSAndrew Turner #define TCR_T1SZ_SHIFT 16 2190a35e4736SAndrew Turner #define TCR_T1SZ_MASK (0x3fUL << TCR_T1SZ_SHIFT) 2191f3e9395dSAndrew Turner #define TCR_T1SZ(x) ((x) << TCR_T1SZ_SHIFT) 2192f3e9395dSAndrew Turner #define TCR_TG0_SHIFT 14 2193a35e4736SAndrew Turner #define TCR_TG0_MASK (3UL << TCR_TG0_SHIFT) 2194f62e099eSAndrew Turner #define TCR_TG0_4K (0UL << TCR_TG0_SHIFT) 2195f62e099eSAndrew Turner #define TCR_TG0_64K (1UL << TCR_TG0_SHIFT) 2196f62e099eSAndrew Turner #define TCR_TG0_16K (2UL << TCR_TG0_SHIFT) 21971038d102SZbigniew Bodek #define TCR_SH0_SHIFT 12 2198f3e9395dSAndrew Turner #define TCR_SH0_IS (3UL << TCR_SH0_SHIFT) 21991038d102SZbigniew Bodek #define TCR_ORGN0_SHIFT 10 2200f3e9395dSAndrew Turner #define TCR_ORGN0_WBWA (1UL << TCR_ORGN0_SHIFT) 22011038d102SZbigniew Bodek #define TCR_IRGN0_SHIFT 8 2202f3e9395dSAndrew Turner #define TCR_IRGN0_WBWA (1UL << TCR_IRGN0_SHIFT) 2203f3e9395dSAndrew Turner #define TCR_EPD0_SHIFT 7 22048f26d01fSAndrew Turner #define TCR_EPD0 (1UL << TCR_EPD0_SHIFT) 2205f3e9395dSAndrew Turner /* Bit 6 is reserved */ 2206f3e9395dSAndrew Turner #define TCR_T0SZ_SHIFT 0 2207a35e4736SAndrew Turner #define TCR_T0SZ_MASK (0x3fUL << TCR_T0SZ_SHIFT) 2208f3e9395dSAndrew Turner #define TCR_T0SZ(x) ((x) << TCR_T0SZ_SHIFT) 2209f3e9395dSAndrew Turner #define TCR_TxSZ(x) (TCR_T1SZ(x) | TCR_T0SZ(x)) 22101038d102SZbigniew Bodek 22111038d102SZbigniew Bodek #define TCR_CACHE_ATTRS ((TCR_IRGN0_WBWA | TCR_IRGN1_WBWA) |\ 22121038d102SZbigniew Bodek (TCR_ORGN0_WBWA | TCR_ORGN1_WBWA)) 22131038d102SZbigniew Bodek #ifdef SMP 22141038d102SZbigniew Bodek #define TCR_SMP_ATTRS (TCR_SH0_IS | TCR_SH1_IS) 22151038d102SZbigniew Bodek #else 22161038d102SZbigniew Bodek #define TCR_SMP_ATTRS 0 22171038d102SZbigniew Bodek #endif 22181038d102SZbigniew Bodek 22190accd726SAndrew Turner /* TTBR0_EL1 & TTBR1_EL1 - Translation Table Base Register 0 & 1 */ 22200accd726SAndrew Turner #define TTBR_ASID_SHIFT 48 22210accd726SAndrew Turner #define TTBR_ASID_MASK (0xfffful << TTBR_ASID_SHIFT) 22220accd726SAndrew Turner #define TTBR_BADDR 0x0000fffffffffffeul 22230accd726SAndrew Turner #define TTBR_CnP_SHIFT 0 22240accd726SAndrew Turner #define TTBR_CnP (1ul << TTBR_CnP_SHIFT) 22250accd726SAndrew Turner 22262f317e73SAndrew Turner /* ZCR_EL1 - SVE Control Register */ 22272f317e73SAndrew Turner #define ZCR_LEN_SHIFT 0 22282f317e73SAndrew Turner #define ZCR_LEN_MASK (0xf << ZCR_LEN_SHIFT) 22292f317e73SAndrew Turner #define ZCR_LEN_BYTES(x) ((((x) & ZCR_LEN_MASK) + 1) * 16) 22302f317e73SAndrew Turner 2231e5acd89cSAndrew Turner #endif /* !_MACHINE_ARMREG_H_ */ 2232d5d97bedSMike Karels 2233d5d97bedSMike Karels #endif /* !__arm__ */ 2234