1*6f6231dcSkettenis /* $OpenBSD: armreg.h,v 1.40 2025/01/25 12:29:35 kettenis Exp $ */ 2f24071e5Spatrick /*- 3f24071e5Spatrick * Copyright (c) 2013, 2014 Andrew Turner 4f24071e5Spatrick * Copyright (c) 2015 The FreeBSD Foundation 5f24071e5Spatrick * All rights reserved. 6f24071e5Spatrick * 7f24071e5Spatrick * This software was developed by Andrew Turner under 8f24071e5Spatrick * sponsorship from the FreeBSD Foundation. 9f24071e5Spatrick * 10f24071e5Spatrick * Redistribution and use in source and binary forms, with or without 11f24071e5Spatrick * modification, are permitted provided that the following conditions 12f24071e5Spatrick * are met: 13f24071e5Spatrick * 1. Redistributions of source code must retain the above copyright 14f24071e5Spatrick * notice, this list of conditions and the following disclaimer. 15f24071e5Spatrick * 2. Redistributions in binary form must reproduce the above copyright 16f24071e5Spatrick * notice, this list of conditions and the following disclaimer in the 17f24071e5Spatrick * documentation and/or other materials provided with the distribution. 18f24071e5Spatrick * 19f24071e5Spatrick * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 20f24071e5Spatrick * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21f24071e5Spatrick * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22f24071e5Spatrick * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 23f24071e5Spatrick * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24f24071e5Spatrick * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25f24071e5Spatrick * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26f24071e5Spatrick * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27f24071e5Spatrick * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28f24071e5Spatrick * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29f24071e5Spatrick * SUCH DAMAGE. 30f24071e5Spatrick * 31a2d40921Spatrick * $FreeBSD: head/sys/arm64/include/armreg.h 309248 2016-11-28 14:24:07Z andrew $ 32f24071e5Spatrick */ 33f24071e5Spatrick 34f24071e5Spatrick #ifndef _MACHINE_ARMREG_H_ 35f24071e5Spatrick #define _MACHINE_ARMREG_H_ 36f24071e5Spatrick 37a2d40921Spatrick #define INSN_SIZE 4 38a2d40921Spatrick 39f24071e5Spatrick #define READ_SPECIALREG(reg) \ 40f24071e5Spatrick ({ uint64_t val; \ 41dd81489dSjsg __asm volatile("mrs %0, " __STRING(reg) : "=&r" (val)); \ 42f24071e5Spatrick val; \ 43f24071e5Spatrick }) 44f24071e5Spatrick #define WRITE_SPECIALREG(reg, val) \ 45dd81489dSjsg __asm volatile("msr " __STRING(reg) ", %0" : : "r"((uint64_t)val)) 46f24071e5Spatrick 476f69320dSkettenis /* CCSIDR_EL1 - Current Cache Size ID Register */ 486f69320dSkettenis #define CCSIDR_SETS_MASK 0x0fffe000 496f69320dSkettenis #define CCSIDR_SETS_SHIFT 13 506f69320dSkettenis #define CCSIDR_SETS(reg) \ 516f69320dSkettenis ((((reg) & CCSIDR_SETS_MASK) >> CCSIDR_SETS_SHIFT) + 1) 526f69320dSkettenis #define CCSIDR_WAYS_MASK 0x00001ff8 536f69320dSkettenis #define CCSIDR_WAYS_SHIFT 3 546f69320dSkettenis #define CCSIDR_WAYS(reg) \ 556f69320dSkettenis ((((reg) & CCSIDR_WAYS_MASK) >> CCSIDR_WAYS_SHIFT) + 1) 566f69320dSkettenis #define CCSIDR_LINE_MASK 0x00000007 576f69320dSkettenis #define CCSIDR_LINE_SIZE(reg) (1 << (((reg) & CCSIDR_LINE_MASK) + 4)) 586f69320dSkettenis 59d1486c82Skettenis #define CCSIDR_CCIDX_SETS_MASK 0x00ffffff00000000ULL 60d1486c82Skettenis #define CCSIDR_CCIDX_SETS_SHIFT 32 61d1486c82Skettenis #define CCSIDR_CCIDX_SETS(reg) \ 62d1486c82Skettenis ((((reg) & CCSIDR_CCIDX_SETS_MASK) >> CCSIDR_CCIDX_SETS_SHIFT) + 1) 63d1486c82Skettenis #define CCSIDR_CCIDX_WAYS_MASK 0x0000000000fffff8ULL 64d1486c82Skettenis #define CCSIDR_CCIDX_WAYS_SHIFT 3 65d1486c82Skettenis #define CCSIDR_CCIDX_WAYS(reg) \ 66d1486c82Skettenis ((((reg) & CCSIDR_CCIDX_WAYS_MASK) >> CCSIDR_CCIDX_WAYS_SHIFT) + 1) 67d1486c82Skettenis #define CCSIDR_CCIDX_LINE_MASK 0x0000000000000007ULL 68d1486c82Skettenis #define CCSIDR_CCIDX_LINE_SIZE(reg) \ 69d1486c82Skettenis (1 << (((reg) & CCSIDR_CCIDX_LINE_MASK) + 4)) 70d1486c82Skettenis 716f69320dSkettenis /* CLIDR_EL1 - Cache Level ID Register */ 726f69320dSkettenis #define CLIDR_CTYPE_MASK 0x7 736f69320dSkettenis #define CLIDR_CTYPE_INSN 0x1 746f69320dSkettenis #define CLIDR_CTYPE_DATA 0x2 756f69320dSkettenis #define CLIDR_CTYPE_UNIFIED 0x4 766f69320dSkettenis 776f69320dSkettenis /* CNTHCTL_EL2 - Counter-timer Hypervisor Control Register */ 78a2d40921Spatrick #define CNTHCTL_EVNTI_MASK (0xf << 4) /* Bit to trigger event stream */ 79a2d40921Spatrick #define CNTHCTL_EVNTDIR (1 << 3) /* Control transition trigger bit */ 80a2d40921Spatrick #define CNTHCTL_EVNTEN (1 << 2) /* Enable event stream */ 81a2d40921Spatrick #define CNTHCTL_EL1PCEN (1 << 1) /* Allow EL0/1 physical timer access */ 82a2d40921Spatrick #define CNTHCTL_EL1PCTEN (1 << 0) /*Allow EL0/1 physical counter access*/ 83a2d40921Spatrick 84b0e77709Skettenis /* CNTKCTL_EL1 - Counter-timer Kernel Control Register */ 85b0e77709Skettenis #define CNTKCTL_EL0VCTEN (1 << 1) /* Allow EL0 virtual counter access */ 86b0e77709Skettenis 87f48e0365Skettenis /* CNTV_CTL_EL0 */ 88f48e0365Skettenis #define CNTV_CTL_ENABLE (1 << 0) 89f48e0365Skettenis #define CNTV_CTL_IMASK (1 << 1) 90f48e0365Skettenis #define CNTV_CTL_ISTATUS (1 << 2) 91f48e0365Skettenis 92f24071e5Spatrick /* CPACR_EL1 */ 93f24071e5Spatrick #define CPACR_FPEN_MASK (0x3 << 20) 94f24071e5Spatrick #define CPACR_FPEN_TRAP_ALL1 (0x0 << 20) /* Traps from EL0 and EL1 */ 95f24071e5Spatrick #define CPACR_FPEN_TRAP_EL0 (0x1 << 20) /* Traps from EL0 */ 96f24071e5Spatrick #define CPACR_FPEN_TRAP_ALL2 (0x2 << 20) /* Traps from EL0 and EL1 */ 97f24071e5Spatrick #define CPACR_FPEN_TRAP_NONE (0x3 << 20) /* No traps */ 98f24071e5Spatrick #define CPACR_TTA (0x1 << 28) 99f24071e5Spatrick 1006f69320dSkettenis /* CSSELR_EL1 - Cache Size Selection Register */ 1016f69320dSkettenis #define CSSELR_IND (1 << 0) 1026f69320dSkettenis #define CSSELR_LEVEL_SHIFT 1 1036f69320dSkettenis 104f24071e5Spatrick /* CTR_EL0 - Cache Type Register */ 105f24071e5Spatrick #define CTR_DLINE_SHIFT 16 106f24071e5Spatrick #define CTR_DLINE_MASK (0xf << CTR_DLINE_SHIFT) 107f24071e5Spatrick #define CTR_DLINE_SIZE(reg) (((reg) & CTR_DLINE_MASK) >> CTR_DLINE_SHIFT) 1086f69320dSkettenis #define CTR_IL1P_SHIFT 14 1096f69320dSkettenis #define CTR_IL1P_MASK (0x3 << CTR_IL1P_SHIFT) 1106f69320dSkettenis #define CTR_IL1P_AIVIVT (0x1 << CTR_IL1P_SHIFT) 1116f69320dSkettenis #define CTR_IL1P_VIPT (0x2 << CTR_IL1P_SHIFT) 1126f69320dSkettenis #define CTR_IL1P_PIPT (0x3 << CTR_IL1P_SHIFT) 113f24071e5Spatrick #define CTR_ILINE_SHIFT 0 114f24071e5Spatrick #define CTR_ILINE_MASK (0xf << CTR_ILINE_SHIFT) 115f24071e5Spatrick #define CTR_ILINE_SIZE(reg) (((reg) & CTR_ILINE_MASK) >> CTR_ILINE_SHIFT) 116f24071e5Spatrick 1173f173131Skettenis /* MPIDR_EL1 - Multiprocessor Affinity Register */ 1183f173131Skettenis #define MPIDR_AFF3 (0xFFULL << 32) 1193f173131Skettenis #define MPIDR_AFF2 (0xFFULL << 16) 1203f173131Skettenis #define MPIDR_AFF1 (0xFFULL << 8) 1213f173131Skettenis #define MPIDR_AFF0 (0xFFULL << 0) 1223f173131Skettenis #define MPIDR_AFF (MPIDR_AFF3|MPIDR_AFF2|MPIDR_AFF1|MPIDR_AFF0) 1233f173131Skettenis 124a2d40921Spatrick /* DCZID_EL0 - Data Cache Zero ID register */ 125a2d40921Spatrick #define DCZID_DZP (1 << 4) /* DC ZVA prohibited if non-0 */ 126a2d40921Spatrick #define DCZID_BS_SHIFT 0 127a2d40921Spatrick #define DCZID_BS_MASK (0xf << DCZID_BS_SHIFT) 128a2d40921Spatrick #define DCZID_BS_SIZE(reg) (((reg) & DCZID_BS_MASK) >> DCZID_BS_SHIFT) 129a2d40921Spatrick 130f24071e5Spatrick /* ESR_ELx */ 131f24071e5Spatrick #define ESR_ELx_ISS_MASK 0x00ffffff 132f24071e5Spatrick #define ISS_INSN_FnV (0x01 << 10) 133f24071e5Spatrick #define ISS_INSN_EA (0x01 << 9) 134f24071e5Spatrick #define ISS_INSN_S1PTW (0x01 << 7) 135f24071e5Spatrick #define ISS_INSN_IFSC_MASK (0x1f << 0) 136f24071e5Spatrick #define ISS_DATA_ISV (0x01 << 24) 137f24071e5Spatrick #define ISS_DATA_SAS_MASK (0x03 << 22) 138f24071e5Spatrick #define ISS_DATA_SSE (0x01 << 21) 139f24071e5Spatrick #define ISS_DATA_SRT_MASK (0x1f << 16) 140f24071e5Spatrick #define ISS_DATA_SF (0x01 << 15) 141f24071e5Spatrick #define ISS_DATA_AR (0x01 << 14) 142f24071e5Spatrick #define ISS_DATA_FnV (0x01 << 10) 143763137fcSdrahn #define ISS_DATA_EA (0x01 << 9) 144763137fcSdrahn #define ISS_DATA_CM (0x01 << 8) 1456914c714Sjsg #define ISS_DATA_S1PTW (0x01 << 7) 146763137fcSdrahn #define ISS_DATA_WnR (0x01 << 6) 147a2d40921Spatrick #define ISS_DATA_DFSC_MASK (0x3f << 0) 148a2d40921Spatrick #define ISS_DATA_DFSC_ASF_L0 (0x00 << 0) 149a2d40921Spatrick #define ISS_DATA_DFSC_ASF_L1 (0x01 << 0) 150a2d40921Spatrick #define ISS_DATA_DFSC_ASF_L2 (0x02 << 0) 151a2d40921Spatrick #define ISS_DATA_DFSC_ASF_L3 (0x03 << 0) 152a2d40921Spatrick #define ISS_DATA_DFSC_TF_L0 (0x04 << 0) 153a2d40921Spatrick #define ISS_DATA_DFSC_TF_L1 (0x05 << 0) 154a2d40921Spatrick #define ISS_DATA_DFSC_TF_L2 (0x06 << 0) 155a2d40921Spatrick #define ISS_DATA_DFSC_TF_L3 (0x07 << 0) 156a2d40921Spatrick #define ISS_DATA_DFSC_AFF_L1 (0x09 << 0) 157a2d40921Spatrick #define ISS_DATA_DFSC_AFF_L2 (0x0a << 0) 158a2d40921Spatrick #define ISS_DATA_DFSC_AFF_L3 (0x0b << 0) 159a2d40921Spatrick #define ISS_DATA_DFSC_PF_L1 (0x0d << 0) 160a2d40921Spatrick #define ISS_DATA_DFSC_PF_L2 (0x0e << 0) 161a2d40921Spatrick #define ISS_DATA_DFSC_PF_L3 (0x0f << 0) 162a2d40921Spatrick #define ISS_DATA_DFSC_EXT (0x10 << 0) 163a2d40921Spatrick #define ISS_DATA_DFSC_EXT_L0 (0x14 << 0) 164a2d40921Spatrick #define ISS_DATA_DFSC_EXT_L1 (0x15 << 0) 165a2d40921Spatrick #define ISS_DATA_DFSC_EXT_L2 (0x16 << 0) 166a2d40921Spatrick #define ISS_DATA_DFSC_EXT_L3 (0x17 << 0) 167a2d40921Spatrick #define ISS_DATA_DFSC_ECC (0x18 << 0) 168a2d40921Spatrick #define ISS_DATA_DFSC_ECC_L0 (0x1c << 0) 169a2d40921Spatrick #define ISS_DATA_DFSC_ECC_L1 (0x1d << 0) 170a2d40921Spatrick #define ISS_DATA_DFSC_ECC_L2 (0x1e << 0) 171a2d40921Spatrick #define ISS_DATA_DFSC_ECC_L3 (0x1f << 0) 172a2d40921Spatrick #define ISS_DATA_DFSC_ALIGN (0x21 << 0) 173a2d40921Spatrick #define ISS_DATA_DFSC_TLB_CONFLICT (0x30 << 0) 174e8331b74Skettenis #define ISS_MSR_DIR_SHIFT 0 175e8331b74Skettenis #define ISS_MSR_DIR (0x01 << ISS_MSR_DIR_SHIFT) 176e8331b74Skettenis #define ISS_MSR_Rt_SHIFT 5 177e8331b74Skettenis #define ISS_MSR_Rt_MASK (0x1f << ISS_MSR_Rt_SHIFT) 178e8331b74Skettenis #define ISS_MSR_Rt(x) (((x) & ISS_MSR_Rt_MASK) >> ISS_MSR_Rt_SHIFT) 179e8331b74Skettenis #define ISS_MSR_CRm_SHIFT 1 180e8331b74Skettenis #define ISS_MSR_CRm_MASK (0xf << ISS_MSR_CRm_SHIFT) 181e8331b74Skettenis #define ISS_MSR_CRm(x) (((x) & ISS_MSR_CRm_MASK) >> ISS_MSR_CRm_SHIFT) 182e8331b74Skettenis #define ISS_MSR_CRn_SHIFT 10 183e8331b74Skettenis #define ISS_MSR_CRn_MASK (0xf << ISS_MSR_CRn_SHIFT) 184e8331b74Skettenis #define ISS_MSR_CRn(x) (((x) & ISS_MSR_CRn_MASK) >> ISS_MSR_CRn_SHIFT) 185e8331b74Skettenis #define ISS_MSR_OP1_SHIFT 14 186e8331b74Skettenis #define ISS_MSR_OP1_MASK (0x7 << ISS_MSR_OP1_SHIFT) 187e8331b74Skettenis #define ISS_MSR_OP1(x) (((x) & ISS_MSR_OP1_MASK) >> ISS_MSR_OP1_SHIFT) 188e8331b74Skettenis #define ISS_MSR_OP2_SHIFT 17 189e8331b74Skettenis #define ISS_MSR_OP2_MASK (0x7 << ISS_MSR_OP2_SHIFT) 190e8331b74Skettenis #define ISS_MSR_OP2(x) (((x) & ISS_MSR_OP2_MASK) >> ISS_MSR_OP2_SHIFT) 191e8331b74Skettenis #define ISS_MSR_OP0_SHIFT 20 192e8331b74Skettenis #define ISS_MSR_OP0_MASK (0x3 << ISS_MSR_OP0_SHIFT) 193e8331b74Skettenis #define ISS_MSR_OP0(x) (((x) & ISS_MSR_OP0_MASK) >> ISS_MSR_OP0_SHIFT) 194f24071e5Spatrick #define ESR_ELx_IL (0x01 << 25) 195f24071e5Spatrick #define ESR_ELx_EC_SHIFT 26 196f24071e5Spatrick #define ESR_ELx_EC_MASK (0x3f << 26) 197f24071e5Spatrick #define ESR_ELx_EXCEPTION(esr) (((esr) & ESR_ELx_EC_MASK) >> ESR_ELx_EC_SHIFT) 198f24071e5Spatrick #define EXCP_UNKNOWN 0x00 /* Unkwn exception */ 199b83a19ddSkettenis #define EXCP_FP_SIMD 0x07 /* FP/SIMD trap */ 200aa60921aSkettenis #define EXCP_BRANCH_TGT 0x0d /* Branch target exception */ 201f24071e5Spatrick #define EXCP_ILL_STATE 0x0e /* Illegal execution state */ 202f24071e5Spatrick #define EXCP_SVC 0x15 /* SVC trap */ 203f24071e5Spatrick #define EXCP_MSR 0x18 /* MSR/MRS trap */ 2044171e492Skettenis #define EXCP_FPAC 0x1c /* Faulting PAC trap */ 205f24071e5Spatrick #define EXCP_INSN_ABORT_L 0x20 /* Instruction abort, from lower EL */ 206f24071e5Spatrick #define EXCP_INSN_ABORT 0x21 /* Instruction abort, from same EL */ 207f24071e5Spatrick #define EXCP_PC_ALIGN 0x22 /* PC alignment fault */ 208f24071e5Spatrick #define EXCP_DATA_ABORT_L 0x24 /* Data abort, from lower EL */ 209f24071e5Spatrick #define EXCP_DATA_ABORT 0x25 /* Data abort, from same EL */ 210be1b22fcSjsg #define EXCP_SP_ALIGN 0x26 /* SP alignment fault */ 211f24071e5Spatrick #define EXCP_TRAP_FP 0x2c /* Trapped FP exception */ 212f24071e5Spatrick #define EXCP_SERROR 0x2f /* SError interrupt */ 213a2d40921Spatrick #define EXCP_SOFTSTP_EL0 0x32 /* Software Step, from lower EL */ 214f24071e5Spatrick #define EXCP_SOFTSTP_EL1 0x33 /* Software Step, from same EL */ 215f24071e5Spatrick #define EXCP_WATCHPT_EL1 0x35 /* Watchpoint, from same EL */ 216f24071e5Spatrick #define EXCP_BRK 0x3c /* Breakpoint */ 217f24071e5Spatrick 218f24071e5Spatrick /* ICC_CTLR_EL1 */ 219f24071e5Spatrick #define ICC_CTLR_EL1_EOIMODE (1U << 1) 22011119858Spatrick #define ICC_CTLR_EL1_PRIBITS_SHIFT 8 22111119858Spatrick #define ICC_CTLR_EL1_PRIBITS_MASK (0x7UL << 8) 22211119858Spatrick #define ICC_CTLR_EL1_PRIBITS(reg) \ 22311119858Spatrick (((reg) & ICC_CTLR_EL1_PRIBITS_MASK) >> ICC_CTLR_EL1_PRIBITS_SHIFT) 224f24071e5Spatrick 225f24071e5Spatrick /* ICC_IAR1_EL1 */ 226f24071e5Spatrick #define ICC_IAR1_EL1_SPUR (0x03ff) 227f24071e5Spatrick 228f24071e5Spatrick /* ICC_IGRPEN0_EL1 */ 229f24071e5Spatrick #define ICC_IGRPEN0_EL1_EN (1U << 0) 230f24071e5Spatrick 231f24071e5Spatrick /* ICC_PMR_EL1 */ 232f24071e5Spatrick #define ICC_PMR_EL1_PRIO_MASK (0xFFUL) 233f24071e5Spatrick 234a2d40921Spatrick /* ICC_SGI1R_EL1 */ 235a2d40921Spatrick #define ICC_SGI1R_EL1_TL_MASK 0xffffUL 236a2d40921Spatrick #define ICC_SGI1R_EL1_AFF1_SHIFT 16 237a2d40921Spatrick #define ICC_SGI1R_EL1_SGIID_SHIFT 24 238a2d40921Spatrick #define ICC_SGI1R_EL1_AFF2_SHIFT 32 239a2d40921Spatrick #define ICC_SGI1R_EL1_AFF3_SHIFT 48 240a2d40921Spatrick #define ICC_SGI1R_EL1_SGIID_MASK 0xfUL 241a2d40921Spatrick #define ICC_SGI1R_EL1_IRM (0x1UL << 40) 242a2d40921Spatrick 243f24071e5Spatrick /* ICC_SRE_EL1 */ 244f24071e5Spatrick #define ICC_SRE_EL1_SRE (1U << 0) 245f24071e5Spatrick 246f24071e5Spatrick /* ICC_SRE_EL2 */ 247a2d40921Spatrick #define ICC_SRE_EL2_SRE (1U << 0) 248f24071e5Spatrick #define ICC_SRE_EL2_EN (1U << 3) 249f24071e5Spatrick 250a2d40921Spatrick /* ID_AA64DFR0_EL1 */ 251ae7d7f5cSkettenis #define ID_AA64DFR0_MASK 0x00000000f0f0ffffUL 252a2d40921Spatrick #define ID_AA64DFR0_DEBUG_VER_SHIFT 0 25309da619cSkettenis #define ID_AA64DFR0_DEBUG_VER_MASK (0xfULL << ID_AA64DFR0_DEBUG_VER_SHIFT) 254a2d40921Spatrick #define ID_AA64DFR0_DEBUG_VER(x) ((x) & ID_AA64DFR0_DEBUG_VER_MASK) 25509da619cSkettenis #define ID_AA64DFR0_DEBUG_VER_8 (0x6ULL << ID_AA64DFR0_DEBUG_VER_SHIFT) 25609da619cSkettenis #define ID_AA64DFR0_DEBUG_VER_8_VHE (0x7ULL << ID_AA64DFR0_DEBUG_VER_SHIFT) 257a2d40921Spatrick #define ID_AA64DFR0_TRACE_VER_SHIFT 4 25809da619cSkettenis #define ID_AA64DFR0_TRACE_VER_MASK (0xfULL << ID_AA64DFR0_TRACE_VER_SHIFT) 259a2d40921Spatrick #define ID_AA64DFR0_TRACE_VER(x) ((x) & ID_AA64DFR0_TRACE_VER_MASK) 26009da619cSkettenis #define ID_AA64DFR0_TRACE_VER_NONE (0x0ULL << ID_AA64DFR0_TRACE_VER_SHIFT) 26109da619cSkettenis #define ID_AA64DFR0_TRACE_VER_IMPL (0x1ULL << ID_AA64DFR0_TRACE_VER_SHIFT) 262a2d40921Spatrick #define ID_AA64DFR0_PMU_VER_SHIFT 8 26309da619cSkettenis #define ID_AA64DFR0_PMU_VER_MASK (0xfULL << ID_AA64DFR0_PMU_VER_SHIFT) 264a2d40921Spatrick #define ID_AA64DFR0_PMU_VER(x) ((x) & ID_AA64DFR0_PMU_VER_MASK) 26509da619cSkettenis #define ID_AA64DFR0_PMU_VER_NONE (0x0ULL << ID_AA64DFR0_PMU_VER_SHIFT) 26609da619cSkettenis #define ID_AA64DFR0_PMU_VER_3 (0x1ULL << ID_AA64DFR0_PMU_VER_SHIFT) 26709da619cSkettenis #define ID_AA64DFR0_PMU_VER_3_1 (0x4ULL << ID_AA64DFR0_PMU_VER_SHIFT) 26809da619cSkettenis #define ID_AA64DFR0_PMU_VER_IMPL (0xfULL << ID_AA64DFR0_PMU_VER_SHIFT) 269a2d40921Spatrick #define ID_AA64DFR0_BRPS_SHIFT 12 27009da619cSkettenis #define ID_AA64DFR0_BRPS_MASK (0xfULL << ID_AA64DFR0_BRPS_SHIFT) 271a2d40921Spatrick #define ID_AA64DFR0_BRPS(x) \ 272a2d40921Spatrick ((((x) >> ID_AA64DFR0_BRPS_SHIFT) & 0xf) + 1) 273a2d40921Spatrick #define ID_AA64DFR0_WRPS_SHIFT 20 27409da619cSkettenis #define ID_AA64DFR0_WRPS_MASK (0xfULL << ID_AA64DFR0_WRPS_SHIFT) 275a2d40921Spatrick #define ID_AA64DFR0_WRPS(x) \ 276a2d40921Spatrick ((((x) >> ID_AA64DFR0_WRPS_SHIFT) & 0xf) + 1) 277a2d40921Spatrick #define ID_AA64DFR0_CTX_CMPS_SHIFT 28 27809da619cSkettenis #define ID_AA64DFR0_CTX_CMPS_MASK (0xfULL << ID_AA64DFR0_CTX_CMPS_SHIFT) 279a2d40921Spatrick #define ID_AA64DFR0_CTX_CMPS(x) \ 280a2d40921Spatrick ((((x) >> ID_AA64DFR0_CTX_CMPS_SHIFT) & 0xf) + 1) 281a2d40921Spatrick 282a2d40921Spatrick /* ID_AA64ISAR0_EL1 */ 283e9875c8fSkettenis #define ID_AA64ISAR0_MASK 0xfffffffff0fffff0ULL 284a2d40921Spatrick #define ID_AA64ISAR0_AES_SHIFT 4 28509da619cSkettenis #define ID_AA64ISAR0_AES_MASK (0xfULL << ID_AA64ISAR0_AES_SHIFT) 286a2d40921Spatrick #define ID_AA64ISAR0_AES(x) ((x) & ID_AA64ISAR0_AES_MASK) 28709da619cSkettenis #define ID_AA64ISAR0_AES_NONE (0x0ULL << ID_AA64ISAR0_AES_SHIFT) 28809da619cSkettenis #define ID_AA64ISAR0_AES_BASE (0x1ULL << ID_AA64ISAR0_AES_SHIFT) 28909da619cSkettenis #define ID_AA64ISAR0_AES_PMULL (0x2ULL << ID_AA64ISAR0_AES_SHIFT) 290a2d40921Spatrick #define ID_AA64ISAR0_SHA1_SHIFT 8 29109da619cSkettenis #define ID_AA64ISAR0_SHA1_MASK (0xfULL << ID_AA64ISAR0_SHA1_SHIFT) 292a2d40921Spatrick #define ID_AA64ISAR0_SHA1(x) ((x) & ID_AA64ISAR0_SHA1_MASK) 29309da619cSkettenis #define ID_AA64ISAR0_SHA1_NONE (0x0ULL << ID_AA64ISAR0_SHA1_SHIFT) 29409da619cSkettenis #define ID_AA64ISAR0_SHA1_BASE (0x1ULL << ID_AA64ISAR0_SHA1_SHIFT) 295a2d40921Spatrick #define ID_AA64ISAR0_SHA2_SHIFT 12 29609da619cSkettenis #define ID_AA64ISAR0_SHA2_MASK (0xfULL << ID_AA64ISAR0_SHA2_SHIFT) 297a2d40921Spatrick #define ID_AA64ISAR0_SHA2(x) ((x) & ID_AA64ISAR0_SHA2_MASK) 29809da619cSkettenis #define ID_AA64ISAR0_SHA2_NONE (0x0ULL << ID_AA64ISAR0_SHA2_SHIFT) 29909da619cSkettenis #define ID_AA64ISAR0_SHA2_BASE (0x1ULL << ID_AA64ISAR0_SHA2_SHIFT) 30009da619cSkettenis #define ID_AA64ISAR0_SHA2_512 (0x2ULL << ID_AA64ISAR0_SHA2_SHIFT) 301a2d40921Spatrick #define ID_AA64ISAR0_CRC32_SHIFT 16 30209da619cSkettenis #define ID_AA64ISAR0_CRC32_MASK (0xfULL << ID_AA64ISAR0_CRC32_SHIFT) 303a2d40921Spatrick #define ID_AA64ISAR0_CRC32(x) ((x) & ID_AA64ISAR0_CRC32_MASK) 30409da619cSkettenis #define ID_AA64ISAR0_CRC32_NONE (0x0ULL << ID_AA64ISAR0_CRC32_SHIFT) 30509da619cSkettenis #define ID_AA64ISAR0_CRC32_BASE (0x1ULL << ID_AA64ISAR0_CRC32_SHIFT) 306a2d40921Spatrick #define ID_AA64ISAR0_ATOMIC_SHIFT 20 30709da619cSkettenis #define ID_AA64ISAR0_ATOMIC_MASK (0xfULL << ID_AA64ISAR0_ATOMIC_SHIFT) 308a2d40921Spatrick #define ID_AA64ISAR0_ATOMIC(x) ((x) & ID_AA64ISAR0_ATOMIC_MASK) 30909da619cSkettenis #define ID_AA64ISAR0_ATOMIC_NONE (0x0ULL << ID_AA64ISAR0_ATOMIC_SHIFT) 31009da619cSkettenis #define ID_AA64ISAR0_ATOMIC_IMPL (0x2ULL << ID_AA64ISAR0_ATOMIC_SHIFT) 311a2d40921Spatrick #define ID_AA64ISAR0_RDM_SHIFT 28 31209da619cSkettenis #define ID_AA64ISAR0_RDM_MASK (0xfULL << ID_AA64ISAR0_RDM_SHIFT) 313a2d40921Spatrick #define ID_AA64ISAR0_RDM(x) ((x) & ID_AA64ISAR0_RDM_MASK) 31409da619cSkettenis #define ID_AA64ISAR0_RDM_NONE (0x0ULL << ID_AA64ISAR0_RDM_SHIFT) 31509da619cSkettenis #define ID_AA64ISAR0_RDM_IMPL (0x1ULL << ID_AA64ISAR0_RDM_SHIFT) 316ae7d7f5cSkettenis #define ID_AA64ISAR0_SHA3_SHIFT 32 317ae7d7f5cSkettenis #define ID_AA64ISAR0_SHA3_MASK (0xfULL << ID_AA64ISAR0_SHA3_SHIFT) 318ae7d7f5cSkettenis #define ID_AA64ISAR0_SHA3(x) ((x) & ID_AA64ISAR0_SHA3_MASK) 319ae7d7f5cSkettenis #define ID_AA64ISAR0_SHA3_NONE (0x0ULL << ID_AA64ISAR0_SHA3_SHIFT) 320ae7d7f5cSkettenis #define ID_AA64ISAR0_SHA3_IMPL (0x1ULL << ID_AA64ISAR0_SHA3_SHIFT) 321ae7d7f5cSkettenis #define ID_AA64ISAR0_SM3_SHIFT 36 322ae7d7f5cSkettenis #define ID_AA64ISAR0_SM3_MASK (0xfULL << ID_AA64ISAR0_SM3_SHIFT) 323ae7d7f5cSkettenis #define ID_AA64ISAR0_SM3(x) ((x) & ID_AA64ISAR0_SM3_MASK) 324ae7d7f5cSkettenis #define ID_AA64ISAR0_SM3_NONE (0x0ULL << ID_AA64ISAR0_SM3_SHIFT) 325ae7d7f5cSkettenis #define ID_AA64ISAR0_SM3_IMPL (0x1ULL << ID_AA64ISAR0_SM3_SHIFT) 326ae7d7f5cSkettenis #define ID_AA64ISAR0_SM4_SHIFT 40 327ae7d7f5cSkettenis #define ID_AA64ISAR0_SM4_MASK (0xfULL << ID_AA64ISAR0_SM4_SHIFT) 328ae7d7f5cSkettenis #define ID_AA64ISAR0_SM4(x) ((x) & ID_AA64ISAR0_SM4_MASK) 329ae7d7f5cSkettenis #define ID_AA64ISAR0_SM4_NONE (0x0ULL << ID_AA64ISAR0_SM4_SHIFT) 330ae7d7f5cSkettenis #define ID_AA64ISAR0_SM4_IMPL (0x1ULL << ID_AA64ISAR0_SM4_SHIFT) 331ae7d7f5cSkettenis #define ID_AA64ISAR0_DP_SHIFT 44 332ae7d7f5cSkettenis #define ID_AA64ISAR0_DP_MASK (0xfULL << ID_AA64ISAR0_DP_SHIFT) 333ae7d7f5cSkettenis #define ID_AA64ISAR0_DP(x) ((x) & ID_AA64ISAR0_DP_MASK) 334ae7d7f5cSkettenis #define ID_AA64ISAR0_DP_NONE (0x0ULL << ID_AA64ISAR0_DP_SHIFT) 335ae7d7f5cSkettenis #define ID_AA64ISAR0_DP_IMPL (0x1ULL << ID_AA64ISAR0_DP_SHIFT) 336e9875c8fSkettenis #define ID_AA64ISAR0_FHM_SHIFT 48 337e9875c8fSkettenis #define ID_AA64ISAR0_FHM_MASK (0xfULL << ID_AA64ISAR0_FHM_SHIFT) 338e9875c8fSkettenis #define ID_AA64ISAR0_FHM(x) ((x) & ID_AA64ISAR0_FHM_MASK) 339e9875c8fSkettenis #define ID_AA64ISAR0_FHM_NONE (0x0ULL << ID_AA64ISAR0_FHM_SHIFT) 340e9875c8fSkettenis #define ID_AA64ISAR0_FHM_IMPL (0x1ULL << ID_AA64ISAR0_FHM_SHIFT) 341e9875c8fSkettenis #define ID_AA64ISAR0_TS_SHIFT 52 342e9875c8fSkettenis #define ID_AA64ISAR0_TS_MASK (0xfULL << ID_AA64ISAR0_TS_SHIFT) 343e9875c8fSkettenis #define ID_AA64ISAR0_TS(x) ((x) & ID_AA64ISAR0_TS_MASK) 344e9875c8fSkettenis #define ID_AA64ISAR0_TS_NONE (0x0ULL << ID_AA64ISAR0_TS_SHIFT) 345e9875c8fSkettenis #define ID_AA64ISAR0_TS_BASE (0x1ULL << ID_AA64ISAR0_TS_SHIFT) 346e9875c8fSkettenis #define ID_AA64ISAR0_TS_AXFLAG (0x2ULL << ID_AA64ISAR0_TS_SHIFT) 347e9875c8fSkettenis #define ID_AA64ISAR0_TLB_SHIFT 56 348e9875c8fSkettenis #define ID_AA64ISAR0_TLB_MASK (0xfULL << ID_AA64ISAR0_TLB_SHIFT) 349e9875c8fSkettenis #define ID_AA64ISAR0_TLB(x) ((x) & ID_AA64ISAR0_TLB_MASK) 350e9875c8fSkettenis #define ID_AA64ISAR0_TLB_NONE (0x0ULL << ID_AA64ISAR0_TLB_SHIFT) 351e9875c8fSkettenis #define ID_AA64ISAR0_TLB_IOS (0x1ULL << ID_AA64ISAR0_TLB_SHIFT) 352e9875c8fSkettenis #define ID_AA64ISAR0_TLB_IRANGE (0x2ULL << ID_AA64ISAR0_TLB_SHIFT) 353e9875c8fSkettenis #define ID_AA64ISAR0_RNDR_SHIFT 60 354e9875c8fSkettenis #define ID_AA64ISAR0_RNDR_MASK (0xfULL << ID_AA64ISAR0_RNDR_SHIFT) 355e9875c8fSkettenis #define ID_AA64ISAR0_RNDR(x) ((x) & ID_AA64ISAR0_RNDR_MASK) 356e9875c8fSkettenis #define ID_AA64ISAR0_RNDR_NONE (0x0ULL << ID_AA64ISAR0_RNDR_SHIFT) 357e9875c8fSkettenis #define ID_AA64ISAR0_RNDR_IMPL (0x1ULL << ID_AA64ISAR0_RNDR_SHIFT) 358ae7d7f5cSkettenis 359ae7d7f5cSkettenis /* ID_AA64ISAR1_EL1 */ 360ec556c8dSkettenis #define ID_AA64ISAR1_MASK 0xffffffffffffffffULL 361ae7d7f5cSkettenis #define ID_AA64ISAR1_DPB_SHIFT 0 36209da619cSkettenis #define ID_AA64ISAR1_DPB_MASK (0xfULL << ID_AA64ISAR1_DPB_SHIFT) 363ae7d7f5cSkettenis #define ID_AA64ISAR1_DPB(x) ((x) & ID_AA64ISAR1_DPB_MASK) 36409da619cSkettenis #define ID_AA64ISAR1_DPB_NONE (0x0ULL << ID_AA64ISAR1_DPB_SHIFT) 36509da619cSkettenis #define ID_AA64ISAR1_DPB_IMPL (0x1ULL << ID_AA64ISAR1_DPB_SHIFT) 366ab617a20Skettenis #define ID_AA64ISAR1_DPB_DCCVADP (0x2ULL << ID_AA64ISAR1_DPB_SHIFT) 367e9875c8fSkettenis #define ID_AA64ISAR1_APA_SHIFT 4 36809da619cSkettenis #define ID_AA64ISAR1_APA_MASK (0xfULL << ID_AA64ISAR1_APA_SHIFT) 369e9875c8fSkettenis #define ID_AA64ISAR1_APA(x) ((x) & ID_AA64ISAR1_APA_MASK) 37009da619cSkettenis #define ID_AA64ISAR1_APA_NONE (0x0ULL << ID_AA64ISAR1_APA_SHIFT) 371*6f6231dcSkettenis #define ID_AA64ISAR1_APA_PAC (0x1ULL << ID_AA64ISAR1_APA_SHIFT) 372*6f6231dcSkettenis #define ID_AA64ISAR1_APA_EPAC (0x2ULL << ID_AA64ISAR1_APA_SHIFT) 373*6f6231dcSkettenis #define ID_AA64ISAR1_APA_EPAC2 (0x3ULL << ID_AA64ISAR1_APA_SHIFT) 374*6f6231dcSkettenis #define ID_AA64ISAR1_APA_FPAC (0x4ULL << ID_AA64ISAR1_APA_SHIFT) 375*6f6231dcSkettenis #define ID_AA64ISAR1_APA_FPAC_COMBINED (0x5ULL << ID_AA64ISAR1_APA_SHIFT) 376e9875c8fSkettenis #define ID_AA64ISAR1_API_SHIFT 8 37709da619cSkettenis #define ID_AA64ISAR1_API_MASK (0xfULL << ID_AA64ISAR1_API_SHIFT) 378e9875c8fSkettenis #define ID_AA64ISAR1_API(x) ((x) & ID_AA64ISAR1_API_MASK) 37909da619cSkettenis #define ID_AA64ISAR1_API_NONE (0x0ULL << ID_AA64ISAR1_API_SHIFT) 380*6f6231dcSkettenis #define ID_AA64ISAR1_API_PAC (0x1ULL << ID_AA64ISAR1_API_SHIFT) 381*6f6231dcSkettenis #define ID_AA64ISAR1_API_EPAC (0x2ULL << ID_AA64ISAR1_API_SHIFT) 382*6f6231dcSkettenis #define ID_AA64ISAR1_API_EPAC2 (0x3ULL << ID_AA64ISAR1_API_SHIFT) 383*6f6231dcSkettenis #define ID_AA64ISAR1_API_FPAC (0x4ULL << ID_AA64ISAR1_API_SHIFT) 384*6f6231dcSkettenis #define ID_AA64ISAR1_API_FPAC_COMBINED (0x5ULL << ID_AA64ISAR1_API_SHIFT) 385e9875c8fSkettenis #define ID_AA64ISAR1_JSCVT_SHIFT 12 38609da619cSkettenis #define ID_AA64ISAR1_JSCVT_MASK (0xfULL << ID_AA64ISAR1_JSCVT_SHIFT) 387e9875c8fSkettenis #define ID_AA64ISAR1_JSCVT(x) ((x) & ID_AA64ISAR1_JSCVT_MASK) 38809da619cSkettenis #define ID_AA64ISAR1_JSCVT_NONE (0x0ULL << ID_AA64ISAR1_JSCVT_SHIFT) 38909da619cSkettenis #define ID_AA64ISAR1_JSCVT_IMPL (0x1ULL << ID_AA64ISAR1_JSCVT_SHIFT) 390e9875c8fSkettenis #define ID_AA64ISAR1_FCMA_SHIFT 16 39109da619cSkettenis #define ID_AA64ISAR1_FCMA_MASK (0xfULL << ID_AA64ISAR1_FCMA_SHIFT) 392e9875c8fSkettenis #define ID_AA64ISAR1_FCMA(x) ((x) & ID_AA64ISAR1_FCMA_MASK) 39309da619cSkettenis #define ID_AA64ISAR1_FCMA_NONE (0x0ULL << ID_AA64ISAR1_FCMA_SHIFT) 39409da619cSkettenis #define ID_AA64ISAR1_FCMA_IMPL (0x1ULL << ID_AA64ISAR1_FCMA_SHIFT) 395e9875c8fSkettenis #define ID_AA64ISAR1_LRCPC_SHIFT 20 39609da619cSkettenis #define ID_AA64ISAR1_LRCPC_MASK (0xfULL << ID_AA64ISAR1_LRCPC_SHIFT) 397e9875c8fSkettenis #define ID_AA64ISAR1_LRCPC(x) ((x) & ID_AA64ISAR1_LRCPC_MASK) 39809da619cSkettenis #define ID_AA64ISAR1_LRCPC_NONE (0x0ULL << ID_AA64ISAR1_LRCPC_SHIFT) 39909da619cSkettenis #define ID_AA64ISAR1_LRCPC_BASE (0x1ULL << ID_AA64ISAR1_LRCPC_SHIFT) 40009da619cSkettenis #define ID_AA64ISAR1_LRCPC_LDAPUR (0x2ULL << ID_AA64ISAR1_LRCPC_SHIFT) 401e9875c8fSkettenis #define ID_AA64ISAR1_GPA_SHIFT 24 40209da619cSkettenis #define ID_AA64ISAR1_GPA_MASK (0xfULL << ID_AA64ISAR1_GPA_SHIFT) 403e9875c8fSkettenis #define ID_AA64ISAR1_GPA(x) ((x) & ID_AA64ISAR1_GPA_MASK) 40409da619cSkettenis #define ID_AA64ISAR1_GPA_NONE (0x0ULL << ID_AA64ISAR1_GPA_SHIFT) 40509da619cSkettenis #define ID_AA64ISAR1_GPA_IMPL (0x1ULL << ID_AA64ISAR1_GPA_SHIFT) 406e9875c8fSkettenis #define ID_AA64ISAR1_GPI_SHIFT 28 40709da619cSkettenis #define ID_AA64ISAR1_GPI_MASK (0xfULL << ID_AA64ISAR1_GPI_SHIFT) 408e9875c8fSkettenis #define ID_AA64ISAR1_GPI(x) ((x) & ID_AA64ISAR1_GPI_MASK) 40909da619cSkettenis #define ID_AA64ISAR1_GPI_NONE (0x0ULL << ID_AA64ISAR1_GPI_SHIFT) 41009da619cSkettenis #define ID_AA64ISAR1_GPI_IMPL (0x1ULL << ID_AA64ISAR1_GPI_SHIFT) 411e9875c8fSkettenis #define ID_AA64ISAR1_FRINTTS_SHIFT 32 412e9875c8fSkettenis #define ID_AA64ISAR1_FRINTTS_MASK (0xfULL << ID_AA64ISAR1_FRINTTS_SHIFT) 413e9875c8fSkettenis #define ID_AA64ISAR1_FRINTTS(x) ((x) & ID_AA64ISAR1_FRINTTS_MASK) 414e9875c8fSkettenis #define ID_AA64ISAR1_FRINTTS_NONE (0x0ULL << ID_AA64ISAR1_FRINTTS_SHIFT) 415e9875c8fSkettenis #define ID_AA64ISAR1_FRINTTS_IMPL (0x1ULL << ID_AA64ISAR1_FRINTTS_SHIFT) 416e9875c8fSkettenis #define ID_AA64ISAR1_SB_SHIFT 36 417e9875c8fSkettenis #define ID_AA64ISAR1_SB_MASK (0xfULL << ID_AA64ISAR1_SB_SHIFT) 418e9875c8fSkettenis #define ID_AA64ISAR1_SB(x) ((x) & ID_AA64ISAR1_SB_MASK) 419e9875c8fSkettenis #define ID_AA64ISAR1_SB_NONE (0x0ULL << ID_AA64ISAR1_SB_SHIFT) 420e9875c8fSkettenis #define ID_AA64ISAR1_SB_IMPL (0x1ULL << ID_AA64ISAR1_SB_SHIFT) 421e9875c8fSkettenis #define ID_AA64ISAR1_SPECRES_SHIFT 40 422e9875c8fSkettenis #define ID_AA64ISAR1_SPECRES_MASK (0xfULL << ID_AA64ISAR1_SPECRES_SHIFT) 423e9875c8fSkettenis #define ID_AA64ISAR1_SPECRES(x) ((x) & ID_AA64ISAR1_SPECRES_MASK) 424e9875c8fSkettenis #define ID_AA64ISAR1_SPECRES_NONE (0x0ULL << ID_AA64ISAR1_SPECRES_SHIFT) 425e9875c8fSkettenis #define ID_AA64ISAR1_SPECRES_IMPL (0x1ULL << ID_AA64ISAR1_SPECRES_SHIFT) 426ec556c8dSkettenis #define ID_AA64ISAR1_BF16_SHIFT 44 427ec556c8dSkettenis #define ID_AA64ISAR1_BF16_MASK (0xfULL << ID_AA64ISAR1_BF16_SHIFT) 428ec556c8dSkettenis #define ID_AA64ISAR1_BF16(x) ((x) & ID_AA64ISAR1_BF16_MASK) 429ec556c8dSkettenis #define ID_AA64ISAR1_BF16_NONE (0x0ULL << ID_AA64ISAR1_BF16_SHIFT) 430ec556c8dSkettenis #define ID_AA64ISAR1_BF16_BASE (0x1ULL << ID_AA64ISAR1_BF16_SHIFT) 431ec556c8dSkettenis #define ID_AA64ISAR1_BF16_EBF (0x2ULL << ID_AA64ISAR1_BF16_SHIFT) 432ec556c8dSkettenis #define ID_AA64ISAR1_DGH_SHIFT 48 433ec556c8dSkettenis #define ID_AA64ISAR1_DGH_MASK (0xfULL << ID_AA64ISAR1_DGH_SHIFT) 434ec556c8dSkettenis #define ID_AA64ISAR1_DGH(x) ((x) & ID_AA64ISAR1_DGH_MASK) 435ec556c8dSkettenis #define ID_AA64ISAR1_DGH_NONE (0x0ULL << ID_AA64ISAR1_DGH_SHIFT) 436ec556c8dSkettenis #define ID_AA64ISAR1_DGH_IMPL (0x1ULL << ID_AA64ISAR1_DGH_SHIFT) 437ec556c8dSkettenis #define ID_AA64ISAR1_I8MM_SHIFT 52 438ec556c8dSkettenis #define ID_AA64ISAR1_I8MM_MASK (0xfULL << ID_AA64ISAR1_I8MM_SHIFT) 439ec556c8dSkettenis #define ID_AA64ISAR1_I8MM(x) ((x) & ID_AA64ISAR1_I8MM_MASK) 440ec556c8dSkettenis #define ID_AA64ISAR1_I8MM_NONE (0x0ULL << ID_AA64ISAR1_I8MM_SHIFT) 441ec556c8dSkettenis #define ID_AA64ISAR1_I8MM_IMPL (0x1ULL << ID_AA64ISAR1_I8MM_SHIFT) 442ec556c8dSkettenis #define ID_AA64ISAR1_XS_SHIFT 56 443ec556c8dSkettenis #define ID_AA64ISAR1_XS_MASK (0xfULL << ID_AA64ISAR1_XS_SHIFT) 444ec556c8dSkettenis #define ID_AA64ISAR1_XS(x) ((x) & ID_AA64ISAR1_XS_MASK) 445ec556c8dSkettenis #define ID_AA64ISAR1_XS_NONE (0x0ULL << ID_AA64ISAR1_XS_SHIFT) 446ec556c8dSkettenis #define ID_AA64ISAR1_XS_IMPL (0x1ULL << ID_AA64ISAR1_XS_SHIFT) 447ec556c8dSkettenis #define ID_AA64ISAR1_LS64_SHIFT 60 448ec556c8dSkettenis #define ID_AA64ISAR1_LS64_MASK (0xfULL << ID_AA64ISAR1_LS64_SHIFT) 449ec556c8dSkettenis #define ID_AA64ISAR1_LS64(x) ((x) & ID_AA64ISAR1_LS64_MASK) 450ec556c8dSkettenis #define ID_AA64ISAR1_LS64_NONE (0x0ULL << ID_AA64ISAR1_LS64_SHIFT) 451ec556c8dSkettenis #define ID_AA64ISAR1_LS64_BASE (0x1ULL << ID_AA64ISAR1_LS64_SHIFT) 452ec556c8dSkettenis #define ID_AA64ISAR1_LS64_V (0x2ULL << ID_AA64ISAR1_LS64_SHIFT) 453ec556c8dSkettenis #define ID_AA64ISAR1_LS64_ACCDATA (0x3ULL << ID_AA64ISAR1_LS64_SHIFT) 454a2d40921Spatrick 455d3b87506Spatrick /* ID_AA64ISAR2_EL1 */ 456ab617a20Skettenis #define ID_AA64ISAR2_MASK 0x00ff0000f0ff00ffULL 457ab617a20Skettenis #define ID_AA64ISAR2_WFXT_SHIFT 0 458ab617a20Skettenis #define ID_AA64ISAR2_WFXT_MASK (0xfULL << ID_AA64ISAR2_WFXT_SHIFT) 459ab617a20Skettenis #define ID_AA64ISAR2_WFXT(x) ((x) & ID_AA64ISAR2_WFXT_MASK) 460ab617a20Skettenis #define ID_AA64ISAR2_WFXT_NONE (0x0ULL << ID_AA64ISAR2_WFXT_SHIFT) 461ab617a20Skettenis #define ID_AA64ISAR2_WFXT_IMPL (0x2ULL << ID_AA64ISAR2_WFXT_SHIFT) 462ab617a20Skettenis #define ID_AA64ISAR2_RPRES_SHIFT 4 463ab617a20Skettenis #define ID_AA64ISAR2_RPRES_MASK (0xfULL << ID_AA64ISAR2_RPRES_SHIFT) 464ab617a20Skettenis #define ID_AA64ISAR2_RPRES(x) ((x) & ID_AA64ISAR2_RPRES_MASK) 465ab617a20Skettenis #define ID_AA64ISAR2_RPRES_NONE (0x0ULL << ID_AA64ISAR2_RPRES_SHIFT) 466ab617a20Skettenis #define ID_AA64ISAR2_RPRES_IMPL (0x1ULL << ID_AA64ISAR2_RPRES_SHIFT) 467*6f6231dcSkettenis #define ID_AA64ISAR2_GPA3_SHIFT 8 468*6f6231dcSkettenis #define ID_AA64ISAR2_GPA3_WIDTH 4 469*6f6231dcSkettenis #define ID_AA64ISAR2_GPA3_MASK (0xfULL << ID_AA64ISAR2_GPA3_SHIFT) 470*6f6231dcSkettenis #define ID_AA64ISAR2_GPA3(x) ((x) & ID_AA64ISAR2_GPA3_MASK) 471*6f6231dcSkettenis #define ID_AA64ISAR2_GPA3_NONE (0x0ULL << ID_AA64ISAR2_GPA3_SHIFT) 472*6f6231dcSkettenis #define ID_AA64ISAR2_GPA3_IMPL (0x1ULL << ID_AA64ISAR2_GPA3_SHIFT) 473*6f6231dcSkettenis #define ID_AA64ISAR2_APA3_SHIFT 12 474*6f6231dcSkettenis #define ID_AA64ISAR2_APA3_WIDTH 4 475*6f6231dcSkettenis #define ID_AA64ISAR2_APA3_MASK (0xfULL << ID_AA64ISAR2_APA3_SHIFT) 476*6f6231dcSkettenis #define ID_AA64ISAR2_APA3(x) ((x) & ID_AA64ISAR2_APA3_MASK) 477*6f6231dcSkettenis #define ID_AA64ISAR2_APA3_NONE (0x0ULL << ID_AA64ISAR2_APA3_SHIFT) 478*6f6231dcSkettenis #define ID_AA64ISAR2_APA3_PAC (0x1ULL << ID_AA64ISAR2_APA3_SHIFT) 479*6f6231dcSkettenis #define ID_AA64ISAR2_APA3_EPAC (0x2ULL << ID_AA64ISAR2_APA3_SHIFT) 480*6f6231dcSkettenis #define ID_AA64ISAR2_APA3_EPAC2 (0x3ULL << ID_AA64ISAR2_APA3_SHIFT) 481*6f6231dcSkettenis #define ID_AA64ISAR2_APA3_FPAC (0x4ULL << ID_AA64ISAR2_APA3_SHIFT) 482*6f6231dcSkettenis #define ID_AA64ISAR2_APA3_FPAC_COMBINED (0x5ULL << ID_AA64ISAR2_APA3_SHIFT) 483ab617a20Skettenis #define ID_AA64ISAR2_MOPS_SHIFT 16 484ab617a20Skettenis #define ID_AA64ISAR2_MOPS_MASK (0xfULL << ID_AA64ISAR2_MOPS_SHIFT) 485ab617a20Skettenis #define ID_AA64ISAR2_MOPS(x) ((x) & ID_AA64ISAR2_MOPS_MASK) 486ab617a20Skettenis #define ID_AA64ISAR2_MOPS_NONE (0x0ULL << ID_AA64ISAR2_MOPS_SHIFT) 487ab617a20Skettenis #define ID_AA64ISAR2_MOPS_IMPL (0x1ULL << ID_AA64ISAR2_MOPS_SHIFT) 488ab617a20Skettenis #define ID_AA64ISAR2_BC_SHIFT 20 489ab617a20Skettenis #define ID_AA64ISAR2_BC_MASK (0xfULL << ID_AA64ISAR2_BC_SHIFT) 490ab617a20Skettenis #define ID_AA64ISAR2_BC(x) ((x) & ID_AA64ISAR2_BC_MASK) 491ab617a20Skettenis #define ID_AA64ISAR2_BC_NONE (0x0ULL << ID_AA64ISAR2_BC_SHIFT) 492ab617a20Skettenis #define ID_AA64ISAR2_BC_IMPL (0x1ULL << ID_AA64ISAR2_BC_SHIFT) 493d3b87506Spatrick #define ID_AA64ISAR2_CLRBHB_SHIFT 28 494d3b87506Spatrick #define ID_AA64ISAR2_CLRBHB_MASK (0xfULL << ID_AA64ISAR2_CLRBHB_SHIFT) 495d3b87506Spatrick #define ID_AA64ISAR2_CLRBHB(x) ((x) & ID_AA64ISAR2_CLRBHB_MASK) 496d3b87506Spatrick #define ID_AA64ISAR2_CLRBHB_NONE (0x0ULL << ID_AA64ISAR2_CLRBHB_SHIFT) 497d3b87506Spatrick #define ID_AA64ISAR2_CLRBHB_IMPL (0x1ULL << ID_AA64ISAR2_CLRBHB_SHIFT) 498ab617a20Skettenis #define ID_AA64ISAR2_RPRFM_SHIFT 48 499ab617a20Skettenis #define ID_AA64ISAR2_RPRFM_MASK (0xfULL << ID_AA64ISAR2_RPRFM_SHIFT) 500ab617a20Skettenis #define ID_AA64ISAR2_RPRFM(x) ((x) & ID_AA64ISAR2_RPRFM_MASK) 501ab617a20Skettenis #define ID_AA64ISAR2_RPRFM_NONE (0x0ULL << ID_AA64ISAR2_RPRFM_SHIFT) 502ab617a20Skettenis #define ID_AA64ISAR2_RPRFM_IMPL (0x1ULL << ID_AA64ISAR2_RPRFM_SHIFT) 503ab617a20Skettenis #define ID_AA64ISAR2_CSSC_SHIFT 52 504ab617a20Skettenis #define ID_AA64ISAR2_CSSC_MASK (0xfULL << ID_AA64ISAR2_CSSC_SHIFT) 505ab617a20Skettenis #define ID_AA64ISAR2_CSSC(x) ((x) & ID_AA64ISAR2_CSSC_MASK) 506ab617a20Skettenis #define ID_AA64ISAR2_CSSC_NONE (0x0ULL << ID_AA64ISAR2_CSSC_SHIFT) 507ab617a20Skettenis #define ID_AA64ISAR2_CSSC_IMPL (0x1ULL << ID_AA64ISAR2_CSSC_SHIFT) 508d3b87506Spatrick 509a2d40921Spatrick /* ID_AA64MMFR0_EL1 */ 510ab617a20Skettenis #define ID_AA64MMFR0_MASK 0xf0000000ffffffffULL 511a2d40921Spatrick #define ID_AA64MMFR0_PA_RANGE_SHIFT 0 51209da619cSkettenis #define ID_AA64MMFR0_PA_RANGE_MASK (0xfULL << ID_AA64MMFR0_PA_RANGE_SHIFT) 513a2d40921Spatrick #define ID_AA64MMFR0_PA_RANGE(x) ((x) & ID_AA64MMFR0_PA_RANGE_MASK) 51409da619cSkettenis #define ID_AA64MMFR0_PA_RANGE_4G (0x0ULL << ID_AA64MMFR0_PA_RANGE_SHIFT) 51509da619cSkettenis #define ID_AA64MMFR0_PA_RANGE_64G (0x1ULL << ID_AA64MMFR0_PA_RANGE_SHIFT) 51609da619cSkettenis #define ID_AA64MMFR0_PA_RANGE_1T (0x2ULL << ID_AA64MMFR0_PA_RANGE_SHIFT) 51709da619cSkettenis #define ID_AA64MMFR0_PA_RANGE_4T (0x3ULL << ID_AA64MMFR0_PA_RANGE_SHIFT) 51809da619cSkettenis #define ID_AA64MMFR0_PA_RANGE_16T (0x4ULL << ID_AA64MMFR0_PA_RANGE_SHIFT) 51909da619cSkettenis #define ID_AA64MMFR0_PA_RANGE_256T (0x5ULL << ID_AA64MMFR0_PA_RANGE_SHIFT) 520a2d40921Spatrick #define ID_AA64MMFR0_ASID_BITS_SHIFT 4 52109da619cSkettenis #define ID_AA64MMFR0_ASID_BITS_MASK (0xfULL << ID_AA64MMFR0_ASID_BITS_SHIFT) 522a2d40921Spatrick #define ID_AA64MMFR0_ASID_BITS(x) ((x) & ID_AA64MMFR0_ASID_BITS_MASK) 52309da619cSkettenis #define ID_AA64MMFR0_ASID_BITS_8 (0x0ULL << ID_AA64MMFR0_ASID_BITS_SHIFT) 52409da619cSkettenis #define ID_AA64MMFR0_ASID_BITS_16 (0x2ULL << ID_AA64MMFR0_ASID_BITS_SHIFT) 525a2d40921Spatrick #define ID_AA64MMFR0_BIGEND_SHIFT 8 52609da619cSkettenis #define ID_AA64MMFR0_BIGEND_MASK (0xfULL << ID_AA64MMFR0_BIGEND_SHIFT) 527a2d40921Spatrick #define ID_AA64MMFR0_BIGEND(x) ((x) & ID_AA64MMFR0_BIGEND_MASK) 52809da619cSkettenis #define ID_AA64MMFR0_BIGEND_FIXED (0x0ULL << ID_AA64MMFR0_BIGEND_SHIFT) 52909da619cSkettenis #define ID_AA64MMFR0_BIGEND_MIXED (0x1ULL << ID_AA64MMFR0_BIGEND_SHIFT) 530a2d40921Spatrick #define ID_AA64MMFR0_S_NS_MEM_SHIFT 12 53109da619cSkettenis #define ID_AA64MMFR0_S_NS_MEM_MASK (0xfULL << ID_AA64MMFR0_S_NS_MEM_SHIFT) 532a2d40921Spatrick #define ID_AA64MMFR0_S_NS_MEM(x) ((x) & ID_AA64MMFR0_S_NS_MEM_MASK) 53309da619cSkettenis #define ID_AA64MMFR0_S_NS_MEM_NONE (0x0ULL << ID_AA64MMFR0_S_NS_MEM_SHIFT) 53409da619cSkettenis #define ID_AA64MMFR0_S_NS_MEM_DISTINCT (0x1ULL << ID_AA64MMFR0_S_NS_MEM_SHIFT) 535a2d40921Spatrick #define ID_AA64MMFR0_BIGEND_EL0_SHIFT 16 53609da619cSkettenis #define ID_AA64MMFR0_BIGEND_EL0_MASK (0xfULL << ID_AA64MMFR0_BIGEND_EL0_SHIFT) 537a2d40921Spatrick #define ID_AA64MMFR0_BIGEND_EL0(x) ((x) & ID_AA64MMFR0_BIGEND_EL0_MASK) 53809da619cSkettenis #define ID_AA64MMFR0_BIGEND_EL0_FIXED (0x0ULL << ID_AA64MMFR0_BIGEND_EL0_SHIFT) 53909da619cSkettenis #define ID_AA64MMFR0_BIGEND_EL0_MIXED (0x1ULL << ID_AA64MMFR0_BIGEND_EL0_SHIFT) 540a2d40921Spatrick #define ID_AA64MMFR0_TGRAN16_SHIFT 20 54109da619cSkettenis #define ID_AA64MMFR0_TGRAN16_MASK (0xfULL << ID_AA64MMFR0_TGRAN16_SHIFT) 542a2d40921Spatrick #define ID_AA64MMFR0_TGRAN16(x) ((x) & ID_AA64MMFR0_TGRAN16_MASK) 54309da619cSkettenis #define ID_AA64MMFR0_TGRAN16_NONE (0x0ULL << ID_AA64MMFR0_TGRAN16_SHIFT) 54409da619cSkettenis #define ID_AA64MMFR0_TGRAN16_IMPL (0x1ULL << ID_AA64MMFR0_TGRAN16_SHIFT) 545a2d40921Spatrick #define ID_AA64MMFR0_TGRAN64_SHIFT 24 54609da619cSkettenis #define ID_AA64MMFR0_TGRAN64_MASK (0xfULL << ID_AA64MMFR0_TGRAN64_SHIFT) 547a2d40921Spatrick #define ID_AA64MMFR0_TGRAN64(x) ((x) & ID_AA64MMFR0_TGRAN64_MASK) 54809da619cSkettenis #define ID_AA64MMFR0_TGRAN64_IMPL (0x0ULL << ID_AA64MMFR0_TGRAN64_SHIFT) 54909da619cSkettenis #define ID_AA64MMFR0_TGRAN64_NONE (0xfULL << ID_AA64MMFR0_TGRAN64_SHIFT) 550a2d40921Spatrick #define ID_AA64MMFR0_TGRAN4_SHIFT 28 55109da619cSkettenis #define ID_AA64MMFR0_TGRAN4_MASK (0xfULL << ID_AA64MMFR0_TGRAN4_SHIFT) 552a2d40921Spatrick #define ID_AA64MMFR0_TGRAN4(x) ((x) & ID_AA64MMFR0_TGRAN4_MASK) 55309da619cSkettenis #define ID_AA64MMFR0_TGRAN4_IMPL (0x0ULL << ID_AA64MMFR0_TGRAN4_SHIFT) 55409da619cSkettenis #define ID_AA64MMFR0_TGRAN4_NONE (0xfULL << ID_AA64MMFR0_TGRAN4_SHIFT) 555ab617a20Skettenis #define ID_AA64MMFR0_ECV_SHIFT 60 556ab617a20Skettenis #define ID_AA64MMFR0_ECV_MASK (0xfULL << ID_AA64MMFR0_ECV_SHIFT) 557ab617a20Skettenis #define ID_AA64MMFR0_ECV(x) ((x) & ID_AA64MMFR0_ECV_MASK) 558ab617a20Skettenis #define ID_AA64MMFR0_ECV_NONE (0x0ULL << ID_AA64MMFR0_ECV_SHIFT) 559ab617a20Skettenis #define ID_AA64MMFR0_ECV_IMPL (0x1ULL << ID_AA64MMFR0_ECV_SHIFT) 560ab617a20Skettenis #define ID_AA64MMFR0_ECV_CNTHCTL (0x2ULL << ID_AA64MMFR0_ECV_SHIFT) 561a2d40921Spatrick 562a2d40921Spatrick /* ID_AA64MMFR1_EL1 */ 563ab617a20Skettenis #define ID_AA64MMFR1_MASK 0xf000f000ffffffffULL 564a2d40921Spatrick #define ID_AA64MMFR1_HAFDBS_SHIFT 0 56509da619cSkettenis #define ID_AA64MMFR1_HAFDBS_MASK (0xfULL << ID_AA64MMFR1_HAFDBS_SHIFT) 566a2d40921Spatrick #define ID_AA64MMFR1_HAFDBS(x) ((x) & ID_AA64MMFR1_HAFDBS_MASK) 56709da619cSkettenis #define ID_AA64MMFR1_HAFDBS_NONE (0x0ULL << ID_AA64MMFR1_HAFDBS_SHIFT) 56809da619cSkettenis #define ID_AA64MMFR1_HAFDBS_AF (0x1ULL << ID_AA64MMFR1_HAFDBS_SHIFT) 56909da619cSkettenis #define ID_AA64MMFR1_HAFDBS_AF_DBS (0x2ULL << ID_AA64MMFR1_HAFDBS_SHIFT) 570a2d40921Spatrick #define ID_AA64MMFR1_VMIDBITS_SHIFT 4 57109da619cSkettenis #define ID_AA64MMFR1_VMIDBITS_MASK (0xfULL << ID_AA64MMFR1_VMIDBITS_SHIFT) 572a2d40921Spatrick #define ID_AA64MMFR1_VMIDBITS(x) ((x) & ID_AA64MMFR1_VMIDBITS_MASK) 57309da619cSkettenis #define ID_AA64MMFR1_VMIDBITS_8 (0x0ULL << ID_AA64MMFR1_VMIDBITS_SHIFT) 57409da619cSkettenis #define ID_AA64MMFR1_VMIDBITS_16 (0x2ULL << ID_AA64MMFR1_VMIDBITS_SHIFT) 575a2d40921Spatrick #define ID_AA64MMFR1_VH_SHIFT 8 57609da619cSkettenis #define ID_AA64MMFR1_VH_MASK (0xfULL << ID_AA64MMFR1_VH_SHIFT) 577a2d40921Spatrick #define ID_AA64MMFR1_VH(x) ((x) & ID_AA64MMFR1_VH_MASK) 57809da619cSkettenis #define ID_AA64MMFR1_VH_NONE (0x0ULL << ID_AA64MMFR1_VH_SHIFT) 57909da619cSkettenis #define ID_AA64MMFR1_VH_IMPL (0x1ULL << ID_AA64MMFR1_VH_SHIFT) 580a2d40921Spatrick #define ID_AA64MMFR1_HPDS_SHIFT 12 58109da619cSkettenis #define ID_AA64MMFR1_HPDS_MASK (0xfULL << ID_AA64MMFR1_HPDS_SHIFT) 582a2d40921Spatrick #define ID_AA64MMFR1_HPDS(x) ((x) & ID_AA64MMFR1_HPDS_MASK) 58309da619cSkettenis #define ID_AA64MMFR1_HPDS_NONE (0x0ULL << ID_AA64MMFR1_HPDS_SHIFT) 58409da619cSkettenis #define ID_AA64MMFR1_HPDS_IMPL (0x1ULL << ID_AA64MMFR1_HPDS_SHIFT) 585a2d40921Spatrick #define ID_AA64MMFR1_LO_SHIFT 16 58609da619cSkettenis #define ID_AA64MMFR1_LO_MASK (0xfULL << ID_AA64MMFR1_LO_SHIFT) 587a2d40921Spatrick #define ID_AA64MMFR1_LO(x) ((x) & ID_AA64MMFR1_LO_MASK) 58809da619cSkettenis #define ID_AA64MMFR1_LO_NONE (0x0ULL << ID_AA64MMFR1_LO_SHIFT) 58909da619cSkettenis #define ID_AA64MMFR1_LO_IMPL (0x1ULL << ID_AA64MMFR1_LO_SHIFT) 590a2d40921Spatrick #define ID_AA64MMFR1_PAN_SHIFT 20 59109da619cSkettenis #define ID_AA64MMFR1_PAN_MASK (0xfULL << ID_AA64MMFR1_PAN_SHIFT) 592a2d40921Spatrick #define ID_AA64MMFR1_PAN(x) ((x) & ID_AA64MMFR1_PAN_MASK) 59309da619cSkettenis #define ID_AA64MMFR1_PAN_NONE (0x0ULL << ID_AA64MMFR1_PAN_SHIFT) 59409da619cSkettenis #define ID_AA64MMFR1_PAN_IMPL (0x1ULL << ID_AA64MMFR1_PAN_SHIFT) 59509da619cSkettenis #define ID_AA64MMFR1_PAN_ATS1E1 (0x2ULL << ID_AA64MMFR1_PAN_SHIFT) 59609da619cSkettenis #define ID_AA64MMFR1_PAN_EPAN (0x3ULL << ID_AA64MMFR1_PAN_SHIFT) 597ae7d7f5cSkettenis #define ID_AA64MMFR1_SPECSEI_SHIFT 24 59809da619cSkettenis #define ID_AA64MMFR1_SPECSEI_MASK (0xfULL << ID_AA64MMFR1_SPECSEI_SHIFT) 599ae7d7f5cSkettenis #define ID_AA64MMFR1_SPECSEI(x) ((x) & ID_AA64MMFR1_SPECSEI_MASK) 60009da619cSkettenis #define ID_AA64MMFR1_SPECSEI_NONE (0x0ULL << ID_AA64MMFR1_SPECSEI_SHIFT) 60109da619cSkettenis #define ID_AA64MMFR1_SPECSEI_IMPL (0x1ULL << ID_AA64MMFR1_SPECSEI_SHIFT) 602ae7d7f5cSkettenis #define ID_AA64MMFR1_XNX_SHIFT 28 60309da619cSkettenis #define ID_AA64MMFR1_XNX_MASK (0xfULL << ID_AA64MMFR1_XNX_SHIFT) 604ae7d7f5cSkettenis #define ID_AA64MMFR1_XNX(x) ((x) & ID_AA64MMFR1_XNX_MASK) 60509da619cSkettenis #define ID_AA64MMFR1_XNX_NONE (0x0ULL << ID_AA64MMFR1_XNX_SHIFT) 60609da619cSkettenis #define ID_AA64MMFR1_XNX_IMPL (0x1ULL << ID_AA64MMFR1_XNX_SHIFT) 607ab617a20Skettenis #define ID_AA64MMFR1_AFP_SHIFT 44 608ab617a20Skettenis #define ID_AA64MMFR1_AFP_MASK (0xfULL << ID_AA64MMFR1_AFP_SHIFT) 609ab617a20Skettenis #define ID_AA64MMFR1_AFP(x) ((x) & ID_AA64MMFR1_AFP_MASK) 610ab617a20Skettenis #define ID_AA64MMFR1_AFP_NONE (0x0ULL << ID_AA64MMFR1_AFP_SHIFT) 611ab617a20Skettenis #define ID_AA64MMFR1_AFP_IMPL (0x1ULL << ID_AA64MMFR1_AFP_SHIFT) 612d3b87506Spatrick #define ID_AA64MMFR1_ECBHB_SHIFT 60 613d3b87506Spatrick #define ID_AA64MMFR1_ECBHB_MASK (0xfULL << ID_AA64MMFR1_ECBHB_SHIFT) 614d3b87506Spatrick #define ID_AA64MMFR1_ECBHB(x) ((x) & ID_AA64MMFR1_ECBHB_MASK) 615d3b87506Spatrick #define ID_AA64MMFR1_ECBHB_NONE (0x0ULL << ID_AA64MMFR1_ECBHB_SHIFT) 616d3b87506Spatrick #define ID_AA64MMFR1_ECBHB_IMPL (0x1ULL << ID_AA64MMFR1_ECBHB_SHIFT) 617a2d40921Spatrick 618d1486c82Skettenis /* ID_AA64MMFR2_EL1 */ 619d1486c82Skettenis #define ID_AA64MMFR2_MASK 0xffff0fffffffffffULL 620d1486c82Skettenis #define ID_AA64MMFR2_CCIDX_SHIFT 20 621d1486c82Skettenis #define ID_AA64MMFR2_CCIDX_MASK (0xfULL << ID_AA64MMFR2_CCIDX_SHIFT) 622d1486c82Skettenis #define ID_AA64MMFR2_CCIDX(x) ((x) & ID_AA64MMFR2_CCIDX_MASK) 623d1486c82Skettenis #define ID_AA64MMFR2_CCIDX_IMPL (0x1ULL << ID_AA64MMFR2_CCIDX_SHIFT) 624ab617a20Skettenis #define ID_AA64MMFR2_AT_SHIFT 32 625ab617a20Skettenis #define ID_AA64MMFR2_AT_MASK (0xfULL << ID_AA64MMFR2_AT_SHIFT) 626ab617a20Skettenis #define ID_AA64MMFR2_AT(x) ((x) & ID_AA64MMFR2_AT_MASK) 627ab617a20Skettenis #define ID_AA64MMFR2_AT_NONE (0x0ULL << ID_AA64MMFR2_AT_SHIFT) 628ab617a20Skettenis #define ID_AA64MMFR2_AT_IMPL (0x1ULL << ID_AA64MMFR2_AT_SHIFT) 629e8331b74Skettenis #define ID_AA64MMFR2_IDS_SHIFT 36 630e8331b74Skettenis #define ID_AA64MMFR2_IDS_MASK (0xfULL << ID_AA64MMFR2_IDS_SHIFT) 631e8331b74Skettenis #define ID_AA64MMFR2_IDS(x) ((x) & ID_AA64MMFR2_IDS_MASK) 632ab617a20Skettenis #define ID_AA64MMFR2_IDS_NONE (0x0ULL << ID_AA64MMFR2_IDS_SHIFT) 633e8331b74Skettenis #define ID_AA64MMFR2_IDS_IMPL (0x1ULL << ID_AA64MMFR2_IDS_SHIFT) 634d1486c82Skettenis 635f24071e5Spatrick /* ID_AA64PFR0_EL1 */ 636815de891Skettenis #define ID_AA64PFR0_MASK 0xff0fffffffffffffULL 637a2d40921Spatrick #define ID_AA64PFR0_EL0_SHIFT 0 63809da619cSkettenis #define ID_AA64PFR0_EL0_MASK (0xfULL << ID_AA64PFR0_EL0_SHIFT) 639a2d40921Spatrick #define ID_AA64PFR0_EL0(x) ((x) & ID_AA64PFR0_EL0_MASK) 64009da619cSkettenis #define ID_AA64PFR0_EL0_64 (0x1ULL << ID_AA64PFR0_EL0_SHIFT) 64109da619cSkettenis #define ID_AA64PFR0_EL0_64_32 (0x2ULL << ID_AA64PFR0_EL0_SHIFT) 642a2d40921Spatrick #define ID_AA64PFR0_EL1_SHIFT 4 64309da619cSkettenis #define ID_AA64PFR0_EL1_MASK (0xfULL << ID_AA64PFR0_EL1_SHIFT) 644a2d40921Spatrick #define ID_AA64PFR0_EL1(x) ((x) & ID_AA64PFR0_EL1_MASK) 64509da619cSkettenis #define ID_AA64PFR0_EL1_64 (0x1ULL << ID_AA64PFR0_EL1_SHIFT) 64609da619cSkettenis #define ID_AA64PFR0_EL1_64_32 (0x2ULL << ID_AA64PFR0_EL1_SHIFT) 647a2d40921Spatrick #define ID_AA64PFR0_EL2_SHIFT 8 64809da619cSkettenis #define ID_AA64PFR0_EL2_MASK (0xfULL << ID_AA64PFR0_EL2_SHIFT) 649a2d40921Spatrick #define ID_AA64PFR0_EL2(x) ((x) & ID_AA64PFR0_EL2_MASK) 65009da619cSkettenis #define ID_AA64PFR0_EL2_NONE (0x0ULL << ID_AA64PFR0_EL2_SHIFT) 65109da619cSkettenis #define ID_AA64PFR0_EL2_64 (0x1ULL << ID_AA64PFR0_EL2_SHIFT) 65209da619cSkettenis #define ID_AA64PFR0_EL2_64_32 (0x2ULL << ID_AA64PFR0_EL2_SHIFT) 653a2d40921Spatrick #define ID_AA64PFR0_EL3_SHIFT 12 65409da619cSkettenis #define ID_AA64PFR0_EL3_MASK (0xfULL << ID_AA64PFR0_EL3_SHIFT) 655a2d40921Spatrick #define ID_AA64PFR0_EL3(x) ((x) & ID_AA64PFR0_EL3_MASK) 65609da619cSkettenis #define ID_AA64PFR0_EL3_NONE (0x0ULL << ID_AA64PFR0_EL3_SHIFT) 65709da619cSkettenis #define ID_AA64PFR0_EL3_64 (0x1ULL << ID_AA64PFR0_EL3_SHIFT) 65809da619cSkettenis #define ID_AA64PFR0_EL3_64_32 (0x2ULL << ID_AA64PFR0_EL3_SHIFT) 659a2d40921Spatrick #define ID_AA64PFR0_FP_SHIFT 16 66009da619cSkettenis #define ID_AA64PFR0_FP_MASK (0xfULL << ID_AA64PFR0_FP_SHIFT) 661a2d40921Spatrick #define ID_AA64PFR0_FP(x) ((x) & ID_AA64PFR0_FP_MASK) 66209da619cSkettenis #define ID_AA64PFR0_FP_IMPL (0x0ULL << ID_AA64PFR0_FP_SHIFT) 663ab617a20Skettenis #define ID_AA64PFR0_FP_HP (0x1ULL << ID_AA64PFR0_FP_SHIFT) 66409da619cSkettenis #define ID_AA64PFR0_FP_NONE (0xfULL << ID_AA64PFR0_FP_SHIFT) 665a2d40921Spatrick #define ID_AA64PFR0_ADV_SIMD_SHIFT 20 66609da619cSkettenis #define ID_AA64PFR0_ADV_SIMD_MASK (0xfULL << ID_AA64PFR0_ADV_SIMD_SHIFT) 667a2d40921Spatrick #define ID_AA64PFR0_ADV_SIMD(x) ((x) & ID_AA64PFR0_ADV_SIMD_MASK) 66809da619cSkettenis #define ID_AA64PFR0_ADV_SIMD_IMPL (0x0ULL << ID_AA64PFR0_ADV_SIMD_SHIFT) 669ab617a20Skettenis #define ID_AA64PFR0_ADV_SIMD_HP (0x1ULL << ID_AA64PFR0_ADV_SIMD_SHIFT) 67009da619cSkettenis #define ID_AA64PFR0_ADV_SIMD_NONE (0xfULL << ID_AA64PFR0_ADV_SIMD_SHIFT) 671a2d40921Spatrick #define ID_AA64PFR0_GIC_BITS 0x4 /* Number of bits in GIC field */ 672a2d40921Spatrick #define ID_AA64PFR0_GIC_SHIFT 24 67309da619cSkettenis #define ID_AA64PFR0_GIC_MASK (0xfULL << ID_AA64PFR0_GIC_SHIFT) 674a2d40921Spatrick #define ID_AA64PFR0_GIC(x) ((x) & ID_AA64PFR0_GIC_MASK) 67509da619cSkettenis #define ID_AA64PFR0_GIC_CPUIF_NONE (0x0ULL << ID_AA64PFR0_GIC_SHIFT) 67609da619cSkettenis #define ID_AA64PFR0_GIC_CPUIF_EN (0x1ULL << ID_AA64PFR0_GIC_SHIFT) 677815de891Skettenis #define ID_AA64PFR0_RAS_SHIFT 28 678815de891Skettenis #define ID_AA64PFR0_RAS_MASK (0xfULL << ID_AA64PFR0_RAS_SHIFT) 679815de891Skettenis #define ID_AA64PFR0_RAS(x) ((x) & ID_AA64PFR0_RAS_MASK) 680815de891Skettenis #define ID_AA64PFR0_RAS_NONE (0x0ULL << ID_AA64PFR0_RAS_SHIFT) 681815de891Skettenis #define ID_AA64PFR0_RAS_IMPL (0x1ULL << ID_AA64PFR0_RAS_SHIFT) 682815de891Skettenis #define ID_AA64PFR0_RAS_IMPL_V1P1 (0x2ULL << ID_AA64PFR0_RAS_SHIFT) 683815de891Skettenis #define ID_AA64PFR0_SVE_SHIFT 32 684815de891Skettenis #define ID_AA64PFR0_SVE_MASK (0xfULL << ID_AA64PFR0_SVE_SHIFT) 685815de891Skettenis #define ID_AA64PFR0_SVE(x) ((x) & ID_AA64PFR0_SVE_MASK) 686815de891Skettenis #define ID_AA64PFR0_SVE_NONE (0x0ULL << ID_AA64PFR0_SVE_SHIFT) 687815de891Skettenis #define ID_AA64PFR0_SVE_IMPL (0x1ULL << ID_AA64PFR0_SVE_SHIFT) 688815de891Skettenis #define ID_AA64PFR0_SEL2_SHIFT 36 689815de891Skettenis #define ID_AA64PFR0_SEL2_MASK (0xfULL << ID_AA64PFR0_SEL2_SHIFT) 690815de891Skettenis #define ID_AA64PFR0_SEL2(x) ((x) & ID_AA64PFR0_SEL2_MASK) 691815de891Skettenis #define ID_AA64PFR0_SEL2_NONE (0x0ULL << ID_AA64PFR0_SEL2_SHIFT) 692815de891Skettenis #define ID_AA64PFR0_SEL2_IMPL (0x1ULL << ID_AA64PFR0_SEL2_SHIFT) 693815de891Skettenis #define ID_AA64PFR0_MPAM_SHIFT 40 694815de891Skettenis #define ID_AA64PFR0_MPAM_MASK (0xfULL << ID_AA64PFR0_MPAM_SHIFT) 695815de891Skettenis #define ID_AA64PFR0_MPAM(x) ((x) & ID_AA64PFR0_MPAM_MASK) 696815de891Skettenis #define ID_AA64PFR0_MPAM_NONE (0x0ULL << ID_AA64PFR0_MPAM_SHIFT) 697815de891Skettenis #define ID_AA64PFR0_MPAM_IMPL (0x1ULL << ID_AA64PFR0_MPAM_SHIFT) 698815de891Skettenis #define ID_AA64PFR0_AMU_SHIFT 44 699815de891Skettenis #define ID_AA64PFR0_AMU_MASK (0xfULL << ID_AA64PFR0_AMU_SHIFT) 700815de891Skettenis #define ID_AA64PFR0_AMU(x) ((x) & ID_AA64PFR0_AMU_MASK) 701815de891Skettenis #define ID_AA64PFR0_AMU_NONE (0x0ULL << ID_AA64PFR0_AMU_SHIFT) 702815de891Skettenis #define ID_AA64PFR0_AMU_IMPL (0x1ULL << ID_AA64PFR0_AMU_SHIFT) 703c5cbed4bSkettenis #define ID_AA64PFR0_DIT_SHIFT 48 704c5cbed4bSkettenis #define ID_AA64PFR0_DIT_MASK (0xfULL << ID_AA64PFR0_DIT_SHIFT) 705c5cbed4bSkettenis #define ID_AA64PFR0_DIT(x) ((x) & ID_AA64PFR0_DIT_MASK) 706c5cbed4bSkettenis #define ID_AA64PFR0_DIT_UNKNOWN (0x0ULL << ID_AA64PFR0_DIT_SHIFT) 707c5cbed4bSkettenis #define ID_AA64PFR0_DIT_IMPL (0x1ULL << ID_AA64PFR0_DIT_SHIFT) 70853458e97Skettenis #define ID_AA64PFR0_CSV2_SHIFT 56 70953458e97Skettenis #define ID_AA64PFR0_CSV2_MASK (0xfULL << ID_AA64PFR0_CSV2_SHIFT) 71053458e97Skettenis #define ID_AA64PFR0_CSV2(x) ((x) & ID_AA64PFR0_CSV2_MASK) 71153458e97Skettenis #define ID_AA64PFR0_CSV2_UNKNOWN (0x0ULL << ID_AA64PFR0_CSV2_SHIFT) 71253458e97Skettenis #define ID_AA64PFR0_CSV2_IMPL (0x1ULL << ID_AA64PFR0_CSV2_SHIFT) 71353458e97Skettenis #define ID_AA64PFR0_CSV2_SCXT (0x2ULL << ID_AA64PFR0_CSV2_SHIFT) 714d3b87506Spatrick #define ID_AA64PFR0_CSV2_HCXT (0x3ULL << ID_AA64PFR0_CSV2_SHIFT) 715ae7d7f5cSkettenis #define ID_AA64PFR0_CSV3_SHIFT 60 716ae7d7f5cSkettenis #define ID_AA64PFR0_CSV3_MASK (0xfULL << ID_AA64PFR0_CSV3_SHIFT) 717ae7d7f5cSkettenis #define ID_AA64PFR0_CSV3(x) ((x) & ID_AA64PFR0_CSV3_MASK) 718ae7d7f5cSkettenis #define ID_AA64PFR0_CSV3_UNKNOWN (0x0ULL << ID_AA64PFR0_CSV3_SHIFT) 719ae7d7f5cSkettenis #define ID_AA64PFR0_CSV3_IMPL (0x1ULL << ID_AA64PFR0_CSV3_SHIFT) 720f24071e5Spatrick 721815de891Skettenis /* ID_AA64PFR1_EL1 */ 722815de891Skettenis #define ID_AA64PFR1_MASK 0x000000000000ffffULL 723815de891Skettenis #define ID_AA64PFR1_BT_SHIFT 0 72409da619cSkettenis #define ID_AA64PFR1_BT_MASK (0xfULL << ID_AA64PFR1_BT_SHIFT) 725815de891Skettenis #define ID_AA64PFR1_BT(x) ((x) & ID_AA64PFR1_BT_MASK) 72609da619cSkettenis #define ID_AA64PFR1_BT_NONE (0x0ULL << ID_AA64PFR1_BT_SHIFT) 72709da619cSkettenis #define ID_AA64PFR1_BT_IMPL (0x1ULL << ID_AA64PFR1_BT_SHIFT) 728e00f38eeSkettenis #define ID_AA64PFR1_SSBS_SHIFT 4 729e00f38eeSkettenis #define ID_AA64PFR1_SSBS_MASK (0xfULL << ID_AA64PFR1_SSBS_SHIFT) 730e00f38eeSkettenis #define ID_AA64PFR1_SSBS(x) ((x) & ID_AA64PFR1_SSBS_MASK) 731e00f38eeSkettenis #define ID_AA64PFR1_SSBS_NONE (0x0ULL << ID_AA64PFR1_SSBS_SHIFT) 732e00f38eeSkettenis #define ID_AA64PFR1_SSBS_PSTATE (0x1ULL << ID_AA64PFR1_SSBS_SHIFT) 733e00f38eeSkettenis #define ID_AA64PFR1_SSBS_PSTATE_MSR (0x2ULL << ID_AA64PFR1_SSBS_SHIFT) 734815de891Skettenis #define ID_AA64PFR1_MTE_SHIFT 8 73509da619cSkettenis #define ID_AA64PFR1_MTE_MASK (0xfULL << ID_AA64PFR1_MTE_SHIFT) 736815de891Skettenis #define ID_AA64PFR1_MTE(x) ((x) & ID_AA64PFR1_MTE_MASK) 73709da619cSkettenis #define ID_AA64PFR1_MTE_NONE (0x0ULL << ID_AA64PFR1_MTE_SHIFT) 73809da619cSkettenis #define ID_AA64PFR1_MTE_IMPL (0x1ULL << ID_AA64PFR1_MTE_SHIFT) 739815de891Skettenis #define ID_AA64PFR1_RAS_FRAC_SHIFT 12 74009da619cSkettenis #define ID_AA64PFR1_RAS_FRAC_MASK (0xfULL << ID_AA64PFR1_RAS_FRAC_SHIFT) 741815de891Skettenis #define ID_AA64PFR1_RAS_FRAC(x) ((x) & ID_AA64PFR1_RAS_FRAC_MASK) 74209da619cSkettenis #define ID_AA64PFR1_RAS_FRAC_NONE (0x0ULL << ID_AA64PFR1_RAS_FRAC_SHIFT) 74309da619cSkettenis #define ID_AA64PFR1_RAS_FRAC_IMPL (0x1ULL << ID_AA64PFR1_RAS_FRAC_SHIFT) 744815de891Skettenis 745f24071e5Spatrick /* MAIR_EL1 - Memory Attribute Indirection Register */ 746f24071e5Spatrick #define MAIR_ATTR_MASK(idx) (0xff << ((n)* 8)) 747f24071e5Spatrick #define MAIR_ATTR(attr, idx) ((attr) << ((idx) * 8)) 748a2d40921Spatrick #define MAIR_DEVICE_nGnRnE 0x00 749a2d40921Spatrick #define MAIR_NORMAL_NC 0x44 750a2d40921Spatrick #define MAIR_NORMAL_WT 0x88 751a2d40921Spatrick #define MAIR_NORMAL_WB 0xff 752a2d40921Spatrick 753a2d40921Spatrick /* PAR_EL1 - Physical Address Register */ 754a2d40921Spatrick #define PAR_F_SHIFT 0 755a2d40921Spatrick #define PAR_F (0x1 << PAR_F_SHIFT) 756a2d40921Spatrick #define PAR_SUCCESS(x) (((x) & PAR_F) == 0) 757a2d40921Spatrick /* When PAR_F == 0 (success) */ 758a2d40921Spatrick #define PAR_SH_SHIFT 7 759a2d40921Spatrick #define PAR_SH_MASK (0x3 << PAR_SH_SHIFT) 760a2d40921Spatrick #define PAR_NS_SHIFT 9 761a2d40921Spatrick #define PAR_NS_MASK (0x3 << PAR_NS_SHIFT) 762a2d40921Spatrick #define PAR_PA_SHIFT 12 763a2d40921Spatrick #define PAR_PA_MASK 0x0000fffffffff000 764a2d40921Spatrick #define PAR_ATTR_SHIFT 56 765a2d40921Spatrick #define PAR_ATTR_MASK (0xff << PAR_ATTR_SHIFT) 766a2d40921Spatrick /* When PAR_F == 1 (aborted) */ 767a2d40921Spatrick #define PAR_FST_SHIFT 1 768a2d40921Spatrick #define PAR_FST_MASK (0x3f << PAR_FST_SHIFT) 769a2d40921Spatrick #define PAR_PTW_SHIFT 8 770a2d40921Spatrick #define PAR_PTW_MASK (0x1 << PAR_PTW_SHIFT) 771a2d40921Spatrick #define PAR_S_SHIFT 9 772a2d40921Spatrick #define PAR_S_MASK (0x1 << PAR_S_SHIFT) 773f24071e5Spatrick 774f24071e5Spatrick /* SCTLR_EL1 - System Control Register */ 7759125e006Skettenis #define SCTLR_RES0 0xffffffffc8222400 /* Reserved, write 0 */ 7769125e006Skettenis #define SCTLR_RES1 0x0000000030d00800 /* Reserved, write 1 */ 777f24071e5Spatrick 7789125e006Skettenis #define SCTLR_M 0x0000000000000001 7799125e006Skettenis #define SCTLR_A 0x0000000000000002 7809125e006Skettenis #define SCTLR_C 0x0000000000000004 7819125e006Skettenis #define SCTLR_SA 0x0000000000000008 7829125e006Skettenis #define SCTLR_SA0 0x0000000000000010 7839125e006Skettenis #define SCTLR_CP15BEN 0x0000000000000020 7849125e006Skettenis #define SCTLR_THEE 0x0000000000000040 7859125e006Skettenis #define SCTLR_ITD 0x0000000000000080 7869125e006Skettenis #define SCTLR_SED 0x0000000000000100 7879125e006Skettenis #define SCTLR_UMA 0x0000000000000200 7889125e006Skettenis #define SCTLR_I 0x0000000000001000 7894171e492Skettenis #define SCTLR_EnDB 0x0000000000002000 7909125e006Skettenis #define SCTLR_DZE 0x0000000000004000 7919125e006Skettenis #define SCTLR_UCT 0x0000000000008000 7929125e006Skettenis #define SCTLR_nTWI 0x0000000000010000 7939125e006Skettenis #define SCTLR_nTWE 0x0000000000040000 7949125e006Skettenis #define SCTLR_WXN 0x0000000000080000 7959125e006Skettenis #define SCTLR_SPAN 0x0000000000800000 7969125e006Skettenis #define SCTLR_EOE 0x0000000001000000 7979125e006Skettenis #define SCTLR_EE 0x0000000002000000 7989125e006Skettenis #define SCTLR_UCI 0x0000000004000000 7994171e492Skettenis #define SCTLR_EnDA 0x0000000008000000 8004171e492Skettenis #define SCTLR_EnIB 0x0000000040000000 8014171e492Skettenis #define SCTLR_EnIA 0x0000000080000000 8029999d3c6Skettenis #define SCTLR_BT0 0x0000000800000000 8039999d3c6Skettenis #define SCTLR_BT1 0x0000001000000000 80440435b13Skettenis #define SCTLR_EPAN 0x0200000000000000 805f24071e5Spatrick 806f24071e5Spatrick /* SPSR_EL1 */ 807f24071e5Spatrick /* 808f24071e5Spatrick * When the exception is taken in AArch64: 809f24071e5Spatrick * M[4] is 0 for AArch64 mode 810f24071e5Spatrick * M[3:2] is the exception level 811f24071e5Spatrick * M[1] is unused 812f24071e5Spatrick * M[0] is the SP select: 813f24071e5Spatrick * 0: always SP0 814f24071e5Spatrick * 1: current ELs SP 815f24071e5Spatrick */ 816f24071e5Spatrick #define PSR_M_EL0t 0x00000000 817f24071e5Spatrick #define PSR_M_EL1t 0x00000004 818f24071e5Spatrick #define PSR_M_EL1h 0x00000005 819f24071e5Spatrick #define PSR_M_EL2t 0x00000008 820f24071e5Spatrick #define PSR_M_EL2h 0x00000009 821f24071e5Spatrick #define PSR_M_MASK 0x0000001f 822f24071e5Spatrick 823f24071e5Spatrick #define PSR_F 0x00000040 824f24071e5Spatrick #define PSR_I 0x00000080 825f24071e5Spatrick #define PSR_A 0x00000100 826f24071e5Spatrick #define PSR_D 0x00000200 82798a8a58aSkettenis #define PSR_BTYPE 0x00000c00 8284a9f41deSkettenis #define PSR_SSBS 0x00001000 829f24071e5Spatrick #define PSR_IL 0x00100000 830f24071e5Spatrick #define PSR_SS 0x00200000 83155fe8593Skettenis #define PSR_PAN 0x00400000 8324a9f41deSkettenis #define PSR_UAO 0x00800000 8334a9f41deSkettenis #define PSR_DIT 0x01000000 8344a9f41deSkettenis #define PSR_TCO 0x02000000 835f24071e5Spatrick #define PSR_V 0x10000000 836f24071e5Spatrick #define PSR_C 0x20000000 837f24071e5Spatrick #define PSR_Z 0x40000000 838f24071e5Spatrick #define PSR_N 0x80000000 839f24071e5Spatrick 840f24071e5Spatrick /* TCR_EL1 - Translation Control Register */ 841ea2ca69aSkettenis #define TCR_AS (1UL << 36) 842f24071e5Spatrick 843f24071e5Spatrick #define TCR_IPS_SHIFT 32 844ea2ca69aSkettenis #define TCR_IPS_32BIT (0UL << TCR_IPS_SHIFT) 845ea2ca69aSkettenis #define TCR_IPS_36BIT (1UL << TCR_IPS_SHIFT) 846ea2ca69aSkettenis #define TCR_IPS_40BIT (2UL << TCR_IPS_SHIFT) 847ea2ca69aSkettenis #define TCR_IPS_42BIT (3UL << TCR_IPS_SHIFT) 848ea2ca69aSkettenis #define TCR_IPS_44BIT (4UL << TCR_IPS_SHIFT) 849ea2ca69aSkettenis #define TCR_IPS_48BIT (5UL << TCR_IPS_SHIFT) 850f24071e5Spatrick 851f24071e5Spatrick #define TCR_TG1_SHIFT 30 852ea2ca69aSkettenis #define TCR_TG1_16K (1UL << TCR_TG1_SHIFT) 853ea2ca69aSkettenis #define TCR_TG1_4K (2UL << TCR_TG1_SHIFT) 854ea2ca69aSkettenis #define TCR_TG1_64K (3UL << TCR_TG1_SHIFT) 855f24071e5Spatrick 856f24071e5Spatrick #define TCR_SH1_SHIFT 28 857a2d40921Spatrick #define TCR_SH1_IS (0x3UL << TCR_SH1_SHIFT) 858f24071e5Spatrick #define TCR_ORGN1_SHIFT 26 859a2d40921Spatrick #define TCR_ORGN1_WBWA (0x1UL << TCR_ORGN1_SHIFT) 860f24071e5Spatrick #define TCR_IRGN1_SHIFT 24 861a2d40921Spatrick #define TCR_IRGN1_WBWA (0x1UL << TCR_IRGN1_SHIFT) 862ea2ca69aSkettenis 863ea2ca69aSkettenis #define TCR_A1 (1UL << 22) 864ea2ca69aSkettenis 865ea2ca69aSkettenis #define TCR_TG0_SHIFT 14 86679d78662Skettenis #define TCR_TG0_4K (0UL << TCR_TG0_SHIFT) 86779d78662Skettenis #define TCR_TG0_64K (1UL << TCR_TG0_SHIFT) 86879d78662Skettenis #define TCR_TG0_16K (2UL << TCR_TG0_SHIFT) 869ea2ca69aSkettenis 870a2d40921Spatrick #define TCR_SH0_SHIFT 12 871a2d40921Spatrick #define TCR_SH0_IS (0x3UL << TCR_SH0_SHIFT) 872f24071e5Spatrick #define TCR_ORGN0_SHIFT 10 873a2d40921Spatrick #define TCR_ORGN0_WBWA (0x1UL << TCR_ORGN0_SHIFT) 874f24071e5Spatrick #define TCR_IRGN0_SHIFT 8 875a2d40921Spatrick #define TCR_IRGN0_WBWA (0x1UL << TCR_IRGN0_SHIFT) 876a2d40921Spatrick 877a2d40921Spatrick #define TCR_CACHE_ATTRS ((TCR_IRGN0_WBWA | TCR_IRGN1_WBWA) |\ 878a2d40921Spatrick (TCR_ORGN0_WBWA | TCR_ORGN1_WBWA)) 879a2d40921Spatrick #define TCR_SMP_ATTRS (TCR_SH0_IS | TCR_SH1_IS) 880a2d40921Spatrick 881f24071e5Spatrick #define TCR_T1SZ_SHIFT 16 882f24071e5Spatrick #define TCR_T0SZ_SHIFT 0 883a2d40921Spatrick #define TCR_T1SZ(x) ((x) << TCR_T1SZ_SHIFT) 884a2d40921Spatrick #define TCR_T0SZ(x) ((x) << TCR_T0SZ_SHIFT) 885a2d40921Spatrick #define TCR_TxSZ(x) (TCR_T1SZ(x) | TCR_T0SZ(x)) 886f24071e5Spatrick 887f24071e5Spatrick /* Monitor Debug System Control Register */ 888f24071e5Spatrick #define DBG_MDSCR_SS (0x1 << 0) 8891ca21ddbSkettenis #define DBG_MDSCR_TDCC (0x1 << 12) 890f24071e5Spatrick #define DBG_MDSCR_KDE (0x1 << 13) 891f24071e5Spatrick #define DBG_MDSCR_MDE (0x1 << 15) 892f24071e5Spatrick 89336fd90dcSjsg /* Performance Monitoring Counters */ 894a2d40921Spatrick #define PMCR_E (1 << 0) /* Enable all counters */ 895a2d40921Spatrick #define PMCR_P (1 << 1) /* Reset all counters */ 896a2d40921Spatrick #define PMCR_C (1 << 2) /* Clock counter reset */ 897a2d40921Spatrick #define PMCR_D (1 << 3) /* CNTR counts every 64 clk cycles */ 898a2d40921Spatrick #define PMCR_X (1 << 4) /* Export to ext. monitoring (ETM) */ 899a2d40921Spatrick #define PMCR_DP (1 << 5) /* Disable CCNT if non-invasive debug*/ 900a2d40921Spatrick #define PMCR_LC (1 << 6) /* Long cycle count enable */ 901a2d40921Spatrick #define PMCR_IMP_SHIFT 24 /* Implementer code */ 902a2d40921Spatrick #define PMCR_IMP_MASK (0xff << PMCR_IMP_SHIFT) 903a2d40921Spatrick #define PMCR_IDCODE_SHIFT 16 /* Identification code */ 904a2d40921Spatrick #define PMCR_IDCODE_MASK (0xff << PMCR_IDCODE_SHIFT) 905a2d40921Spatrick #define PMCR_IDCODE_CORTEX_A57 0x01 906a2d40921Spatrick #define PMCR_IDCODE_CORTEX_A72 0x02 907a2d40921Spatrick #define PMCR_IDCODE_CORTEX_A53 0x03 908a2d40921Spatrick #define PMCR_N_SHIFT 11 /* Number of counters implemented */ 909a2d40921Spatrick #define PMCR_N_MASK (0x1f << PMCR_N_SHIFT) 910f24071e5Spatrick 911f24071e5Spatrick #define I_bit (1 << 7) /* IRQ disable */ 912f24071e5Spatrick #define F_bit 0 /* FIQ disable - not actually used */ 913f24071e5Spatrick 914f24071e5Spatrick #endif /* !_MACHINE_ARMREG_H_ */ 915