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 8047361851SAndrew Turner /* AFSR0_EL1 - Auxiliary Fault Status Register 0 */ 8147361851SAndrew Turner #define AFSR0_EL1_REG MRS_REG_ALT_NAME(AFSR0_EL1) 8247361851SAndrew Turner #define AFSR0_EL1_op0 3 8347361851SAndrew Turner #define AFSR0_EL1_op1 0 8447361851SAndrew Turner #define AFSR0_EL1_CRn 5 8547361851SAndrew Turner #define AFSR0_EL1_CRm 1 8647361851SAndrew Turner #define AFSR0_EL1_op2 0 8747361851SAndrew Turner 8847361851SAndrew Turner /* AFSR0_EL12 */ 8947361851SAndrew Turner #define AFSR0_EL12_REG MRS_REG_ALT_NAME(AFSR0_EL12) 9047361851SAndrew Turner #define AFSR0_EL12_op0 3 9147361851SAndrew Turner #define AFSR0_EL12_op1 5 9247361851SAndrew Turner #define AFSR0_EL12_CRn 5 9347361851SAndrew Turner #define AFSR0_EL12_CRm 1 9447361851SAndrew Turner #define AFSR0_EL12_op2 0 9547361851SAndrew Turner 9647361851SAndrew Turner /* AFSR1_EL1 - Auxiliary Fault Status Register 1 */ 9747361851SAndrew Turner #define AFSR1_EL1_REG MRS_REG_ALT_NAME(AFSR1_EL1) 9847361851SAndrew Turner #define AFSR1_EL1_op0 3 9947361851SAndrew Turner #define AFSR1_EL1_op1 0 10047361851SAndrew Turner #define AFSR1_EL1_CRn 5 10147361851SAndrew Turner #define AFSR1_EL1_CRm 1 10247361851SAndrew Turner #define AFSR1_EL1_op2 1 10347361851SAndrew Turner 10447361851SAndrew Turner /* AFSR1_EL12 */ 10547361851SAndrew Turner #define AFSR1_EL12_REG MRS_REG_ALT_NAME(AFSR1_EL12) 10647361851SAndrew Turner #define AFSR1_EL12_op0 3 10747361851SAndrew Turner #define AFSR1_EL12_op1 5 10847361851SAndrew Turner #define AFSR1_EL12_CRn 5 10947361851SAndrew Turner #define AFSR1_EL12_CRm 1 11047361851SAndrew Turner #define AFSR1_EL12_op2 1 11147361851SAndrew Turner 11247361851SAndrew Turner /* AMAIR_EL1 - Auxiliary Memory Attribute Indirection Register */ 11347361851SAndrew Turner #define AMAIR_EL1_REG MRS_REG_ALT_NAME(AMAIR_EL1) 11447361851SAndrew Turner #define AMAIR_EL1_op0 3 11547361851SAndrew Turner #define AMAIR_EL1_op1 0 11647361851SAndrew Turner #define AMAIR_EL1_CRn 10 11747361851SAndrew Turner #define AMAIR_EL1_CRm 3 11847361851SAndrew Turner #define AMAIR_EL1_op2 0 11947361851SAndrew Turner 12047361851SAndrew Turner /* AMAIR_EL12 */ 12147361851SAndrew Turner #define AMAIR_EL12_REG MRS_REG_ALT_NAME(AMAIR_EL12) 12247361851SAndrew Turner #define AMAIR_EL12_op0 3 12347361851SAndrew Turner #define AMAIR_EL12_op1 5 12447361851SAndrew Turner #define AMAIR_EL12_CRn 10 12547361851SAndrew Turner #define AMAIR_EL12_CRm 3 12647361851SAndrew Turner #define AMAIR_EL12_op2 0 12747361851SAndrew Turner 12857d714a2SAndrew Turner /* APDAKeyHi_EL1 */ 12957d714a2SAndrew Turner #define APDAKeyHi_EL1_REG MRS_REG_ALT_NAME(APDAKeyHi_EL1) 13057d714a2SAndrew Turner #define APDAKeyHi_EL1_op0 3 13157d714a2SAndrew Turner #define APDAKeyHi_EL1_op1 0 13257d714a2SAndrew Turner #define APDAKeyHi_EL1_CRn 2 13357d714a2SAndrew Turner #define APDAKeyHi_EL1_CRm 2 13457d714a2SAndrew Turner #define APDAKeyHi_EL1_op2 1 13557d714a2SAndrew Turner 13657d714a2SAndrew Turner /* APDAKeyLo_EL1 */ 13757d714a2SAndrew Turner #define APDAKeyLo_EL1_REG MRS_REG_ALT_NAME(APDAKeyLo_EL1) 13857d714a2SAndrew Turner #define APDAKeyLo_EL1_op0 3 13957d714a2SAndrew Turner #define APDAKeyLo_EL1_op1 0 14057d714a2SAndrew Turner #define APDAKeyLo_EL1_CRn 2 14157d714a2SAndrew Turner #define APDAKeyLo_EL1_CRm 2 14257d714a2SAndrew Turner #define APDAKeyLo_EL1_op2 0 14357d714a2SAndrew Turner 14457d714a2SAndrew Turner /* APDBKeyHi_EL1 */ 14557d714a2SAndrew Turner #define APDBKeyHi_EL1_REG MRS_REG_ALT_NAME(APDBKeyHi_EL1) 14657d714a2SAndrew Turner #define APDBKeyHi_EL1_op0 3 14757d714a2SAndrew Turner #define APDBKeyHi_EL1_op1 0 14857d714a2SAndrew Turner #define APDBKeyHi_EL1_CRn 2 14957d714a2SAndrew Turner #define APDBKeyHi_EL1_CRm 2 15057d714a2SAndrew Turner #define APDBKeyHi_EL1_op2 3 15157d714a2SAndrew Turner 15257d714a2SAndrew Turner /* APDBKeyLo_EL1 */ 15357d714a2SAndrew Turner #define APDBKeyLo_EL1_REG MRS_REG_ALT_NAME(APDBKeyLo_EL1) 15457d714a2SAndrew Turner #define APDBKeyLo_EL1_op0 3 15557d714a2SAndrew Turner #define APDBKeyLo_EL1_op1 0 15657d714a2SAndrew Turner #define APDBKeyLo_EL1_CRn 2 15757d714a2SAndrew Turner #define APDBKeyLo_EL1_CRm 2 15857d714a2SAndrew Turner #define APDBKeyLo_EL1_op2 2 15957d714a2SAndrew Turner 16057d714a2SAndrew Turner /* APGAKeyHi_EL1 */ 16157d714a2SAndrew Turner #define APGAKeyHi_EL1_REG MRS_REG_ALT_NAME(APGAKeyHi_EL1) 16257d714a2SAndrew Turner #define APGAKeyHi_EL1_op0 3 16357d714a2SAndrew Turner #define APGAKeyHi_EL1_op1 0 16457d714a2SAndrew Turner #define APGAKeyHi_EL1_CRn 2 16557d714a2SAndrew Turner #define APGAKeyHi_EL1_CRm 3 16657d714a2SAndrew Turner #define APGAKeyHi_EL1_op2 1 16757d714a2SAndrew Turner 16857d714a2SAndrew Turner /* APGAKeyLo_EL1 */ 16957d714a2SAndrew Turner #define APGAKeyLo_EL1_REG MRS_REG_ALT_NAME(APGAKeyLo_EL1) 17057d714a2SAndrew Turner #define APGAKeyLo_EL1_op0 3 17157d714a2SAndrew Turner #define APGAKeyLo_EL1_op1 0 17257d714a2SAndrew Turner #define APGAKeyLo_EL1_CRn 2 17357d714a2SAndrew Turner #define APGAKeyLo_EL1_CRm 3 17457d714a2SAndrew Turner #define APGAKeyLo_EL1_op2 0 17557d714a2SAndrew Turner 17657d714a2SAndrew Turner /* APIAKeyHi_EL1 */ 17757d714a2SAndrew Turner #define APIAKeyHi_EL1_REG MRS_REG_ALT_NAME(APIAKeyHi_EL1) 17857d714a2SAndrew Turner #define APIAKeyHi_EL1_op0 3 17957d714a2SAndrew Turner #define APIAKeyHi_EL1_op1 0 18057d714a2SAndrew Turner #define APIAKeyHi_EL1_CRn 2 18157d714a2SAndrew Turner #define APIAKeyHi_EL1_CRm 1 18257d714a2SAndrew Turner #define APIAKeyHi_EL1_op2 1 18357d714a2SAndrew Turner 18457d714a2SAndrew Turner /* APIAKeyLo_EL1 */ 18557d714a2SAndrew Turner #define APIAKeyLo_EL1_REG MRS_REG_ALT_NAME(APIAKeyLo_EL1) 18657d714a2SAndrew Turner #define APIAKeyLo_EL1_op0 3 18757d714a2SAndrew Turner #define APIAKeyLo_EL1_op1 0 18857d714a2SAndrew Turner #define APIAKeyLo_EL1_CRn 2 18957d714a2SAndrew Turner #define APIAKeyLo_EL1_CRm 1 19057d714a2SAndrew Turner #define APIAKeyLo_EL1_op2 0 19157d714a2SAndrew Turner 19257d714a2SAndrew Turner /* APIBKeyHi_EL1 */ 19357d714a2SAndrew Turner #define APIBKeyHi_EL1_REG MRS_REG_ALT_NAME(APIBKeyHi_EL1) 19457d714a2SAndrew Turner #define APIBKeyHi_EL1_op0 3 19557d714a2SAndrew Turner #define APIBKeyHi_EL1_op1 0 19657d714a2SAndrew Turner #define APIBKeyHi_EL1_CRn 2 19757d714a2SAndrew Turner #define APIBKeyHi_EL1_CRm 1 19857d714a2SAndrew Turner #define APIBKeyHi_EL1_op2 3 19957d714a2SAndrew Turner 20057d714a2SAndrew Turner /* APIBKeyLo_EL1 */ 20157d714a2SAndrew Turner #define APIBKeyLo_EL1_REG MRS_REG_ALT_NAME(APIBKeyLo_EL1) 20257d714a2SAndrew Turner #define APIBKeyLo_EL1_op0 3 20357d714a2SAndrew Turner #define APIBKeyLo_EL1_op1 0 20457d714a2SAndrew Turner #define APIBKeyLo_EL1_CRn 2 20557d714a2SAndrew Turner #define APIBKeyLo_EL1_CRm 1 20657d714a2SAndrew Turner #define APIBKeyLo_EL1_op2 2 20757d714a2SAndrew Turner 208139ba152SJustin Hibbits /* CCSIDR_EL1 - Cache Size ID Register */ 209139ba152SJustin Hibbits #define CCSIDR_NumSets_MASK 0x0FFFE000 210139ba152SJustin Hibbits #define CCSIDR_NumSets64_MASK 0x00FFFFFF00000000 211139ba152SJustin Hibbits #define CCSIDR_NumSets_SHIFT 13 212139ba152SJustin Hibbits #define CCSIDR_NumSets64_SHIFT 32 213139ba152SJustin Hibbits #define CCSIDR_Assoc_MASK 0x00001FF8 214139ba152SJustin Hibbits #define CCSIDR_Assoc64_MASK 0x0000000000FFFFF8 215139ba152SJustin Hibbits #define CCSIDR_Assoc_SHIFT 3 216139ba152SJustin Hibbits #define CCSIDR_Assoc64_SHIFT 3 217139ba152SJustin Hibbits #define CCSIDR_LineSize_MASK 0x7 218139ba152SJustin Hibbits #define CCSIDR_NSETS(idr) \ 219139ba152SJustin Hibbits (((idr) & CCSIDR_NumSets_MASK) >> CCSIDR_NumSets_SHIFT) 220139ba152SJustin Hibbits #define CCSIDR_ASSOC(idr) \ 221139ba152SJustin Hibbits (((idr) & CCSIDR_Assoc_MASK) >> CCSIDR_Assoc_SHIFT) 222139ba152SJustin Hibbits #define CCSIDR_NSETS_64(idr) \ 223139ba152SJustin Hibbits (((idr) & CCSIDR_NumSets64_MASK) >> CCSIDR_NumSets64_SHIFT) 224139ba152SJustin Hibbits #define CCSIDR_ASSOC_64(idr) \ 225139ba152SJustin Hibbits (((idr) & CCSIDR_Assoc64_MASK) >> CCSIDR_Assoc64_SHIFT) 226139ba152SJustin Hibbits 227139ba152SJustin Hibbits /* CLIDR_EL1 - Cache level ID register */ 228139ba152SJustin Hibbits #define CLIDR_CTYPE_MASK 0x7 /* Cache type mask bits */ 229139ba152SJustin Hibbits #define CLIDR_CTYPE_IO 0x1 /* Instruction only */ 230139ba152SJustin Hibbits #define CLIDR_CTYPE_DO 0x2 /* Data only */ 231139ba152SJustin Hibbits #define CLIDR_CTYPE_ID 0x3 /* Split instruction and data */ 232139ba152SJustin Hibbits #define CLIDR_CTYPE_UNIFIED 0x4 /* Unified */ 233139ba152SJustin Hibbits 2344db15ab2SAndrew Turner /* CNTKCTL_EL1 - Counter-timer Kernel Control Register */ 2354db15ab2SAndrew Turner #define CNTKCTL_EL1 MRS_REG(CNTKCTL_EL0) 2364db15ab2SAndrew Turner #define CNTKCTL_EL1_op0 3 2374db15ab2SAndrew Turner #define CNTKCTL_EL1_op1 0 2384db15ab2SAndrew Turner #define CNTKCTL_EL1_CRn 14 2394db15ab2SAndrew Turner #define CNTKCTL_EL1_CRm 1 2404db15ab2SAndrew Turner #define CNTKCTL_EL1_op2 0 2414db15ab2SAndrew Turner 2424db15ab2SAndrew Turner /* CNTKCTL_EL12 - Counter-timer Kernel Control Register */ 2434db15ab2SAndrew Turner #define CNTKCTL_EL12 MRS_REG(CNTKCTL_EL0) 2444db15ab2SAndrew Turner #define CNTKCTL_EL12_op0 3 2454db15ab2SAndrew Turner #define CNTKCTL_EL12_op1 5 2464db15ab2SAndrew Turner #define CNTKCTL_EL12_CRn 14 2474db15ab2SAndrew Turner #define CNTKCTL_EL12_CRm 1 2484db15ab2SAndrew Turner #define CNTKCTL_EL12_op2 0 2494db15ab2SAndrew Turner 2503a1c1a30SAndrew Turner /* CNTP_CTL_EL0 - Counter-timer Physical Timer Control register */ 2514dc81560SAndrew Turner #define CNTP_CTL_EL0 MRS_REG(CNTP_CTL_EL0) 2524dc81560SAndrew Turner #define CNTP_CTL_EL0_op0 3 2534dc81560SAndrew Turner #define CNTP_CTL_EL0_op1 3 2544dc81560SAndrew Turner #define CNTP_CTL_EL0_CRn 14 2554dc81560SAndrew Turner #define CNTP_CTL_EL0_CRm 2 2564dc81560SAndrew Turner #define CNTP_CTL_EL0_op2 1 2573a1c1a30SAndrew Turner #define CNTP_CTL_ENABLE (1 << 0) 2583a1c1a30SAndrew Turner #define CNTP_CTL_IMASK (1 << 1) 2593a1c1a30SAndrew Turner #define CNTP_CTL_ISTATUS (1 << 2) 2603a1c1a30SAndrew Turner 2614dc81560SAndrew Turner /* CNTP_CVAL_EL0 - Counter-timer Physical Timer CompareValue register */ 2624dc81560SAndrew Turner #define CNTP_CVAL_EL0 MRS_REG(CNTP_CVAL_EL0) 2634dc81560SAndrew Turner #define CNTP_CVAL_EL0_op0 3 2644dc81560SAndrew Turner #define CNTP_CVAL_EL0_op1 3 2654dc81560SAndrew Turner #define CNTP_CVAL_EL0_CRn 14 2664dc81560SAndrew Turner #define CNTP_CVAL_EL0_CRm 2 2674dc81560SAndrew Turner #define CNTP_CVAL_EL0_op2 2 2684dc81560SAndrew Turner 2694dc81560SAndrew Turner /* CNTP_TVAL_EL0 - Counter-timer Physical Timer TimerValue register */ 2704dc81560SAndrew Turner #define CNTP_TVAL_EL0 MRS_REG(CNTP_TVAL_EL0) 2714dc81560SAndrew Turner #define CNTP_TVAL_EL0_op0 3 2724dc81560SAndrew Turner #define CNTP_TVAL_EL0_op1 3 2734dc81560SAndrew Turner #define CNTP_TVAL_EL0_CRn 14 2744dc81560SAndrew Turner #define CNTP_TVAL_EL0_CRm 2 2754dc81560SAndrew Turner #define CNTP_TVAL_EL0_op2 0 2764dc81560SAndrew Turner 2774dc81560SAndrew Turner /* CNTPCT_EL0 - Counter-timer Physical Count register */ 2784dc81560SAndrew Turner #define CNTPCT_EL0 MRS_REG(CNTPCT_EL0) 2794dc81560SAndrew Turner #define CNTPCT_EL0_op0 3 2804dc81560SAndrew Turner #define CNTPCT_EL0_op1 3 2814dc81560SAndrew Turner #define CNTPCT_EL0_CRn 14 2824dc81560SAndrew Turner #define CNTPCT_EL0_CRm 0 2834dc81560SAndrew Turner #define CNTPCT_EL0_op2 1 2844dc81560SAndrew Turner 2854db15ab2SAndrew Turner /* CNTV_CTL_EL0 - Counter-timer Virtual Timer Control register */ 2864db15ab2SAndrew Turner #define CNTV_CTL_EL0 MRS_REG(CNTV_CTL_EL0) 2874db15ab2SAndrew Turner #define CNTV_CTL_EL0_op0 3 2884db15ab2SAndrew Turner #define CNTV_CTL_EL0_op1 3 2894db15ab2SAndrew Turner #define CNTV_CTL_EL0_CRn 14 2904db15ab2SAndrew Turner #define CNTV_CTL_EL0_CRm 3 2914db15ab2SAndrew Turner #define CNTV_CTL_EL0_op2 1 2924db15ab2SAndrew Turner 2934db15ab2SAndrew Turner /* CNTV_CTL_EL02 - Counter-timer Virtual Timer Control register */ 2944db15ab2SAndrew Turner #define CNTV_CTL_EL02 MRS_REG(CNTV_CTL_EL02) 2954db15ab2SAndrew Turner #define CNTV_CTL_EL02_op0 3 2964db15ab2SAndrew Turner #define CNTV_CTL_EL02_op1 5 2974db15ab2SAndrew Turner #define CNTV_CTL_EL02_CRn 14 2984db15ab2SAndrew Turner #define CNTV_CTL_EL02_CRm 3 2994db15ab2SAndrew Turner #define CNTV_CTL_EL02_op2 1 3004db15ab2SAndrew Turner 3014db15ab2SAndrew Turner /* CNTV_CVAL_EL0 - Counter-timer Virtual Timer CompareValue register */ 3024db15ab2SAndrew Turner #define CNTV_CVAL_EL0 MRS_REG(CNTV_CVAL_EL0) 3034db15ab2SAndrew Turner #define CNTV_CVAL_EL0_op0 3 3044db15ab2SAndrew Turner #define CNTV_CVAL_EL0_op1 3 3054db15ab2SAndrew Turner #define CNTV_CVAL_EL0_CRn 14 3064db15ab2SAndrew Turner #define CNTV_CVAL_EL0_CRm 3 3074db15ab2SAndrew Turner #define CNTV_CVAL_EL0_op2 2 3084db15ab2SAndrew Turner 3094db15ab2SAndrew Turner /* CNTV_CVAL_EL02 - Counter-timer Virtual Timer CompareValue register */ 3104db15ab2SAndrew Turner #define CNTV_CVAL_EL02 MRS_REG(CNTV_CVAL_EL02) 3114db15ab2SAndrew Turner #define CNTV_CVAL_EL02_op0 3 3124db15ab2SAndrew Turner #define CNTV_CVAL_EL02_op1 5 3134db15ab2SAndrew Turner #define CNTV_CVAL_EL02_CRn 14 3144db15ab2SAndrew Turner #define CNTV_CVAL_EL02_CRm 3 3154db15ab2SAndrew Turner #define CNTV_CVAL_EL02_op2 2 3164db15ab2SAndrew Turner 3174f8ba1c9SZachary Leaf /* CONTEXTIDR_EL1 - Context ID register */ 3184f8ba1c9SZachary Leaf #define CONTEXTIDR_EL1 MRS_REG(CONTEXTIDR_EL1) 3194f8ba1c9SZachary Leaf #define CONTEXTIDR_EL1_REG MRS_REG_ALT_NAME(CONTEXTIDR_EL1) 3204f8ba1c9SZachary Leaf #define CONTEXTIDR_EL1_op0 3 3214f8ba1c9SZachary Leaf #define CONTEXTIDR_EL1_op1 0 3224f8ba1c9SZachary Leaf #define CONTEXTIDR_EL1_CRn 13 3234f8ba1c9SZachary Leaf #define CONTEXTIDR_EL1_CRm 0 3244f8ba1c9SZachary Leaf #define CONTEXTIDR_EL1_op2 1 3254f8ba1c9SZachary Leaf 32647361851SAndrew Turner /* CONTEXTIDR_EL12 */ 32747361851SAndrew Turner #define CONTEXTIDR_EL12_REG MRS_REG_ALT_NAME(CONTEXTIDR_EL12) 32847361851SAndrew Turner #define CONTEXTIDR_EL12_op0 3 32947361851SAndrew Turner #define CONTEXTIDR_EL12_op1 5 33047361851SAndrew Turner #define CONTEXTIDR_EL12_CRn 13 33147361851SAndrew Turner #define CONTEXTIDR_EL12_CRm 0 33247361851SAndrew Turner #define CONTEXTIDR_EL12_op2 1 33347361851SAndrew Turner 334e5acd89cSAndrew Turner /* CPACR_EL1 */ 33547361851SAndrew Turner #define CPACR_EL1_REG MRS_REG_ALT_NAME(CPACR_EL1) 33647361851SAndrew Turner #define CPACR_EL1_op0 3 33747361851SAndrew Turner #define CPACR_EL1_op1 0 33847361851SAndrew Turner #define CPACR_EL1_CRn 1 33947361851SAndrew Turner #define CPACR_EL1_CRm 0 34047361851SAndrew Turner #define CPACR_EL1_op2 2 3412f317e73SAndrew Turner #define CPACR_ZEN_MASK (0x3 << 16) 3422f317e73SAndrew Turner #define CPACR_ZEN_TRAP_ALL1 (0x0 << 16) /* Traps from EL0 and EL1 */ 3432f317e73SAndrew Turner #define CPACR_ZEN_TRAP_EL0 (0x1 << 16) /* Traps from EL0 */ 3442f317e73SAndrew Turner #define CPACR_ZEN_TRAP_ALL2 (0x2 << 16) /* Traps from EL0 and EL1 */ 3452f317e73SAndrew Turner #define CPACR_ZEN_TRAP_NONE (0x3 << 16) /* No traps */ 346e5acd89cSAndrew Turner #define CPACR_FPEN_MASK (0x3 << 20) 347e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_ALL1 (0x0 << 20) /* Traps from EL0 and EL1 */ 348e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_EL0 (0x1 << 20) /* Traps from EL0 */ 349e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_ALL2 (0x2 << 20) /* Traps from EL0 and EL1 */ 350e5acd89cSAndrew Turner #define CPACR_FPEN_TRAP_NONE (0x3 << 20) /* No traps */ 351e5acd89cSAndrew Turner #define CPACR_TTA (0x1 << 28) 352e5acd89cSAndrew Turner 35347361851SAndrew Turner /* CPACR_EL12 */ 35447361851SAndrew Turner #define CPACR_EL12_REG MRS_REG_ALT_NAME(CPACR_EL12) 35547361851SAndrew Turner #define CPACR_EL12_op0 3 35647361851SAndrew Turner #define CPACR_EL12_op1 5 35747361851SAndrew Turner #define CPACR_EL12_CRn 1 35847361851SAndrew Turner #define CPACR_EL12_CRm 0 35947361851SAndrew Turner #define CPACR_EL12_op2 2 36047361851SAndrew Turner 361139ba152SJustin Hibbits /* CSSELR_EL1 - Cache size selection register */ 362139ba152SJustin Hibbits #define CSSELR_Level(i) (i << 1) 363139ba152SJustin Hibbits #define CSSELR_InD 0x00000001 364139ba152SJustin Hibbits 365e5acd89cSAndrew Turner /* CTR_EL0 - Cache Type Register */ 366c32e28d5SAndrew Turner #define CTR_RES1 (1 << 31) 367c32e28d5SAndrew Turner #define CTR_TminLine_SHIFT 32 368c32e28d5SAndrew Turner #define CTR_TminLine_MASK (UL(0x3f) << CTR_TminLine_SHIFT) 369c32e28d5SAndrew Turner #define CTR_TminLine_VAL(reg) ((reg) & CTR_TminLine_MASK) 370c32e28d5SAndrew Turner #define CTR_DIC_SHIFT 29 371a090372fSAndrew Turner #define CTR_DIC_WIDTH 1 372c32e28d5SAndrew Turner #define CTR_DIC_MASK (0x1 << CTR_DIC_SHIFT) 373c32e28d5SAndrew Turner #define CTR_DIC_VAL(reg) ((reg) & CTR_DIC_MASK) 374a090372fSAndrew Turner #define CTR_DIC_NONE (0x0 << CTR_DIC_SHIFT) 375a090372fSAndrew Turner #define CTR_DIC_IMPL (0x1 << CTR_DIC_SHIFT) 376c32e28d5SAndrew Turner #define CTR_IDC_SHIFT 28 377a090372fSAndrew Turner #define CTR_IDC_WIDTH 1 378c32e28d5SAndrew Turner #define CTR_IDC_MASK (0x1 << CTR_IDC_SHIFT) 379c32e28d5SAndrew Turner #define CTR_IDC_VAL(reg) ((reg) & CTR_IDC_MASK) 380a090372fSAndrew Turner #define CTR_IDC_NONE (0x0 << CTR_IDC_SHIFT) 381a090372fSAndrew Turner #define CTR_IDC_IMPL (0x1 << CTR_IDC_SHIFT) 382c32e28d5SAndrew Turner #define CTR_CWG_SHIFT 24 383a090372fSAndrew Turner #define CTR_CWG_WIDTH 4 384c32e28d5SAndrew Turner #define CTR_CWG_MASK (0xf << CTR_CWG_SHIFT) 385c32e28d5SAndrew Turner #define CTR_CWG_VAL(reg) ((reg) & CTR_CWG_MASK) 386c32e28d5SAndrew Turner #define CTR_CWG_SIZE(reg) (4 << (CTR_CWG_VAL(reg) >> CTR_CWG_SHIFT)) 387c32e28d5SAndrew Turner #define CTR_ERG_SHIFT 20 388a090372fSAndrew Turner #define CTR_ERG_WIDTH 4 389c32e28d5SAndrew Turner #define CTR_ERG_MASK (0xf << CTR_ERG_SHIFT) 390c32e28d5SAndrew Turner #define CTR_ERG_VAL(reg) ((reg) & CTR_ERG_MASK) 391c32e28d5SAndrew Turner #define CTR_ERG_SIZE(reg) (4 << (CTR_ERG_VAL(reg) >> CTR_ERG_SHIFT)) 392e5acd89cSAndrew Turner #define CTR_DLINE_SHIFT 16 393a090372fSAndrew Turner #define CTR_DLINE_WIDTH 4 394e5acd89cSAndrew Turner #define CTR_DLINE_MASK (0xf << CTR_DLINE_SHIFT) 395c32e28d5SAndrew Turner #define CTR_DLINE_VAL(reg) ((reg) & CTR_DLINE_MASK) 396c32e28d5SAndrew Turner #define CTR_DLINE_SIZE(reg) (4 << (CTR_DLINE_VAL(reg) >> CTR_DLINE_SHIFT)) 397c32e28d5SAndrew Turner #define CTR_L1IP_SHIFT 14 398a090372fSAndrew Turner #define CTR_L1IP_WIDTH 2 399c32e28d5SAndrew Turner #define CTR_L1IP_MASK (0x3 << CTR_L1IP_SHIFT) 400c32e28d5SAndrew Turner #define CTR_L1IP_VAL(reg) ((reg) & CTR_L1IP_MASK) 4012923027cSAndrew Turner #define CTR_L1IP_VIPT (2 << CTR_L1IP_SHIFT) 402c32e28d5SAndrew Turner #define CTR_L1IP_PIPT (3 << CTR_L1IP_SHIFT) 403e5acd89cSAndrew Turner #define CTR_ILINE_SHIFT 0 404a090372fSAndrew Turner #define CTR_ILINE_WIDTH 4 405e5acd89cSAndrew Turner #define CTR_ILINE_MASK (0xf << CTR_ILINE_SHIFT) 406c32e28d5SAndrew Turner #define CTR_ILINE_VAL(reg) ((reg) & CTR_ILINE_MASK) 407c32e28d5SAndrew Turner #define CTR_ILINE_SIZE(reg) (4 << (CTR_ILINE_VAL(reg) >> CTR_ILINE_SHIFT)) 408e5acd89cSAndrew Turner 4095e7941b6SAndrew Turner /* CurrentEL - Current Exception Level */ 4105e7941b6SAndrew Turner #define CURRENTEL_EL_SHIFT 2 4115e7941b6SAndrew Turner #define CURRENTEL_EL_MASK (0x3 << CURRENTEL_EL_SHIFT) 4125e7941b6SAndrew Turner #define CURRENTEL_EL_EL0 (0x0 << CURRENTEL_EL_SHIFT) 4135e7941b6SAndrew Turner #define CURRENTEL_EL_EL1 (0x1 << CURRENTEL_EL_SHIFT) 4145e7941b6SAndrew Turner #define CURRENTEL_EL_EL2 (0x2 << CURRENTEL_EL_SHIFT) 4155e7941b6SAndrew Turner #define CURRENTEL_EL_EL3 (0x3 << CURRENTEL_EL_SHIFT) 4165e7941b6SAndrew Turner 417337eb2abSAndrew Turner /* DAIFSet/DAIFClear */ 418337eb2abSAndrew Turner #define DAIF_D (1 << 3) 419337eb2abSAndrew Turner #define DAIF_A (1 << 2) 420337eb2abSAndrew Turner #define DAIF_I (1 << 1) 421337eb2abSAndrew Turner #define DAIF_F (1 << 0) 422337eb2abSAndrew Turner #define DAIF_ALL (DAIF_D | DAIF_A | DAIF_I | DAIF_F) 4231f0174c9SAyrton Munoz #define DAIF_INTR (DAIF_I | DAIF_F) /* All exceptions that pass */ 424337eb2abSAndrew Turner /* through the intr framework */ 425337eb2abSAndrew Turner 426664640baSAndrew Turner /* DBGBCR<n>_EL1 - Debug Breakpoint Control Registers */ 4274dc81560SAndrew Turner #define DBGBCR_EL1_op0 2 4284dc81560SAndrew Turner #define DBGBCR_EL1_op1 0 4294dc81560SAndrew Turner #define DBGBCR_EL1_CRn 0 4304dc81560SAndrew Turner /* DBGBCR_EL1_CRm indicates which watchpoint this register is for */ 4314dc81560SAndrew Turner #define DBGBCR_EL1_op2 5 432664640baSAndrew Turner #define DBGBCR_EN 0x1 433664640baSAndrew Turner #define DBGBCR_PMC_SHIFT 1 434664640baSAndrew Turner #define DBGBCR_PMC (0x3 << DBGBCR_PMC_SHIFT) 435664640baSAndrew Turner #define DBGBCR_PMC_EL1 (0x1 << DBGBCR_PMC_SHIFT) 436664640baSAndrew Turner #define DBGBCR_PMC_EL0 (0x2 << DBGBCR_PMC_SHIFT) 437664640baSAndrew Turner #define DBGBCR_BAS_SHIFT 5 438664640baSAndrew Turner #define DBGBCR_BAS (0xf << DBGBCR_BAS_SHIFT) 439664640baSAndrew Turner #define DBGBCR_HMC_SHIFT 13 440664640baSAndrew Turner #define DBGBCR_HMC (0x1 << DBGBCR_HMC_SHIFT) 441664640baSAndrew Turner #define DBGBCR_SSC_SHIFT 14 442664640baSAndrew Turner #define DBGBCR_SSC (0x3 << DBGBCR_SSC_SHIFT) 443664640baSAndrew Turner #define DBGBCR_LBN_SHIFT 16 444664640baSAndrew Turner #define DBGBCR_LBN (0xf << DBGBCR_LBN_SHIFT) 445664640baSAndrew Turner #define DBGBCR_BT_SHIFT 20 446664640baSAndrew Turner #define DBGBCR_BT (0xf << DBGBCR_BT_SHIFT) 447664640baSAndrew Turner 4484dc81560SAndrew Turner /* DBGBVR<n>_EL1 - Debug Breakpoint Value Registers */ 4494dc81560SAndrew Turner #define DBGBVR_EL1_op0 2 4504dc81560SAndrew Turner #define DBGBVR_EL1_op1 0 4514dc81560SAndrew Turner #define DBGBVR_EL1_CRn 0 4524dc81560SAndrew Turner /* DBGBVR_EL1_CRm indicates which watchpoint this register is for */ 4534dc81560SAndrew Turner #define DBGBVR_EL1_op2 4 4544dc81560SAndrew Turner 455664640baSAndrew Turner /* DBGWCR<n>_EL1 - Debug Watchpoint Control Registers */ 4564dc81560SAndrew Turner #define DBGWCR_EL1_op0 2 4574dc81560SAndrew Turner #define DBGWCR_EL1_op1 0 4584dc81560SAndrew Turner #define DBGWCR_EL1_CRn 0 4594dc81560SAndrew Turner /* DBGWCR_EL1_CRm indicates which watchpoint this register is for */ 4604dc81560SAndrew Turner #define DBGWCR_EL1_op2 7 461664640baSAndrew Turner #define DBGWCR_EN 0x1 462664640baSAndrew Turner #define DBGWCR_PAC_SHIFT 1 463664640baSAndrew Turner #define DBGWCR_PAC (0x3 << DBGWCR_PAC_SHIFT) 464664640baSAndrew Turner #define DBGWCR_PAC_EL1 (0x1 << DBGWCR_PAC_SHIFT) 465664640baSAndrew Turner #define DBGWCR_PAC_EL0 (0x2 << DBGWCR_PAC_SHIFT) 466664640baSAndrew Turner #define DBGWCR_LSC_SHIFT 3 467664640baSAndrew Turner #define DBGWCR_LSC (0x3 << DBGWCR_LSC_SHIFT) 468664640baSAndrew Turner #define DBGWCR_BAS_SHIFT 5 469664640baSAndrew Turner #define DBGWCR_BAS (0xff << DBGWCR_BAS_SHIFT) 470664640baSAndrew Turner #define DBGWCR_HMC_SHIFT 13 471664640baSAndrew Turner #define DBGWCR_HMC (0x1 << DBGWCR_HMC_SHIFT) 472664640baSAndrew Turner #define DBGWCR_SSC_SHIFT 14 473664640baSAndrew Turner #define DBGWCR_SSC (0x3 << DBGWCR_SSC_SHIFT) 474664640baSAndrew Turner #define DBGWCR_LBN_SHIFT 16 475664640baSAndrew Turner #define DBGWCR_LBN (0xf << DBGWCR_LBN_SHIFT) 476664640baSAndrew Turner #define DBGWCR_WT_SHIFT 20 477664640baSAndrew Turner #define DBGWCR_WT (0x1 << DBGWCR_WT_SHIFT) 478664640baSAndrew Turner #define DBGWCR_MASK_SHIFT 24 479664640baSAndrew Turner #define DBGWCR_MASK (0x1f << DBGWCR_MASK_SHIFT) 480664640baSAndrew Turner 4814dc81560SAndrew Turner /* DBGWVR<n>_EL1 - Debug Watchpoint Value Registers */ 4824dc81560SAndrew Turner #define DBGWVR_EL1_op0 2 4834dc81560SAndrew Turner #define DBGWVR_EL1_op1 0 4844dc81560SAndrew Turner #define DBGWVR_EL1_CRn 0 4854dc81560SAndrew Turner /* DBGWVR_EL1_CRm indicates which watchpoint this register is for */ 4864dc81560SAndrew Turner #define DBGWVR_EL1_op2 6 4874dc81560SAndrew Turner 488db278182SWojciech Macek /* DCZID_EL0 - Data Cache Zero ID register */ 489db278182SWojciech Macek #define DCZID_DZP (1 << 4) /* DC ZVA prohibited if non-0 */ 490db278182SWojciech Macek #define DCZID_BS_SHIFT 0 491db278182SWojciech Macek #define DCZID_BS_MASK (0xf << DCZID_BS_SHIFT) 492db278182SWojciech Macek #define DCZID_BS_SIZE(reg) (((reg) & DCZID_BS_MASK) >> DCZID_BS_SHIFT) 493db278182SWojciech Macek 4944dc81560SAndrew Turner /* DBGAUTHSTATUS_EL1 */ 4954dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1 MRS_REG(DBGAUTHSTATUS_EL1) 4964dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op0 2 4974dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op1 0 4984dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_CRn 7 4994dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_CRm 14 5004dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op2 6 5014dc81560SAndrew Turner 5024dc81560SAndrew Turner /* DBGCLAIMCLR_EL1 */ 5034dc81560SAndrew Turner #define DBGCLAIMCLR_EL1 MRS_REG(DBGCLAIMCLR_EL1) 5044dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op0 2 5054dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op1 0 5064dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_CRn 7 5074dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_CRm 9 5084dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op2 6 5094dc81560SAndrew Turner 5104dc81560SAndrew Turner /* DBGCLAIMSET_EL1 */ 5114dc81560SAndrew Turner #define DBGCLAIMSET_EL1 MRS_REG(DBGCLAIMSET_EL1) 5124dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op0 2 5134dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op1 0 5144dc81560SAndrew Turner #define DBGCLAIMSET_EL1_CRn 7 5154dc81560SAndrew Turner #define DBGCLAIMSET_EL1_CRm 8 5164dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op2 6 5174dc81560SAndrew Turner 5184dc81560SAndrew Turner /* DBGPRCR_EL1 */ 5194dc81560SAndrew Turner #define DBGPRCR_EL1 MRS_REG(DBGPRCR_EL1) 5204dc81560SAndrew Turner #define DBGPRCR_EL1_op0 2 5214dc81560SAndrew Turner #define DBGPRCR_EL1_op1 0 5224dc81560SAndrew Turner #define DBGPRCR_EL1_CRn 1 5234dc81560SAndrew Turner #define DBGPRCR_EL1_CRm 4 5244dc81560SAndrew Turner #define DBGPRCR_EL1_op2 4 5254dc81560SAndrew Turner 52647361851SAndrew Turner /* ELR_EL1 */ 52747361851SAndrew Turner #define ELR_EL1_REG MRS_REG_ALT_NAME(ELR_EL1) 52847361851SAndrew Turner #define ELR_EL1_op0 3 52947361851SAndrew Turner #define ELR_EL1_op1 0 53047361851SAndrew Turner #define ELR_EL1_CRn 4 53147361851SAndrew Turner #define ELR_EL1_CRm 0 53247361851SAndrew Turner #define ELR_EL1_op2 1 53347361851SAndrew Turner 53447361851SAndrew Turner /* ELR_EL12 */ 53547361851SAndrew Turner #define ELR_EL12_REG MRS_REG_ALT_NAME(ELR_EL12) 53647361851SAndrew Turner #define ELR_EL12_op0 3 53747361851SAndrew Turner #define ELR_EL12_op1 5 53847361851SAndrew Turner #define ELR_EL12_CRn 4 53947361851SAndrew Turner #define ELR_EL12_CRm 0 54047361851SAndrew Turner #define ELR_EL12_op2 1 54147361851SAndrew Turner 542e5acd89cSAndrew Turner /* ESR_ELx */ 5433a1c1a30SAndrew Turner #define ESR_ELx_ISS_MASK 0x01ffffff 5446e2caba7SDmitry Chagin #define ISS_FP_TFV_SHIFT 23 5456e2caba7SDmitry Chagin #define ISS_FP_TFV (0x01 << ISS_FP_TFV_SHIFT) 5466e2caba7SDmitry Chagin #define ISS_FP_IOF 0x01 5476e2caba7SDmitry Chagin #define ISS_FP_DZF 0x02 5486e2caba7SDmitry Chagin #define ISS_FP_OFF 0x04 5496e2caba7SDmitry Chagin #define ISS_FP_UFF 0x08 5506e2caba7SDmitry Chagin #define ISS_FP_IXF 0x10 5516e2caba7SDmitry Chagin #define ISS_FP_IDF 0x80 552e5acd89cSAndrew Turner #define ISS_INSN_FnV (0x01 << 10) 553e5acd89cSAndrew Turner #define ISS_INSN_EA (0x01 << 9) 554e5acd89cSAndrew Turner #define ISS_INSN_S1PTW (0x01 << 7) 555e5acd89cSAndrew Turner #define ISS_INSN_IFSC_MASK (0x1f << 0) 5563a1c1a30SAndrew Turner 557dd24d475SMark Johnston #define ISS_WFx_TI_SHIFT 0 558dd24d475SMark Johnston #define ISS_WFx_TI_MASK (0x03 << ISS_WFx_TI_SHIFT) 559dd24d475SMark Johnston #define ISS_WFx_TI_WFI (0x00 << ISS_WFx_TI_SHIFT) 560dd24d475SMark Johnston #define ISS_WFx_TI_WFE (0x01 << ISS_WFx_TI_SHIFT) 561dd24d475SMark Johnston #define ISS_WFx_TI_WFIT (0x02 << ISS_WFx_TI_SHIFT) 562dd24d475SMark Johnston #define ISS_WFx_TI_WFET (0x03 << ISS_WFx_TI_SHIFT) 563dd24d475SMark Johnston #define ISS_WFx_RV_SHIFT 2 564dd24d475SMark Johnston #define ISS_WFx_RV_MASK (0x01 << ISS_WFx_RV_SHIFT) 565dd24d475SMark Johnston #define ISS_WFx_RV_INVALID (0x00 << ISS_WFx_RV_SHIFT) 566dd24d475SMark Johnston #define ISS_WFx_RV_VALID (0x01 << ISS_WFx_RV_SHIFT) 567dd24d475SMark Johnston #define ISS_WFx_RN_SHIFT 5 568dd24d475SMark Johnston #define ISS_WFx_RN_MASK (0x1f << ISS_WFx_RN_SHIFT) 569dd24d475SMark Johnston #define ISS_WFx_RN(x) (((x) & ISS_WFx_RN_MASK) >> ISS_WFx_RN_SHIFT) 570dd24d475SMark Johnston #define ISS_WFx_COND_SHIFT 20 571dd24d475SMark Johnston #define ISS_WFx_COND_MASK (0x0f << ISS_WFx_COND_SHIFT) 572dd24d475SMark Johnston #define ISS_WFx_CV_SHIFT 24 573dd24d475SMark Johnston #define ISS_WFx_CV_MASK (0x01 << ISS_WFx_CV_SHIFT) 574dd24d475SMark Johnston #define ISS_WFx_CV_INVALID (0x00 << ISS_WFx_CV_SHIFT) 575dd24d475SMark Johnston #define ISS_WFx_CV_VALID (0x01 << ISS_WFx_CV_SHIFT) 576dd24d475SMark Johnston 5773a1c1a30SAndrew Turner #define ISS_MSR_DIR_SHIFT 0 5783a1c1a30SAndrew Turner #define ISS_MSR_DIR (0x01 << ISS_MSR_DIR_SHIFT) 5793a1c1a30SAndrew Turner #define ISS_MSR_Rt_SHIFT 5 5803a1c1a30SAndrew Turner #define ISS_MSR_Rt_MASK (0x1f << ISS_MSR_Rt_SHIFT) 5813a1c1a30SAndrew Turner #define ISS_MSR_Rt(x) (((x) & ISS_MSR_Rt_MASK) >> ISS_MSR_Rt_SHIFT) 5823a1c1a30SAndrew Turner #define ISS_MSR_CRm_SHIFT 1 5833a1c1a30SAndrew Turner #define ISS_MSR_CRm_MASK (0xf << ISS_MSR_CRm_SHIFT) 5843a1c1a30SAndrew Turner #define ISS_MSR_CRm(x) (((x) & ISS_MSR_CRm_MASK) >> ISS_MSR_CRm_SHIFT) 5853a1c1a30SAndrew Turner #define ISS_MSR_CRn_SHIFT 10 5863a1c1a30SAndrew Turner #define ISS_MSR_CRn_MASK (0xf << ISS_MSR_CRn_SHIFT) 5873a1c1a30SAndrew Turner #define ISS_MSR_CRn(x) (((x) & ISS_MSR_CRn_MASK) >> ISS_MSR_CRn_SHIFT) 5883a1c1a30SAndrew Turner #define ISS_MSR_OP1_SHIFT 14 5893a1c1a30SAndrew Turner #define ISS_MSR_OP1_MASK (0x7 << ISS_MSR_OP1_SHIFT) 5903a1c1a30SAndrew Turner #define ISS_MSR_OP1(x) (((x) & ISS_MSR_OP1_MASK) >> ISS_MSR_OP1_SHIFT) 5913a1c1a30SAndrew Turner #define ISS_MSR_OP2_SHIFT 17 5923a1c1a30SAndrew Turner #define ISS_MSR_OP2_MASK (0x7 << ISS_MSR_OP2_SHIFT) 5933a1c1a30SAndrew Turner #define ISS_MSR_OP2(x) (((x) & ISS_MSR_OP2_MASK) >> ISS_MSR_OP2_SHIFT) 5943a1c1a30SAndrew Turner #define ISS_MSR_OP0_SHIFT 20 5953a1c1a30SAndrew Turner #define ISS_MSR_OP0_MASK (0x3 << ISS_MSR_OP0_SHIFT) 5963a1c1a30SAndrew Turner #define ISS_MSR_OP0(x) (((x) & ISS_MSR_OP0_MASK) >> ISS_MSR_OP0_SHIFT) 5973a1c1a30SAndrew Turner #define ISS_MSR_REG_MASK \ 5983a1c1a30SAndrew Turner (ISS_MSR_OP0_MASK | ISS_MSR_OP2_MASK | ISS_MSR_OP1_MASK | \ 5993a1c1a30SAndrew Turner ISS_MSR_CRn_MASK | ISS_MSR_CRm_MASK) 60009ac9cf8SAndrew Turner #define ISS_MSR_REG(reg) \ 60109ac9cf8SAndrew Turner (((reg ## _op0) << ISS_MSR_OP0_SHIFT) | \ 60209ac9cf8SAndrew Turner ((reg ## _op1) << ISS_MSR_OP1_SHIFT) | \ 60309ac9cf8SAndrew Turner ((reg ## _CRn) << ISS_MSR_CRn_SHIFT) | \ 60409ac9cf8SAndrew Turner ((reg ## _CRm) << ISS_MSR_CRm_SHIFT) | \ 60509ac9cf8SAndrew Turner ((reg ## _op2) << ISS_MSR_OP2_SHIFT)) 6063a1c1a30SAndrew Turner 6073a1c1a30SAndrew Turner #define ISS_DATA_ISV_SHIFT 24 6083a1c1a30SAndrew Turner #define ISS_DATA_ISV (0x01 << ISS_DATA_ISV_SHIFT) 6093a1c1a30SAndrew Turner #define ISS_DATA_SAS_SHIFT 22 6103a1c1a30SAndrew Turner #define ISS_DATA_SAS_MASK (0x03 << ISS_DATA_SAS_SHIFT) 6113a1c1a30SAndrew Turner #define ISS_DATA_SSE_SHIFT 21 6123a1c1a30SAndrew Turner #define ISS_DATA_SSE (0x01 << ISS_DATA_SSE_SHIFT) 6133a1c1a30SAndrew Turner #define ISS_DATA_SRT_SHIFT 16 6143a1c1a30SAndrew Turner #define ISS_DATA_SRT_MASK (0x1f << ISS_DATA_SRT_SHIFT) 615e5acd89cSAndrew Turner #define ISS_DATA_SF (0x01 << 15) 616e5acd89cSAndrew Turner #define ISS_DATA_AR (0x01 << 14) 617e5acd89cSAndrew Turner #define ISS_DATA_FnV (0x01 << 10) 618a9da8477SMark Johnston #define ISS_DATA_EA (0x01 << 9) 619a9da8477SMark Johnston #define ISS_DATA_CM (0x01 << 8) 620a9da8477SMark Johnston #define ISS_DATA_S1PTW (0x01 << 7) 6213a1c1a30SAndrew Turner #define ISS_DATA_WnR_SHIFT 6 6223a1c1a30SAndrew Turner #define ISS_DATA_WnR (0x01 << ISS_DATA_WnR_SHIFT) 623a70475caSAndrew Turner #define ISS_DATA_DFSC_MASK (0x3f << 0) 62463512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L0 (0x00 << 0) 62563512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L1 (0x01 << 0) 62663512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L2 (0x02 << 0) 62763512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L3 (0x03 << 0) 62863512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L0 (0x04 << 0) 62963512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L1 (0x05 << 0) 63063512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L2 (0x06 << 0) 63163512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L3 (0x07 << 0) 63263512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L1 (0x09 << 0) 63363512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L2 (0x0a << 0) 63463512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L3 (0x0b << 0) 63563512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L1 (0x0d << 0) 63663512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L2 (0x0e << 0) 63763512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L3 (0x0f << 0) 63863512a12SAndrew Turner #define ISS_DATA_DFSC_EXT (0x10 << 0) 63963512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L0 (0x14 << 0) 64063512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L1 (0x15 << 0) 64163512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L2 (0x16 << 0) 64263512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L3 (0x17 << 0) 64363512a12SAndrew Turner #define ISS_DATA_DFSC_ECC (0x18 << 0) 64463512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L0 (0x1c << 0) 64563512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L1 (0x1d << 0) 64663512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L2 (0x1e << 0) 64763512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L3 (0x1f << 0) 64863512a12SAndrew Turner #define ISS_DATA_DFSC_ALIGN (0x21 << 0) 649dc836c65SAndrew Turner #define ISS_DATA_DFSC_TLB_CONFLICT (0x30 << 0) 650e5acd89cSAndrew Turner #define ESR_ELx_IL (0x01 << 25) 651e5acd89cSAndrew Turner #define ESR_ELx_EC_SHIFT 26 652e5acd89cSAndrew Turner #define ESR_ELx_EC_MASK (0x3f << 26) 653e5acd89cSAndrew Turner #define ESR_ELx_EXCEPTION(esr) (((esr) & ESR_ELx_EC_MASK) >> ESR_ELx_EC_SHIFT) 654e5acd89cSAndrew Turner #define EXCP_UNKNOWN 0x00 /* Unkwn exception */ 6553a1c1a30SAndrew Turner #define EXCP_TRAP_WFI_WFE 0x01 /* Trapped WFI or WFE */ 656e5acd89cSAndrew Turner #define EXCP_FP_SIMD 0x07 /* VFP/SIMD trap */ 657450f731bSAndrew Turner #define EXCP_BTI 0x0d /* Branch Target Exception */ 658e5acd89cSAndrew Turner #define EXCP_ILL_STATE 0x0e /* Illegal execution state */ 6597af24ff7SEd Schouten #define EXCP_SVC32 0x11 /* SVC trap for AArch32 */ 6607af24ff7SEd Schouten #define EXCP_SVC64 0x15 /* SVC trap for AArch64 */ 6613a1c1a30SAndrew Turner #define EXCP_HVC 0x16 /* HVC trap */ 662e5acd89cSAndrew Turner #define EXCP_MSR 0x18 /* MSR/MRS trap */ 663ffa5bf8bSAndrew Turner #define EXCP_SVE 0x19 /* SVE trap */ 66485b7c566SAndrew Turner #define EXCP_FPAC 0x1c /* Faulting PAC trap */ 665e5acd89cSAndrew Turner #define EXCP_INSN_ABORT_L 0x20 /* Instruction abort, from lower EL */ 666e5acd89cSAndrew Turner #define EXCP_INSN_ABORT 0x21 /* Instruction abort, from same EL */ 667e5acd89cSAndrew Turner #define EXCP_PC_ALIGN 0x22 /* PC alignment fault */ 668e5acd89cSAndrew Turner #define EXCP_DATA_ABORT_L 0x24 /* Data abort, from lower EL */ 669e5acd89cSAndrew Turner #define EXCP_DATA_ABORT 0x25 /* Data abort, from same EL */ 670e5acd89cSAndrew Turner #define EXCP_SP_ALIGN 0x26 /* SP slignment fault */ 671e5acd89cSAndrew Turner #define EXCP_TRAP_FP 0x2c /* Trapped FP exception */ 672e5acd89cSAndrew Turner #define EXCP_SERROR 0x2f /* SError interrupt */ 67305f39d1aSAndrew Turner #define EXCP_BRKPT_EL0 0x30 /* Hardware breakpoint, from same EL */ 674c802b486SAndrew Turner #define EXCP_BRKPT_EL1 0x31 /* Hardware breakpoint, from same EL */ 67587e19994SAndrew Turner #define EXCP_SOFTSTP_EL0 0x32 /* Software Step, from lower EL */ 676e5acd89cSAndrew Turner #define EXCP_SOFTSTP_EL1 0x33 /* Software Step, from same EL */ 677bd012c71SMitchell Horne #define EXCP_WATCHPT_EL0 0x34 /* Watchpoint, from lower EL */ 678e5acd89cSAndrew Turner #define EXCP_WATCHPT_EL1 0x35 /* Watchpoint, from same EL */ 67927340501SOlivier Houchard #define EXCP_BRKPT_32 0x38 /* 32bits breakpoint */ 680e5acd89cSAndrew Turner #define EXCP_BRK 0x3c /* Breakpoint */ 681e5acd89cSAndrew Turner 68247361851SAndrew Turner /* ESR_EL1 */ 68347361851SAndrew Turner #define ESR_EL1_REG MRS_REG_ALT_NAME(ESR_EL1) 68447361851SAndrew Turner #define ESR_EL1_op0 3 68547361851SAndrew Turner #define ESR_EL1_op1 0 68647361851SAndrew Turner #define ESR_EL1_CRn 5 68747361851SAndrew Turner #define ESR_EL1_CRm 2 6888b017284SAndrew Turner #define ESR_EL1_op2 0 68947361851SAndrew Turner 69047361851SAndrew Turner /* ESR_EL12 */ 69147361851SAndrew Turner #define ESR_EL12_REG MRS_REG_ALT_NAME(ESR_EL12) 69247361851SAndrew Turner #define ESR_EL12_op0 3 69347361851SAndrew Turner #define ESR_EL12_op1 5 69447361851SAndrew Turner #define ESR_EL12_CRn 5 69547361851SAndrew Turner #define ESR_EL12_CRm 2 69647361851SAndrew Turner #define ESR_EL12_op2 0 69747361851SAndrew Turner 69847361851SAndrew Turner /* FAR_EL1 */ 69947361851SAndrew Turner #define FAR_EL1_REG MRS_REG_ALT_NAME(FAR_EL1) 70047361851SAndrew Turner #define FAR_EL1_op0 3 70147361851SAndrew Turner #define FAR_EL1_op1 0 70247361851SAndrew Turner #define FAR_EL1_CRn 6 70347361851SAndrew Turner #define FAR_EL1_CRm 0 70447361851SAndrew Turner #define FAR_EL1_op2 0 70547361851SAndrew Turner 70647361851SAndrew Turner /* FAR_EL12 */ 70747361851SAndrew Turner #define FAR_EL12_REG MRS_REG_ALT_NAME(FAR_EL12) 70847361851SAndrew Turner #define FAR_EL12_op0 3 70947361851SAndrew Turner #define FAR_EL12_op1 5 71047361851SAndrew Turner #define FAR_EL12_CRn 6 71147361851SAndrew Turner #define FAR_EL12_CRm 0 71247361851SAndrew Turner #define FAR_EL12_op2 0 71347361851SAndrew Turner 71442cb216aSZbigniew Bodek /* ICC_CTLR_EL1 */ 71542cb216aSZbigniew Bodek #define ICC_CTLR_EL1_EOIMODE (1U << 1) 71642cb216aSZbigniew Bodek 71742cb216aSZbigniew Bodek /* ICC_IAR1_EL1 */ 71842cb216aSZbigniew Bodek #define ICC_IAR1_EL1_SPUR (0x03ff) 71942cb216aSZbigniew Bodek 72042cb216aSZbigniew Bodek /* ICC_IGRPEN0_EL1 */ 72142cb216aSZbigniew Bodek #define ICC_IGRPEN0_EL1_EN (1U << 0) 72242cb216aSZbigniew Bodek 72342cb216aSZbigniew Bodek /* ICC_PMR_EL1 */ 72442cb216aSZbigniew Bodek #define ICC_PMR_EL1_PRIO_MASK (0xFFUL) 72542cb216aSZbigniew Bodek 7268133eda9SZbigniew Bodek /* ICC_SGI1R_EL1 */ 7274dc81560SAndrew Turner #define ICC_SGI1R_EL1 MRS_REG(ICC_SGI1R_EL1) 7284dc81560SAndrew Turner #define ICC_SGI1R_EL1_op0 3 7294dc81560SAndrew Turner #define ICC_SGI1R_EL1_op1 0 7304dc81560SAndrew Turner #define ICC_SGI1R_EL1_CRn 12 7314dc81560SAndrew Turner #define ICC_SGI1R_EL1_CRm 11 7324dc81560SAndrew Turner #define ICC_SGI1R_EL1_op2 5 733419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_TL_SHIFT 0 734419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_TL_MASK (0xffffUL << ICC_SGI1R_EL1_TL_SHIFT) 735419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_TL_VAL(x) ((x) & ICC_SGI1R_EL1_TL_MASK) 7368133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF1_SHIFT 16 737419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF1_MASK (0xfful << ICC_SGI1R_EL1_AFF1_SHIFT) 738419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF1_VAL(x) ((x) & ICC_SGI1R_EL1_AFF1_MASK) 7398133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_SGIID_SHIFT 24 740419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_SGIID_MASK (0xfUL << ICC_SGI1R_EL1_SGIID_SHIFT) 741419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_SGIID_VAL(x) ((x) & ICC_SGI1R_EL1_SGIID_MASK) 7428133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF2_SHIFT 32 743419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF2_MASK (0xfful << ICC_SGI1R_EL1_AFF2_SHIFT) 744419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF2_VAL(x) ((x) & ICC_SGI1R_EL1_AFF2_MASK) 745419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_RS_SHIFT 44 746419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_RS_MASK (0xful << ICC_SGI1R_EL1_RS_SHIFT) 747419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_RS_VAL(x) ((x) & ICC_SGI1R_EL1_RS_MASK) 7488133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF3_SHIFT 48 749419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF3_MASK (0xfful << ICC_SGI1R_EL1_AFF3_SHIFT) 750419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF3_VAL(x) ((x) & ICC_SGI1R_EL1_AFF3_MASK) 7518133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_IRM (0x1UL << 40) 7528133eda9SZbigniew Bodek 75342cb216aSZbigniew Bodek /* ICC_SRE_EL1 */ 75442cb216aSZbigniew Bodek #define ICC_SRE_EL1_SRE (1U << 0) 75542cb216aSZbigniew Bodek 7564baf5db0SAndrew Turner /* ID_AA64AFR0_EL1 */ 7574baf5db0SAndrew Turner #define ID_AA64AFR0_EL1 MRS_REG(ID_AA64AFR0_EL1) 758d6d860c7SAndrew Turner #define ID_AA64AFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64AFR0_EL1) 7594baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_op0 3 7604baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_op1 0 7614baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_CRn 0 7624baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_CRm 5 7634baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_op2 4 7644baf5db0SAndrew Turner 7654baf5db0SAndrew Turner /* ID_AA64AFR1_EL1 */ 7664baf5db0SAndrew Turner #define ID_AA64AFR1_EL1 MRS_REG(ID_AA64AFR1_EL1) 767d6d860c7SAndrew Turner #define ID_AA64AFR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64AFR1_EL1) 7684baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_op0 3 7694baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_op1 0 7704baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_CRn 0 7714baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_CRm 5 7724baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_op2 5 7734baf5db0SAndrew Turner 7745f0a5fefSAndrew Turner /* ID_AA64DFR0_EL1 */ 77510f6680fSAndrew Turner #define ID_AA64DFR0_EL1 MRS_REG(ID_AA64DFR0_EL1) 776d6d860c7SAndrew Turner #define ID_AA64DFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64DFR0_EL1) 7776fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_op0 3 7786fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_op1 0 7796fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_CRn 0 7806fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_CRm 5 7816fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_op2 0 782f1fbf9c3SAndrew Turner #define ID_AA64DFR0_DebugVer_SHIFT 0 783590c3232SAndrew Turner #define ID_AA64DFR0_DebugVer_WIDTH 4 784f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_MASK (UL(0xf) << ID_AA64DFR0_DebugVer_SHIFT) 78544e446a1SAndrew Turner #define ID_AA64DFR0_DebugVer_VAL(x) ((x) & ID_AA64DFR0_DebugVer_MASK) 786f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8 (UL(0x6) << ID_AA64DFR0_DebugVer_SHIFT) 787f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8_VHE (UL(0x7) << ID_AA64DFR0_DebugVer_SHIFT) 788f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8_2 (UL(0x8) << ID_AA64DFR0_DebugVer_SHIFT) 789a7b05eb1SAndrew Turner #define ID_AA64DFR0_DebugVer_8_4 (UL(0x9) << ID_AA64DFR0_DebugVer_SHIFT) 7906fd44e5fSAndrew Turner #define ID_AA64DFR0_DebugVer_8_8 (UL(0xa) << ID_AA64DFR0_DebugVer_SHIFT) 791f1fbf9c3SAndrew Turner #define ID_AA64DFR0_TraceVer_SHIFT 4 792590c3232SAndrew Turner #define ID_AA64DFR0_TraceVer_WIDTH 4 793f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_MASK (UL(0xf) << ID_AA64DFR0_TraceVer_SHIFT) 79444e446a1SAndrew Turner #define ID_AA64DFR0_TraceVer_VAL(x) ((x) & ID_AA64DFR0_TraceVer_MASK) 795f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_NONE (UL(0x0) << ID_AA64DFR0_TraceVer_SHIFT) 796f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_IMPL (UL(0x1) << ID_AA64DFR0_TraceVer_SHIFT) 797f1fbf9c3SAndrew Turner #define ID_AA64DFR0_PMUVer_SHIFT 8 798590c3232SAndrew Turner #define ID_AA64DFR0_PMUVer_WIDTH 4 799f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_MASK (UL(0xf) << ID_AA64DFR0_PMUVer_SHIFT) 80044e446a1SAndrew Turner #define ID_AA64DFR0_PMUVer_VAL(x) ((x) & ID_AA64DFR0_PMUVer_MASK) 801f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_NONE (UL(0x0) << ID_AA64DFR0_PMUVer_SHIFT) 802f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_3 (UL(0x1) << ID_AA64DFR0_PMUVer_SHIFT) 803f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_3_1 (UL(0x4) << ID_AA64DFR0_PMUVer_SHIFT) 804a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMUVer_3_4 (UL(0x5) << ID_AA64DFR0_PMUVer_SHIFT) 805a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMUVer_3_5 (UL(0x6) << ID_AA64DFR0_PMUVer_SHIFT) 8066fd44e5fSAndrew Turner #define ID_AA64DFR0_PMUVer_3_7 (UL(0x7) << ID_AA64DFR0_PMUVer_SHIFT) 8076fd44e5fSAndrew Turner #define ID_AA64DFR0_PMUVer_3_8 (UL(0x8) << ID_AA64DFR0_PMUVer_SHIFT) 808f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_IMPL (UL(0xf) << ID_AA64DFR0_PMUVer_SHIFT) 809f1fbf9c3SAndrew Turner #define ID_AA64DFR0_BRPs_SHIFT 12 810590c3232SAndrew Turner #define ID_AA64DFR0_BRPs_WIDTH 4 811f31c5955SAndrew Turner #define ID_AA64DFR0_BRPs_MASK (UL(0xf) << ID_AA64DFR0_BRPs_SHIFT) 81244e446a1SAndrew Turner #define ID_AA64DFR0_BRPs_VAL(x) \ 813f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_BRPs_SHIFT) & 0xf) + 1) 8146fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_SHIFT 16 815590c3232SAndrew Turner #define ID_AA64DFR0_PMSS_WIDTH 4 8166fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_MASK (UL(0xf) << ID_AA64DFR0_PMSS_SHIFT) 8176fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_VAL(x) ((x) & ID_AA64DFR0_PMSS_MASK) 8186fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_NONE (UL(0x0) << ID_AA64DFR0_PMSS_SHIFT) 8196fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_IMPL (UL(0x1) << ID_AA64DFR0_PMSS_SHIFT) 820f1fbf9c3SAndrew Turner #define ID_AA64DFR0_WRPs_SHIFT 20 821590c3232SAndrew Turner #define ID_AA64DFR0_WRPs_WIDTH 4 822f31c5955SAndrew Turner #define ID_AA64DFR0_WRPs_MASK (UL(0xf) << ID_AA64DFR0_WRPs_SHIFT) 82344e446a1SAndrew Turner #define ID_AA64DFR0_WRPs_VAL(x) \ 824f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_WRPs_SHIFT) & 0xf) + 1) 825f1fbf9c3SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_SHIFT 28 826590c3232SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_WIDTH 4 827f31c5955SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_MASK (UL(0xf) << ID_AA64DFR0_CTX_CMPs_SHIFT) 82844e446a1SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_VAL(x) \ 829f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_CTX_CMPs_SHIFT) & 0xf) + 1) 830f1fbf9c3SAndrew Turner #define ID_AA64DFR0_PMSVer_SHIFT 32 831590c3232SAndrew Turner #define ID_AA64DFR0_PMSVer_WIDTH 4 832f31c5955SAndrew Turner #define ID_AA64DFR0_PMSVer_MASK (UL(0xf) << ID_AA64DFR0_PMSVer_SHIFT) 83344e446a1SAndrew Turner #define ID_AA64DFR0_PMSVer_VAL(x) ((x) & ID_AA64DFR0_PMSVer_MASK) 834f31c5955SAndrew Turner #define ID_AA64DFR0_PMSVer_NONE (UL(0x0) << ID_AA64DFR0_PMSVer_SHIFT) 835a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMSVer_SPE (UL(0x1) << ID_AA64DFR0_PMSVer_SHIFT) 8366fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_1_1 (UL(0x2) << ID_AA64DFR0_PMSVer_SHIFT) 8376fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_1_2 (UL(0x3) << ID_AA64DFR0_PMSVer_SHIFT) 8386fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_1_3 (UL(0x4) << ID_AA64DFR0_PMSVer_SHIFT) 839a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_SHIFT 36 840590c3232SAndrew Turner #define ID_AA64DFR0_DoubleLock_WIDTH 4 841a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_MASK (UL(0xf) << ID_AA64DFR0_DoubleLock_SHIFT) 842a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_VAL(x) ((x) & ID_AA64DFR0_DoubleLock_MASK) 843a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_IMPL (UL(0x0) << ID_AA64DFR0_DoubleLock_SHIFT) 844a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_NONE (UL(0xf) << ID_AA64DFR0_DoubleLock_SHIFT) 845a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_SHIFT 40 846590c3232SAndrew Turner #define ID_AA64DFR0_TraceFilt_WIDTH 4 847a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_MASK (UL(0xf) << ID_AA64DFR0_TraceFilt_SHIFT) 848a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_VAL(x) ((x) & ID_AA64DFR0_TraceFilt_MASK) 849a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_NONE (UL(0x0) << ID_AA64DFR0_TraceFilt_SHIFT) 850a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_8_4 (UL(0x1) << ID_AA64DFR0_TraceFilt_SHIFT) 8516fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_SHIFT 44 852590c3232SAndrew Turner #define ID_AA64DFR0_TraceBuffer_WIDTH 4 8536fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_MASK (UL(0xf) << ID_AA64DFR0_TraceBuffer_SHIFT) 8546fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_VAL(x) ((x) & ID_AA64DFR0_TraceBuffer_MASK) 8556fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_NONE (UL(0x0) << ID_AA64DFR0_TraceBuffer_SHIFT) 8566fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_IMPL (UL(0x1) << ID_AA64DFR0_TraceBuffer_SHIFT) 8576fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_SHIFT 48 858590c3232SAndrew Turner #define ID_AA64DFR0_MTPMU_WIDTH 4 8596fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_MASK (UL(0xf) << ID_AA64DFR0_MTPMU_SHIFT) 8606fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_VAL(x) ((x) & ID_AA64DFR0_MTPMU_MASK) 8616fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_NONE (UL(0x0) << ID_AA64DFR0_MTPMU_SHIFT) 8626fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_IMPL (UL(0x1) << ID_AA64DFR0_MTPMU_SHIFT) 8636fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_NONE_MT_RES0 (UL(0xf) << ID_AA64DFR0_MTPMU_SHIFT) 8646fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_SHIFT 52 865590c3232SAndrew Turner #define ID_AA64DFR0_BRBE_WIDTH 4 8666fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_MASK (UL(0xf) << ID_AA64DFR0_BRBE_SHIFT) 8676fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_VAL(x) ((x) & ID_AA64DFR0_BRBE_MASK) 8686fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_NONE (UL(0x0) << ID_AA64DFR0_BRBE_SHIFT) 8696fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_IMPL (UL(0x1) << ID_AA64DFR0_BRBE_SHIFT) 8706fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_EL3 (UL(0x2) << ID_AA64DFR0_BRBE_SHIFT) 8716fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_SHIFT 60 872590c3232SAndrew Turner #define ID_AA64DFR0_HPMN0_WIDTH 4 8736fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_MASK (UL(0xf) << ID_AA64DFR0_HPMN0_SHIFT) 8746fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_VAL(x) ((x) & ID_AA64DFR0_HPMN0_MASK) 8756fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_CONSTR (UL(0x0) << ID_AA64DFR0_HPMN0_SHIFT) 8766fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_DEFINED (UL(0x1) << ID_AA64DFR0_HPMN0_SHIFT) 8775f0a5fefSAndrew Turner 878419f8fc7SAndrew Turner /* ID_AA64DFR1_EL1 */ 879dd235575SAndrew Turner #define ID_AA64DFR1_EL1 MRS_REG(ID_AA64DFR1_EL1) 880d6d860c7SAndrew Turner #define ID_AA64DFR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64DFR1_EL1) 881419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_op0 3 882419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_op1 0 883419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_CRn 0 884419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_CRm 5 885419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_op2 1 886419f8fc7SAndrew Turner 8875f0a5fefSAndrew Turner /* ID_AA64ISAR0_EL1 */ 88810f6680fSAndrew Turner #define ID_AA64ISAR0_EL1 MRS_REG(ID_AA64ISAR0_EL1) 889d6d860c7SAndrew Turner #define ID_AA64ISAR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64ISAR0_EL1) 8904182f581SAndrew Turner #define ID_AA64ISAR0_EL1_op0 3 8914182f581SAndrew Turner #define ID_AA64ISAR0_EL1_op1 0 8924182f581SAndrew Turner #define ID_AA64ISAR0_EL1_CRn 0 8934182f581SAndrew Turner #define ID_AA64ISAR0_EL1_CRm 6 8944182f581SAndrew Turner #define ID_AA64ISAR0_EL1_op2 0 8955f0a5fefSAndrew Turner #define ID_AA64ISAR0_AES_SHIFT 4 896590c3232SAndrew Turner #define ID_AA64ISAR0_AES_WIDTH 4 897f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_MASK (UL(0xf) << ID_AA64ISAR0_AES_SHIFT) 89844e446a1SAndrew Turner #define ID_AA64ISAR0_AES_VAL(x) ((x) & ID_AA64ISAR0_AES_MASK) 899f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_NONE (UL(0x0) << ID_AA64ISAR0_AES_SHIFT) 900f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_BASE (UL(0x1) << ID_AA64ISAR0_AES_SHIFT) 901f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_PMULL (UL(0x2) << ID_AA64ISAR0_AES_SHIFT) 9025f0a5fefSAndrew Turner #define ID_AA64ISAR0_SHA1_SHIFT 8 903590c3232SAndrew Turner #define ID_AA64ISAR0_SHA1_WIDTH 4 904f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_MASK (UL(0xf) << ID_AA64ISAR0_SHA1_SHIFT) 90544e446a1SAndrew Turner #define ID_AA64ISAR0_SHA1_VAL(x) ((x) & ID_AA64ISAR0_SHA1_MASK) 906f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_NONE (UL(0x0) << ID_AA64ISAR0_SHA1_SHIFT) 907f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_BASE (UL(0x1) << ID_AA64ISAR0_SHA1_SHIFT) 9085f0a5fefSAndrew Turner #define ID_AA64ISAR0_SHA2_SHIFT 12 909590c3232SAndrew Turner #define ID_AA64ISAR0_SHA2_WIDTH 4 910f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_MASK (UL(0xf) << ID_AA64ISAR0_SHA2_SHIFT) 91144e446a1SAndrew Turner #define ID_AA64ISAR0_SHA2_VAL(x) ((x) & ID_AA64ISAR0_SHA2_MASK) 912f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_NONE (UL(0x0) << ID_AA64ISAR0_SHA2_SHIFT) 913f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_BASE (UL(0x1) << ID_AA64ISAR0_SHA2_SHIFT) 914f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_512 (UL(0x2) << ID_AA64ISAR0_SHA2_SHIFT) 9155f0a5fefSAndrew Turner #define ID_AA64ISAR0_CRC32_SHIFT 16 916590c3232SAndrew Turner #define ID_AA64ISAR0_CRC32_WIDTH 4 917f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_MASK (UL(0xf) << ID_AA64ISAR0_CRC32_SHIFT) 91844e446a1SAndrew Turner #define ID_AA64ISAR0_CRC32_VAL(x) ((x) & ID_AA64ISAR0_CRC32_MASK) 919f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_NONE (UL(0x0) << ID_AA64ISAR0_CRC32_SHIFT) 920f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_BASE (UL(0x1) << ID_AA64ISAR0_CRC32_SHIFT) 921f1fbf9c3SAndrew Turner #define ID_AA64ISAR0_Atomic_SHIFT 20 922590c3232SAndrew Turner #define ID_AA64ISAR0_Atomic_WIDTH 4 923f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_MASK (UL(0xf) << ID_AA64ISAR0_Atomic_SHIFT) 92444e446a1SAndrew Turner #define ID_AA64ISAR0_Atomic_VAL(x) ((x) & ID_AA64ISAR0_Atomic_MASK) 925f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_NONE (UL(0x0) << ID_AA64ISAR0_Atomic_SHIFT) 926f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_IMPL (UL(0x2) << ID_AA64ISAR0_Atomic_SHIFT) 9274182f581SAndrew Turner #define ID_AA64ISAR0_TME_SHIFT 24 928590c3232SAndrew Turner #define ID_AA64ISAR0_TME_WIDTH 4 9294182f581SAndrew Turner #define ID_AA64ISAR0_TME_MASK (UL(0xf) << ID_AA64ISAR0_TME_SHIFT) 9304182f581SAndrew Turner #define ID_AA64ISAR0_TME_NONE (UL(0x0) << ID_AA64ISAR0_TME_SHIFT) 9314182f581SAndrew Turner #define ID_AA64ISAR0_TME_IMPL (UL(0x1) << ID_AA64ISAR0_TME_SHIFT) 9322bafd72fSAndrew Turner #define ID_AA64ISAR0_RDM_SHIFT 28 933590c3232SAndrew Turner #define ID_AA64ISAR0_RDM_WIDTH 4 934f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_MASK (UL(0xf) << ID_AA64ISAR0_RDM_SHIFT) 93544e446a1SAndrew Turner #define ID_AA64ISAR0_RDM_VAL(x) ((x) & ID_AA64ISAR0_RDM_MASK) 936f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_NONE (UL(0x0) << ID_AA64ISAR0_RDM_SHIFT) 937f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_IMPL (UL(0x1) << ID_AA64ISAR0_RDM_SHIFT) 938ca289945SAndrew Turner #define ID_AA64ISAR0_SHA3_SHIFT 32 939590c3232SAndrew Turner #define ID_AA64ISAR0_SHA3_WIDTH 4 940f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_MASK (UL(0xf) << ID_AA64ISAR0_SHA3_SHIFT) 94144e446a1SAndrew Turner #define ID_AA64ISAR0_SHA3_VAL(x) ((x) & ID_AA64ISAR0_SHA3_MASK) 942f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_NONE (UL(0x0) << ID_AA64ISAR0_SHA3_SHIFT) 943f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_IMPL (UL(0x1) << ID_AA64ISAR0_SHA3_SHIFT) 944ca289945SAndrew Turner #define ID_AA64ISAR0_SM3_SHIFT 36 945590c3232SAndrew Turner #define ID_AA64ISAR0_SM3_WIDTH 4 946f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_MASK (UL(0xf) << ID_AA64ISAR0_SM3_SHIFT) 94744e446a1SAndrew Turner #define ID_AA64ISAR0_SM3_VAL(x) ((x) & ID_AA64ISAR0_SM3_MASK) 948f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_NONE (UL(0x0) << ID_AA64ISAR0_SM3_SHIFT) 949f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_IMPL (UL(0x1) << ID_AA64ISAR0_SM3_SHIFT) 950ca289945SAndrew Turner #define ID_AA64ISAR0_SM4_SHIFT 40 951590c3232SAndrew Turner #define ID_AA64ISAR0_SM4_WIDTH 4 952f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_MASK (UL(0xf) << ID_AA64ISAR0_SM4_SHIFT) 95344e446a1SAndrew Turner #define ID_AA64ISAR0_SM4_VAL(x) ((x) & ID_AA64ISAR0_SM4_MASK) 954f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_NONE (UL(0x0) << ID_AA64ISAR0_SM4_SHIFT) 955f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_IMPL (UL(0x1) << ID_AA64ISAR0_SM4_SHIFT) 9565bb9cd61SAndrew Turner #define ID_AA64ISAR0_DP_SHIFT 44 957590c3232SAndrew Turner #define ID_AA64ISAR0_DP_WIDTH 4 958f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_MASK (UL(0xf) << ID_AA64ISAR0_DP_SHIFT) 95944e446a1SAndrew Turner #define ID_AA64ISAR0_DP_VAL(x) ((x) & ID_AA64ISAR0_DP_MASK) 960f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_NONE (UL(0x0) << ID_AA64ISAR0_DP_SHIFT) 961f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_IMPL (UL(0x1) << ID_AA64ISAR0_DP_SHIFT) 96261949736SMitchell Horne #define ID_AA64ISAR0_FHM_SHIFT 48 963590c3232SAndrew Turner #define ID_AA64ISAR0_FHM_WIDTH 4 96461949736SMitchell Horne #define ID_AA64ISAR0_FHM_MASK (UL(0xf) << ID_AA64ISAR0_FHM_SHIFT) 96561949736SMitchell Horne #define ID_AA64ISAR0_FHM_VAL(x) ((x) & ID_AA64ISAR0_FHM_MASK) 96661949736SMitchell Horne #define ID_AA64ISAR0_FHM_NONE (UL(0x0) << ID_AA64ISAR0_FHM_SHIFT) 96761949736SMitchell Horne #define ID_AA64ISAR0_FHM_IMPL (UL(0x1) << ID_AA64ISAR0_FHM_SHIFT) 96861949736SMitchell Horne #define ID_AA64ISAR0_TS_SHIFT 52 969590c3232SAndrew Turner #define ID_AA64ISAR0_TS_WIDTH 4 97061949736SMitchell Horne #define ID_AA64ISAR0_TS_MASK (UL(0xf) << ID_AA64ISAR0_TS_SHIFT) 97161949736SMitchell Horne #define ID_AA64ISAR0_TS_VAL(x) ((x) & ID_AA64ISAR0_TS_MASK) 97261949736SMitchell Horne #define ID_AA64ISAR0_TS_NONE (UL(0x0) << ID_AA64ISAR0_TS_SHIFT) 97361949736SMitchell Horne #define ID_AA64ISAR0_TS_CondM_8_4 (UL(0x1) << ID_AA64ISAR0_TS_SHIFT) 97461949736SMitchell Horne #define ID_AA64ISAR0_TS_CondM_8_5 (UL(0x2) << ID_AA64ISAR0_TS_SHIFT) 97561949736SMitchell Horne #define ID_AA64ISAR0_TLB_SHIFT 56 976590c3232SAndrew Turner #define ID_AA64ISAR0_TLB_WIDTH 4 97761949736SMitchell Horne #define ID_AA64ISAR0_TLB_MASK (UL(0xf) << ID_AA64ISAR0_TLB_SHIFT) 97861949736SMitchell Horne #define ID_AA64ISAR0_TLB_VAL(x) ((x) & ID_AA64ISAR0_TLB_MASK) 97961949736SMitchell Horne #define ID_AA64ISAR0_TLB_NONE (UL(0x0) << ID_AA64ISAR0_TLB_SHIFT) 98061949736SMitchell Horne #define ID_AA64ISAR0_TLB_TLBIOS (UL(0x1) << ID_AA64ISAR0_TLB_SHIFT) 98161949736SMitchell Horne #define ID_AA64ISAR0_TLB_TLBIOSR (UL(0x2) << ID_AA64ISAR0_TLB_SHIFT) 98261949736SMitchell Horne #define ID_AA64ISAR0_RNDR_SHIFT 60 983590c3232SAndrew Turner #define ID_AA64ISAR0_RNDR_WIDTH 4 98461949736SMitchell Horne #define ID_AA64ISAR0_RNDR_MASK (UL(0xf) << ID_AA64ISAR0_RNDR_SHIFT) 98561949736SMitchell Horne #define ID_AA64ISAR0_RNDR_VAL(x) ((x) & ID_AA64ISAR0_RNDR_MASK) 98661949736SMitchell Horne #define ID_AA64ISAR0_RNDR_NONE (UL(0x0) << ID_AA64ISAR0_RNDR_SHIFT) 98761949736SMitchell Horne #define ID_AA64ISAR0_RNDR_IMPL (UL(0x1) << ID_AA64ISAR0_RNDR_SHIFT) 9885f0a5fefSAndrew Turner 989f45dc694SAndrew Turner /* ID_AA64ISAR1_EL1 */ 99010f6680fSAndrew Turner #define ID_AA64ISAR1_EL1 MRS_REG(ID_AA64ISAR1_EL1) 991d6d860c7SAndrew Turner #define ID_AA64ISAR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64ISAR1_EL1) 992de013099SAndrew Turner #define ID_AA64ISAR1_EL1_op0 3 993de013099SAndrew Turner #define ID_AA64ISAR1_EL1_op1 0 994de013099SAndrew Turner #define ID_AA64ISAR1_EL1_CRn 0 995de013099SAndrew Turner #define ID_AA64ISAR1_EL1_CRm 6 996de013099SAndrew Turner #define ID_AA64ISAR1_EL1_op2 1 9971a2e5c00SAndrew Turner #define ID_AA64ISAR1_DPB_SHIFT 0 998590c3232SAndrew Turner #define ID_AA64ISAR1_DPB_WIDTH 4 999f31c5955SAndrew Turner #define ID_AA64ISAR1_DPB_MASK (UL(0xf) << ID_AA64ISAR1_DPB_SHIFT) 100044e446a1SAndrew Turner #define ID_AA64ISAR1_DPB_VAL(x) ((x) & ID_AA64ISAR1_DPB_MASK) 1001f31c5955SAndrew Turner #define ID_AA64ISAR1_DPB_NONE (UL(0x0) << ID_AA64ISAR1_DPB_SHIFT) 100261949736SMitchell Horne #define ID_AA64ISAR1_DPB_DCCVAP (UL(0x1) << ID_AA64ISAR1_DPB_SHIFT) 100361949736SMitchell Horne #define ID_AA64ISAR1_DPB_DCCVADP (UL(0x2) << ID_AA64ISAR1_DPB_SHIFT) 1004ca289945SAndrew Turner #define ID_AA64ISAR1_APA_SHIFT 4 1005590c3232SAndrew Turner #define ID_AA64ISAR1_APA_WIDTH 4 1006f31c5955SAndrew Turner #define ID_AA64ISAR1_APA_MASK (UL(0xf) << ID_AA64ISAR1_APA_SHIFT) 100744e446a1SAndrew Turner #define ID_AA64ISAR1_APA_VAL(x) ((x) & ID_AA64ISAR1_APA_MASK) 1008f31c5955SAndrew Turner #define ID_AA64ISAR1_APA_NONE (UL(0x0) << ID_AA64ISAR1_APA_SHIFT) 1009a7b05eb1SAndrew Turner #define ID_AA64ISAR1_APA_PAC (UL(0x1) << ID_AA64ISAR1_APA_SHIFT) 1010a7b05eb1SAndrew Turner #define ID_AA64ISAR1_APA_EPAC (UL(0x2) << ID_AA64ISAR1_APA_SHIFT) 1011e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_EPAC2 (UL(0x3) << ID_AA64ISAR1_APA_SHIFT) 1012e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_FPAC (UL(0x4) << ID_AA64ISAR1_APA_SHIFT) 1013e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR1_APA_SHIFT) 1014ca289945SAndrew Turner #define ID_AA64ISAR1_API_SHIFT 8 1015590c3232SAndrew Turner #define ID_AA64ISAR1_API_WIDTH 4 1016f31c5955SAndrew Turner #define ID_AA64ISAR1_API_MASK (UL(0xf) << ID_AA64ISAR1_API_SHIFT) 101744e446a1SAndrew Turner #define ID_AA64ISAR1_API_VAL(x) ((x) & ID_AA64ISAR1_API_MASK) 1018f31c5955SAndrew Turner #define ID_AA64ISAR1_API_NONE (UL(0x0) << ID_AA64ISAR1_API_SHIFT) 1019a7b05eb1SAndrew Turner #define ID_AA64ISAR1_API_PAC (UL(0x1) << ID_AA64ISAR1_API_SHIFT) 1020a7b05eb1SAndrew Turner #define ID_AA64ISAR1_API_EPAC (UL(0x2) << ID_AA64ISAR1_API_SHIFT) 1021e3f70874SAndrew Turner #define ID_AA64ISAR1_API_EPAC2 (UL(0x3) << ID_AA64ISAR1_API_SHIFT) 1022e3f70874SAndrew Turner #define ID_AA64ISAR1_API_FPAC (UL(0x4) << ID_AA64ISAR1_API_SHIFT) 1023e3f70874SAndrew Turner #define ID_AA64ISAR1_API_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR1_API_SHIFT) 1024ca289945SAndrew Turner #define ID_AA64ISAR1_JSCVT_SHIFT 12 1025590c3232SAndrew Turner #define ID_AA64ISAR1_JSCVT_WIDTH 4 1026f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_MASK (UL(0xf) << ID_AA64ISAR1_JSCVT_SHIFT) 102744e446a1SAndrew Turner #define ID_AA64ISAR1_JSCVT_VAL(x) ((x) & ID_AA64ISAR1_JSCVT_MASK) 1028f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_NONE (UL(0x0) << ID_AA64ISAR1_JSCVT_SHIFT) 1029f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_IMPL (UL(0x1) << ID_AA64ISAR1_JSCVT_SHIFT) 1030ca289945SAndrew Turner #define ID_AA64ISAR1_FCMA_SHIFT 16 1031590c3232SAndrew Turner #define ID_AA64ISAR1_FCMA_WIDTH 4 1032f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_MASK (UL(0xf) << ID_AA64ISAR1_FCMA_SHIFT) 103344e446a1SAndrew Turner #define ID_AA64ISAR1_FCMA_VAL(x) ((x) & ID_AA64ISAR1_FCMA_MASK) 1034f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_NONE (UL(0x0) << ID_AA64ISAR1_FCMA_SHIFT) 1035f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_IMPL (UL(0x1) << ID_AA64ISAR1_FCMA_SHIFT) 1036ca289945SAndrew Turner #define ID_AA64ISAR1_LRCPC_SHIFT 20 1037590c3232SAndrew Turner #define ID_AA64ISAR1_LRCPC_WIDTH 4 1038f31c5955SAndrew Turner #define ID_AA64ISAR1_LRCPC_MASK (UL(0xf) << ID_AA64ISAR1_LRCPC_SHIFT) 103944e446a1SAndrew Turner #define ID_AA64ISAR1_LRCPC_VAL(x) ((x) & ID_AA64ISAR1_LRCPC_MASK) 1040f31c5955SAndrew Turner #define ID_AA64ISAR1_LRCPC_NONE (UL(0x0) << ID_AA64ISAR1_LRCPC_SHIFT) 104161949736SMitchell Horne #define ID_AA64ISAR1_LRCPC_RCPC_8_3 (UL(0x1) << ID_AA64ISAR1_LRCPC_SHIFT) 104261949736SMitchell Horne #define ID_AA64ISAR1_LRCPC_RCPC_8_4 (UL(0x2) << ID_AA64ISAR1_LRCPC_SHIFT) 1043ca289945SAndrew Turner #define ID_AA64ISAR1_GPA_SHIFT 24 1044590c3232SAndrew Turner #define ID_AA64ISAR1_GPA_WIDTH 4 1045f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_MASK (UL(0xf) << ID_AA64ISAR1_GPA_SHIFT) 104644e446a1SAndrew Turner #define ID_AA64ISAR1_GPA_VAL(x) ((x) & ID_AA64ISAR1_GPA_MASK) 1047f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_NONE (UL(0x0) << ID_AA64ISAR1_GPA_SHIFT) 1048f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_IMPL (UL(0x1) << ID_AA64ISAR1_GPA_SHIFT) 1049ca289945SAndrew Turner #define ID_AA64ISAR1_GPI_SHIFT 28 1050590c3232SAndrew Turner #define ID_AA64ISAR1_GPI_WIDTH 4 1051f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_MASK (UL(0xf) << ID_AA64ISAR1_GPI_SHIFT) 105244e446a1SAndrew Turner #define ID_AA64ISAR1_GPI_VAL(x) ((x) & ID_AA64ISAR1_GPI_MASK) 1053f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_NONE (UL(0x0) << ID_AA64ISAR1_GPI_SHIFT) 1054f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_IMPL (UL(0x1) << ID_AA64ISAR1_GPI_SHIFT) 105561949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_SHIFT 32 1056590c3232SAndrew Turner #define ID_AA64ISAR1_FRINTTS_WIDTH 4 105761949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_MASK (UL(0xf) << ID_AA64ISAR1_FRINTTS_SHIFT) 105861949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_VAL(x) ((x) & ID_AA64ISAR1_FRINTTS_MASK) 105961949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_NONE (UL(0x0) << ID_AA64ISAR1_FRINTTS_SHIFT) 106061949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_IMPL (UL(0x1) << ID_AA64ISAR1_FRINTTS_SHIFT) 106161949736SMitchell Horne #define ID_AA64ISAR1_SB_SHIFT 36 1062590c3232SAndrew Turner #define ID_AA64ISAR1_SB_WIDTH 4 106361949736SMitchell Horne #define ID_AA64ISAR1_SB_MASK (UL(0xf) << ID_AA64ISAR1_SB_SHIFT) 106461949736SMitchell Horne #define ID_AA64ISAR1_SB_VAL(x) ((x) & ID_AA64ISAR1_SB_MASK) 106561949736SMitchell Horne #define ID_AA64ISAR1_SB_NONE (UL(0x0) << ID_AA64ISAR1_SB_SHIFT) 106661949736SMitchell Horne #define ID_AA64ISAR1_SB_IMPL (UL(0x1) << ID_AA64ISAR1_SB_SHIFT) 106761949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_SHIFT 40 1068590c3232SAndrew Turner #define ID_AA64ISAR1_SPECRES_WIDTH 4 106961949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_MASK (UL(0xf) << ID_AA64ISAR1_SPECRES_SHIFT) 107061949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_VAL(x) ((x) & ID_AA64ISAR1_SPECRES_MASK) 107161949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_NONE (UL(0x0) << ID_AA64ISAR1_SPECRES_SHIFT) 107261949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_IMPL (UL(0x1) << ID_AA64ISAR1_SPECRES_SHIFT) 107361949736SMitchell Horne #define ID_AA64ISAR1_BF16_SHIFT 44 1074590c3232SAndrew Turner #define ID_AA64ISAR1_BF16_WIDTH 4 107561949736SMitchell Horne #define ID_AA64ISAR1_BF16_MASK (UL(0xf) << ID_AA64ISAR1_BF16_SHIFT) 107661949736SMitchell Horne #define ID_AA64ISAR1_BF16_VAL(x) ((x) & ID_AA64ISAR1_BF16_MASK) 107761949736SMitchell Horne #define ID_AA64ISAR1_BF16_NONE (UL(0x0) << ID_AA64ISAR1_BF16_SHIFT) 107861949736SMitchell Horne #define ID_AA64ISAR1_BF16_IMPL (UL(0x1) << ID_AA64ISAR1_BF16_SHIFT) 1079de013099SAndrew Turner #define ID_AA64ISAR1_BF16_EBF (UL(0x2) << ID_AA64ISAR1_BF16_SHIFT) 108061949736SMitchell Horne #define ID_AA64ISAR1_DGH_SHIFT 48 1081590c3232SAndrew Turner #define ID_AA64ISAR1_DGH_WIDTH 4 108261949736SMitchell Horne #define ID_AA64ISAR1_DGH_MASK (UL(0xf) << ID_AA64ISAR1_DGH_SHIFT) 108361949736SMitchell Horne #define ID_AA64ISAR1_DGH_VAL(x) ((x) & ID_AA64ISAR1_DGH_MASK) 108461949736SMitchell Horne #define ID_AA64ISAR1_DGH_NONE (UL(0x0) << ID_AA64ISAR1_DGH_SHIFT) 108561949736SMitchell Horne #define ID_AA64ISAR1_DGH_IMPL (UL(0x1) << ID_AA64ISAR1_DGH_SHIFT) 108661949736SMitchell Horne #define ID_AA64ISAR1_I8MM_SHIFT 52 1087590c3232SAndrew Turner #define ID_AA64ISAR1_I8MM_WIDTH 4 108861949736SMitchell Horne #define ID_AA64ISAR1_I8MM_MASK (UL(0xf) << ID_AA64ISAR1_I8MM_SHIFT) 108961949736SMitchell Horne #define ID_AA64ISAR1_I8MM_VAL(x) ((x) & ID_AA64ISAR1_I8MM_MASK) 109061949736SMitchell Horne #define ID_AA64ISAR1_I8MM_NONE (UL(0x0) << ID_AA64ISAR1_I8MM_SHIFT) 109161949736SMitchell Horne #define ID_AA64ISAR1_I8MM_IMPL (UL(0x1) << ID_AA64ISAR1_I8MM_SHIFT) 1092de013099SAndrew Turner #define ID_AA64ISAR1_XS_SHIFT 56 1093590c3232SAndrew Turner #define ID_AA64ISAR1_XS_WIDTH 4 1094de013099SAndrew Turner #define ID_AA64ISAR1_XS_MASK (UL(0xf) << ID_AA64ISAR1_XS_SHIFT) 1095de013099SAndrew Turner #define ID_AA64ISAR1_XS_VAL(x) ((x) & ID_AA64ISAR1_XS_MASK) 1096de013099SAndrew Turner #define ID_AA64ISAR1_XS_NONE (UL(0x0) << ID_AA64ISAR1_XS_SHIFT) 1097de013099SAndrew Turner #define ID_AA64ISAR1_XS_IMPL (UL(0x1) << ID_AA64ISAR1_XS_SHIFT) 1098de013099SAndrew Turner #define ID_AA64ISAR1_LS64_SHIFT 60 1099590c3232SAndrew Turner #define ID_AA64ISAR1_LS64_WIDTH 4 1100de013099SAndrew Turner #define ID_AA64ISAR1_LS64_MASK (UL(0xf) << ID_AA64ISAR1_LS64_SHIFT) 1101de013099SAndrew Turner #define ID_AA64ISAR1_LS64_VAL(x) ((x) & ID_AA64ISAR1_LS64_MASK) 1102de013099SAndrew Turner #define ID_AA64ISAR1_LS64_NONE (UL(0x0) << ID_AA64ISAR1_LS64_SHIFT) 1103de013099SAndrew Turner #define ID_AA64ISAR1_LS64_IMPL (UL(0x1) << ID_AA64ISAR1_LS64_SHIFT) 1104de013099SAndrew Turner #define ID_AA64ISAR1_LS64_V (UL(0x2) << ID_AA64ISAR1_LS64_SHIFT) 1105de013099SAndrew Turner #define ID_AA64ISAR1_LS64_ACCDATA (UL(0x3) << ID_AA64ISAR1_LS64_SHIFT) 1106f45dc694SAndrew Turner 1107a8fac0ceSAndrew Turner /* ID_AA64ISAR2_EL1 */ 1108a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1 MRS_REG(ID_AA64ISAR2_EL1) 1109d6d860c7SAndrew Turner #define ID_AA64ISAR2_EL1_REG MRS_REG_ALT_NAME(ID_AA64ISAR2_EL1) 1110a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op0 3 1111a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op1 0 1112a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_CRn 0 1113a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_CRm 6 1114a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op2 2 1115a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_SHIFT 0 1116590c3232SAndrew Turner #define ID_AA64ISAR2_WFxT_WIDTH 4 1117a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_MASK (UL(0xf) << ID_AA64ISAR2_WFxT_SHIFT) 1118a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_VAL(x) ((x) & ID_AA64ISAR2_WFxT_MASK) 1119a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_NONE (UL(0x0) << ID_AA64ISAR2_WFxT_SHIFT) 1120a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_IMPL (UL(0x1) << ID_AA64ISAR2_WFxT_SHIFT) 1121a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_SHIFT 4 1122590c3232SAndrew Turner #define ID_AA64ISAR2_RPRES_WIDTH 4 1123a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_MASK (UL(0xf) << ID_AA64ISAR2_RPRES_SHIFT) 1124a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_VAL(x) ((x) & ID_AA64ISAR2_RPRES_MASK) 1125a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_NONE (UL(0x0) << ID_AA64ISAR2_RPRES_SHIFT) 1126a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_IMPL (UL(0x1) << ID_AA64ISAR2_RPRES_SHIFT) 1127a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_SHIFT 8 1128590c3232SAndrew Turner #define ID_AA64ISAR2_GPA3_WIDTH 4 1129a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_MASK (UL(0xf) << ID_AA64ISAR2_GPA3_SHIFT) 1130a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_VAL(x) ((x) & ID_AA64ISAR2_GPA3_MASK) 1131a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_NONE (UL(0x0) << ID_AA64ISAR2_GPA3_SHIFT) 1132a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_IMPL (UL(0x1) << ID_AA64ISAR2_GPA3_SHIFT) 1133a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_SHIFT 12 1134590c3232SAndrew Turner #define ID_AA64ISAR2_APA3_WIDTH 4 1135a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_MASK (UL(0xf) << ID_AA64ISAR2_APA3_SHIFT) 1136a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_VAL(x) ((x) & ID_AA64ISAR2_APA3_MASK) 1137a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_NONE (UL(0x0) << ID_AA64ISAR2_APA3_SHIFT) 1138a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_PAC (UL(0x1) << ID_AA64ISAR2_APA3_SHIFT) 1139a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_EPAC (UL(0x2) << ID_AA64ISAR2_APA3_SHIFT) 1140a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_EPAC2 (UL(0x3) << ID_AA64ISAR2_APA3_SHIFT) 1141a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_FPAC (UL(0x4) << ID_AA64ISAR2_APA3_SHIFT) 1142a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR2_APA3_SHIFT) 1143a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_SHIFT 16 1144590c3232SAndrew Turner #define ID_AA64ISAR2_MOPS_WIDTH 4 1145a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_MASK (UL(0xf) << ID_AA64ISAR2_MOPS_SHIFT) 1146a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_VAL(x) ((x) & ID_AA64ISAR2_MOPS_MASK) 1147a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_NONE (UL(0x0) << ID_AA64ISAR2_MOPS_SHIFT) 1148a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_IMPL (UL(0x1) << ID_AA64ISAR2_MOPS_SHIFT) 1149a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_SHIFT 20 1150590c3232SAndrew Turner #define ID_AA64ISAR2_BC_WIDTH 4 1151a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_MASK (UL(0xf) << ID_AA64ISAR2_BC_SHIFT) 1152a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_VAL(x) ((x) & ID_AA64ISAR2_BC_MASK) 1153a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_NONE (UL(0x0) << ID_AA64ISAR2_BC_SHIFT) 1154a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_IMPL (UL(0x1) << ID_AA64ISAR2_BC_SHIFT) 1155a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_SHIFT 28 1156590c3232SAndrew Turner #define ID_AA64ISAR2_PAC_frac_WIDTH 4 1157a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_MASK (UL(0xf) << ID_AA64ISAR2_PAC_frac_SHIFT) 1158a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_VAL(x) ((x) & ID_AA64ISAR2_PAC_frac_MASK) 1159a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_NONE (UL(0x0) << ID_AA64ISAR2_PAC_frac_SHIFT) 1160a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_IMPL (UL(0x1) << ID_AA64ISAR2_PAC_frac_SHIFT) 1161a8fac0ceSAndrew Turner 11625f0a5fefSAndrew Turner /* ID_AA64MMFR0_EL1 */ 116310f6680fSAndrew Turner #define ID_AA64MMFR0_EL1 MRS_REG(ID_AA64MMFR0_EL1) 1164d6d860c7SAndrew Turner #define ID_AA64MMFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR0_EL1) 1165b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_op0 3 1166b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_op1 0 1167b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_CRn 0 1168b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_CRm 7 1169b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_op2 0 1170f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_PARange_SHIFT 0 1171590c3232SAndrew Turner #define ID_AA64MMFR0_PARange_WIDTH 4 1172f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_MASK (UL(0xf) << ID_AA64MMFR0_PARange_SHIFT) 117344e446a1SAndrew Turner #define ID_AA64MMFR0_PARange_VAL(x) ((x) & ID_AA64MMFR0_PARange_MASK) 1174f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4G (UL(0x0) << ID_AA64MMFR0_PARange_SHIFT) 1175f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_64G (UL(0x1) << ID_AA64MMFR0_PARange_SHIFT) 1176f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_1T (UL(0x2) << ID_AA64MMFR0_PARange_SHIFT) 1177f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4T (UL(0x3) << ID_AA64MMFR0_PARange_SHIFT) 1178f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_16T (UL(0x4) << ID_AA64MMFR0_PARange_SHIFT) 1179f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_256T (UL(0x5) << ID_AA64MMFR0_PARange_SHIFT) 1180f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4P (UL(0x6) << ID_AA64MMFR0_PARange_SHIFT) 1181f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_ASIDBits_SHIFT 4 1182590c3232SAndrew Turner #define ID_AA64MMFR0_ASIDBits_WIDTH 4 1183f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_MASK (UL(0xf) << ID_AA64MMFR0_ASIDBits_SHIFT) 118444e446a1SAndrew Turner #define ID_AA64MMFR0_ASIDBits_VAL(x) ((x) & ID_AA64MMFR0_ASIDBits_MASK) 1185f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_8 (UL(0x0) << ID_AA64MMFR0_ASIDBits_SHIFT) 1186f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_16 (UL(0x2) << ID_AA64MMFR0_ASIDBits_SHIFT) 1187f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_BigEnd_SHIFT 8 1188590c3232SAndrew Turner #define ID_AA64MMFR0_BigEnd_WIDTH 4 1189f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_MASK (UL(0xf) << ID_AA64MMFR0_BigEnd_SHIFT) 119044e446a1SAndrew Turner #define ID_AA64MMFR0_BigEnd_VAL(x) ((x) & ID_AA64MMFR0_BigEnd_MASK) 1191f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_FIXED (UL(0x0) << ID_AA64MMFR0_BigEnd_SHIFT) 1192f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_MIXED (UL(0x1) << ID_AA64MMFR0_BigEnd_SHIFT) 1193f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_SNSMem_SHIFT 12 1194590c3232SAndrew Turner #define ID_AA64MMFR0_SNSMem_WIDTH 4 1195f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_MASK (UL(0xf) << ID_AA64MMFR0_SNSMem_SHIFT) 119644e446a1SAndrew Turner #define ID_AA64MMFR0_SNSMem_VAL(x) ((x) & ID_AA64MMFR0_SNSMem_MASK) 1197f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_NONE (UL(0x0) << ID_AA64MMFR0_SNSMem_SHIFT) 1198f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_DISTINCT (UL(0x1) << ID_AA64MMFR0_SNSMem_SHIFT) 1199f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_SHIFT 16 1200590c3232SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_WIDTH 4 1201f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_MASK (UL(0xf) << ID_AA64MMFR0_BigEndEL0_SHIFT) 120244e446a1SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_VAL(x) ((x) & ID_AA64MMFR0_BigEndEL0_MASK) 1203f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_FIXED (UL(0x0) << ID_AA64MMFR0_BigEndEL0_SHIFT) 1204f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_MIXED (UL(0x1) << ID_AA64MMFR0_BigEndEL0_SHIFT) 1205f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran16_SHIFT 20 1206590c3232SAndrew Turner #define ID_AA64MMFR0_TGran16_WIDTH 4 1207f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_MASK (UL(0xf) << ID_AA64MMFR0_TGran16_SHIFT) 120844e446a1SAndrew Turner #define ID_AA64MMFR0_TGran16_VAL(x) ((x) & ID_AA64MMFR0_TGran16_MASK) 1209f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_NONE (UL(0x0) << ID_AA64MMFR0_TGran16_SHIFT) 1210f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_IMPL (UL(0x1) << ID_AA64MMFR0_TGran16_SHIFT) 1211b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran16_LPA2 (UL(0x2) << ID_AA64MMFR0_TGran16_SHIFT) 1212f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran64_SHIFT 24 1213590c3232SAndrew Turner #define ID_AA64MMFR0_TGran64_WIDTH 4 1214f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_MASK (UL(0xf) << ID_AA64MMFR0_TGran64_SHIFT) 121544e446a1SAndrew Turner #define ID_AA64MMFR0_TGran64_VAL(x) ((x) & ID_AA64MMFR0_TGran64_MASK) 1216f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_IMPL (UL(0x0) << ID_AA64MMFR0_TGran64_SHIFT) 1217f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_NONE (UL(0xf) << ID_AA64MMFR0_TGran64_SHIFT) 1218f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran4_SHIFT 28 1219590c3232SAndrew Turner #define ID_AA64MMFR0_TGran4_WIDTH 4 1220f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_MASK (UL(0xf) << ID_AA64MMFR0_TGran4_SHIFT) 122144e446a1SAndrew Turner #define ID_AA64MMFR0_TGran4_VAL(x) ((x) & ID_AA64MMFR0_TGran4_MASK) 1222f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_IMPL (UL(0x0) << ID_AA64MMFR0_TGran4_SHIFT) 1223b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran4_LPA2 (UL(0x1) << ID_AA64MMFR0_TGran4_SHIFT) 1224f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_NONE (UL(0xf) << ID_AA64MMFR0_TGran4_SHIFT) 1225a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_SHIFT 32 1226590c3232SAndrew Turner #define ID_AA64MMFR0_TGran16_2_WIDTH 4 1227a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran16_2_SHIFT) 1228a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_VAL(x) ((x) & ID_AA64MMFR0_TGran16_2_MASK) 1229a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_TGran16 (UL(0x0) << ID_AA64MMFR0_TGran16_2_SHIFT) 1230a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran16_2_SHIFT) 1231a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran16_2_SHIFT) 1232b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran16_2_LPA2 (UL(0x3) << ID_AA64MMFR0_TGran16_2_SHIFT) 1233a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_SHIFT 36 1234590c3232SAndrew Turner #define ID_AA64MMFR0_TGran64_2_WIDTH 4 1235a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran64_2_SHIFT) 1236a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_VAL(x) ((x) & ID_AA64MMFR0_TGran64_2_MASK) 1237a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_TGran64 (UL(0x0) << ID_AA64MMFR0_TGran64_2_SHIFT) 1238a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran64_2_SHIFT) 1239a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran64_2_SHIFT) 1240a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_SHIFT 40 1241590c3232SAndrew Turner #define ID_AA64MMFR0_TGran4_2_WIDTH 4 1242a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran4_2_SHIFT) 1243a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_VAL(x) ((x) & ID_AA64MMFR0_TGran4_2_MASK) 1244a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_TGran4 (UL(0x0) << ID_AA64MMFR0_TGran4_2_SHIFT) 1245a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran4_2_SHIFT) 1246a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran4_2_SHIFT) 1247b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran4_2_LPA2 (UL(0x3) << ID_AA64MMFR0_TGran4_2_SHIFT) 1248a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_SHIFT 44 1249590c3232SAndrew Turner #define ID_AA64MMFR0_ExS_WIDTH 4 1250a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_MASK (UL(0xf) << ID_AA64MMFR0_ExS_SHIFT) 1251a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_VAL(x) ((x) & ID_AA64MMFR0_ExS_MASK) 1252a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_ALL (UL(0x0) << ID_AA64MMFR0_ExS_SHIFT) 1253a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_IMPL (UL(0x1) << ID_AA64MMFR0_ExS_SHIFT) 1254b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_SHIFT 56 1255590c3232SAndrew Turner #define ID_AA64MMFR0_FGT_WIDTH 4 1256b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_MASK (UL(0xf) << ID_AA64MMFR0_FGT_SHIFT) 1257b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_VAL(x) ((x) & ID_AA64MMFR0_FGT_MASK) 1258b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_NONE (UL(0x0) << ID_AA64MMFR0_FGT_SHIFT) 1259b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_IMPL (UL(0x1) << ID_AA64MMFR0_FGT_SHIFT) 1260b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_SHIFT 60 1261590c3232SAndrew Turner #define ID_AA64MMFR0_ECV_WIDTH 4 1262b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_MASK (UL(0xf) << ID_AA64MMFR0_ECV_SHIFT) 1263b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_VAL(x) ((x) & ID_AA64MMFR0_ECV_MASK) 1264b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_NONE (UL(0x0) << ID_AA64MMFR0_ECV_SHIFT) 1265b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_IMPL (UL(0x1) << ID_AA64MMFR0_ECV_SHIFT) 1266b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_CNTHCTL (UL(0x2) << ID_AA64MMFR0_ECV_SHIFT) 12675f0a5fefSAndrew Turner 12682bafd72fSAndrew Turner /* ID_AA64MMFR1_EL1 */ 126910f6680fSAndrew Turner #define ID_AA64MMFR1_EL1 MRS_REG(ID_AA64MMFR1_EL1) 1270d6d860c7SAndrew Turner #define ID_AA64MMFR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR1_EL1) 1271b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_op0 3 1272b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_op1 0 1273b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_CRn 0 1274b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_CRm 7 1275b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_op2 1 12762bafd72fSAndrew Turner #define ID_AA64MMFR1_HAFDBS_SHIFT 0 1277590c3232SAndrew Turner #define ID_AA64MMFR1_HAFDBS_WIDTH 4 1278f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_MASK (UL(0xf) << ID_AA64MMFR1_HAFDBS_SHIFT) 127944e446a1SAndrew Turner #define ID_AA64MMFR1_HAFDBS_VAL(x) ((x) & ID_AA64MMFR1_HAFDBS_MASK) 1280f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_NONE (UL(0x0) << ID_AA64MMFR1_HAFDBS_SHIFT) 1281f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_AF (UL(0x1) << ID_AA64MMFR1_HAFDBS_SHIFT) 1282f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_AF_DBS (UL(0x2) << ID_AA64MMFR1_HAFDBS_SHIFT) 1283f1fbf9c3SAndrew Turner #define ID_AA64MMFR1_VMIDBits_SHIFT 4 1284590c3232SAndrew Turner #define ID_AA64MMFR1_VMIDBits_WIDTH 4 1285f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_MASK (UL(0xf) << ID_AA64MMFR1_VMIDBits_SHIFT) 128644e446a1SAndrew Turner #define ID_AA64MMFR1_VMIDBits_VAL(x) ((x) & ID_AA64MMFR1_VMIDBits_MASK) 1287f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_8 (UL(0x0) << ID_AA64MMFR1_VMIDBits_SHIFT) 1288f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_16 (UL(0x2) << ID_AA64MMFR1_VMIDBits_SHIFT) 12892bafd72fSAndrew Turner #define ID_AA64MMFR1_VH_SHIFT 8 1290590c3232SAndrew Turner #define ID_AA64MMFR1_VH_WIDTH 4 1291f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_MASK (UL(0xf) << ID_AA64MMFR1_VH_SHIFT) 129244e446a1SAndrew Turner #define ID_AA64MMFR1_VH_VAL(x) ((x) & ID_AA64MMFR1_VH_MASK) 1293f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_NONE (UL(0x0) << ID_AA64MMFR1_VH_SHIFT) 1294f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_IMPL (UL(0x1) << ID_AA64MMFR1_VH_SHIFT) 12952bafd72fSAndrew Turner #define ID_AA64MMFR1_HPDS_SHIFT 12 1296590c3232SAndrew Turner #define ID_AA64MMFR1_HPDS_WIDTH 4 1297f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_MASK (UL(0xf) << ID_AA64MMFR1_HPDS_SHIFT) 129844e446a1SAndrew Turner #define ID_AA64MMFR1_HPDS_VAL(x) ((x) & ID_AA64MMFR1_HPDS_MASK) 1299f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_NONE (UL(0x0) << ID_AA64MMFR1_HPDS_SHIFT) 1300f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_HPD (UL(0x1) << ID_AA64MMFR1_HPDS_SHIFT) 1301f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_TTPBHA (UL(0x2) << ID_AA64MMFR1_HPDS_SHIFT) 13022bafd72fSAndrew Turner #define ID_AA64MMFR1_LO_SHIFT 16 1303590c3232SAndrew Turner #define ID_AA64MMFR1_LO_WIDTH 4 1304f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_MASK (UL(0xf) << ID_AA64MMFR1_LO_SHIFT) 130544e446a1SAndrew Turner #define ID_AA64MMFR1_LO_VAL(x) ((x) & ID_AA64MMFR1_LO_MASK) 1306f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_NONE (UL(0x0) << ID_AA64MMFR1_LO_SHIFT) 1307f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_IMPL (UL(0x1) << ID_AA64MMFR1_LO_SHIFT) 13082bafd72fSAndrew Turner #define ID_AA64MMFR1_PAN_SHIFT 20 1309590c3232SAndrew Turner #define ID_AA64MMFR1_PAN_WIDTH 4 1310f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_MASK (UL(0xf) << ID_AA64MMFR1_PAN_SHIFT) 131144e446a1SAndrew Turner #define ID_AA64MMFR1_PAN_VAL(x) ((x) & ID_AA64MMFR1_PAN_MASK) 1312f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_NONE (UL(0x0) << ID_AA64MMFR1_PAN_SHIFT) 1313f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_IMPL (UL(0x1) << ID_AA64MMFR1_PAN_SHIFT) 1314f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_ATS1E1 (UL(0x2) << ID_AA64MMFR1_PAN_SHIFT) 1315284f91deSAndrew Turner #define ID_AA64MMFR1_PAN_EPAN (UL(0x2) << ID_AA64MMFR1_PAN_SHIFT) 1316f1fbf9c3SAndrew Turner #define ID_AA64MMFR1_SpecSEI_SHIFT 24 1317590c3232SAndrew Turner #define ID_AA64MMFR1_SpecSEI_WIDTH 4 1318f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_MASK (UL(0xf) << ID_AA64MMFR1_SpecSEI_SHIFT) 131944e446a1SAndrew Turner #define ID_AA64MMFR1_SpecSEI_VAL(x) ((x) & ID_AA64MMFR1_SpecSEI_MASK) 1320f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_NONE (UL(0x0) << ID_AA64MMFR1_SpecSEI_SHIFT) 1321f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_IMPL (UL(0x1) << ID_AA64MMFR1_SpecSEI_SHIFT) 1322f45dc694SAndrew Turner #define ID_AA64MMFR1_XNX_SHIFT 28 1323590c3232SAndrew Turner #define ID_AA64MMFR1_XNX_WIDTH 4 1324f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_MASK (UL(0xf) << ID_AA64MMFR1_XNX_SHIFT) 132544e446a1SAndrew Turner #define ID_AA64MMFR1_XNX_VAL(x) ((x) & ID_AA64MMFR1_XNX_MASK) 1326f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_NONE (UL(0x0) << ID_AA64MMFR1_XNX_SHIFT) 1327f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_IMPL (UL(0x1) << ID_AA64MMFR1_XNX_SHIFT) 1328284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_SHIFT 32 1329590c3232SAndrew Turner #define ID_AA64MMFR1_TWED_WIDTH 4 1330284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_MASK (UL(0xf) << ID_AA64MMFR1_TWED_SHIFT) 1331284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_VAL(x) ((x) & ID_AA64MMFR1_TWED_MASK) 1332284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_NONE (UL(0x0) << ID_AA64MMFR1_TWED_SHIFT) 1333284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_IMPL (UL(0x1) << ID_AA64MMFR1_TWED_SHIFT) 1334284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_SHIFT 36 1335590c3232SAndrew Turner #define ID_AA64MMFR1_ETS_WIDTH 4 1336284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_MASK (UL(0xf) << ID_AA64MMFR1_ETS_SHIFT) 1337284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_VAL(x) ((x) & ID_AA64MMFR1_ETS_MASK) 1338284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_NONE (UL(0x0) << ID_AA64MMFR1_ETS_SHIFT) 1339284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_IMPL (UL(0x1) << ID_AA64MMFR1_ETS_SHIFT) 1340284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_SHIFT 40 1341590c3232SAndrew Turner #define ID_AA64MMFR1_HCX_WIDTH 4 1342284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_MASK (UL(0xf) << ID_AA64MMFR1_HCX_SHIFT) 1343284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_VAL(x) ((x) & ID_AA64MMFR1_HCX_MASK) 1344284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_NONE (UL(0x0) << ID_AA64MMFR1_HCX_SHIFT) 1345284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_IMPL (UL(0x1) << ID_AA64MMFR1_HCX_SHIFT) 1346284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_SHIFT 44 1347590c3232SAndrew Turner #define ID_AA64MMFR1_AFP_WIDTH 4 1348284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_MASK (UL(0xf) << ID_AA64MMFR1_AFP_SHIFT) 1349284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_VAL(x) ((x) & ID_AA64MMFR1_AFP_MASK) 1350284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_NONE (UL(0x0) << ID_AA64MMFR1_AFP_SHIFT) 1351284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_IMPL (UL(0x1) << ID_AA64MMFR1_AFP_SHIFT) 1352284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_SHIFT 48 1353590c3232SAndrew Turner #define ID_AA64MMFR1_nTLBPA_WIDTH 4 1354284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_MASK (UL(0xf) << ID_AA64MMFR1_nTLBPA_SHIFT) 1355284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_VAL(x) ((x) & ID_AA64MMFR1_nTLBPA_MASK) 1356284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_NONE (UL(0x0) << ID_AA64MMFR1_nTLBPA_SHIFT) 1357284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_IMPL (UL(0x1) << ID_AA64MMFR1_nTLBPA_SHIFT) 1358284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_SHIFT 52 1359590c3232SAndrew Turner #define ID_AA64MMFR1_TIDCP1_WIDTH 4 1360284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_MASK (UL(0xf) << ID_AA64MMFR1_TIDCP1_SHIFT) 1361284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_VAL(x) ((x) & ID_AA64MMFR1_TIDCP1_MASK) 1362284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_NONE (UL(0x0) << ID_AA64MMFR1_TIDCP1_SHIFT) 1363284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_IMPL (UL(0x1) << ID_AA64MMFR1_TIDCP1_SHIFT) 1364284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_SHIFT 56 1365590c3232SAndrew Turner #define ID_AA64MMFR1_CMOVW_WIDTH 4 1366284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_MASK (UL(0xf) << ID_AA64MMFR1_CMOVW_SHIFT) 1367284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_VAL(x) ((x) & ID_AA64MMFR1_CMOVW_MASK) 1368284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_NONE (UL(0x0) << ID_AA64MMFR1_CMOVW_SHIFT) 1369284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_IMPL (UL(0x1) << ID_AA64MMFR1_CMOVW_SHIFT) 1370f45dc694SAndrew Turner 1371f45dc694SAndrew Turner /* ID_AA64MMFR2_EL1 */ 137210f6680fSAndrew Turner #define ID_AA64MMFR2_EL1 MRS_REG(ID_AA64MMFR2_EL1) 1373d6d860c7SAndrew Turner #define ID_AA64MMFR2_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR2_EL1) 13742134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_op0 3 13752134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_op1 0 13762134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_CRn 0 13772134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_CRm 7 13782134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_op2 2 1379f1fbf9c3SAndrew Turner #define ID_AA64MMFR2_CnP_SHIFT 0 1380590c3232SAndrew Turner #define ID_AA64MMFR2_CnP_WIDTH 4 1381f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_MASK (UL(0xf) << ID_AA64MMFR2_CnP_SHIFT) 138244e446a1SAndrew Turner #define ID_AA64MMFR2_CnP_VAL(x) ((x) & ID_AA64MMFR2_CnP_MASK) 1383f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_NONE (UL(0x0) << ID_AA64MMFR2_CnP_SHIFT) 1384f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_IMPL (UL(0x1) << ID_AA64MMFR2_CnP_SHIFT) 1385f45dc694SAndrew Turner #define ID_AA64MMFR2_UAO_SHIFT 4 1386590c3232SAndrew Turner #define ID_AA64MMFR2_UAO_WIDTH 4 1387f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_MASK (UL(0xf) << ID_AA64MMFR2_UAO_SHIFT) 138844e446a1SAndrew Turner #define ID_AA64MMFR2_UAO_VAL(x) ((x) & ID_AA64MMFR2_UAO_MASK) 1389f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_NONE (UL(0x0) << ID_AA64MMFR2_UAO_SHIFT) 1390f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_IMPL (UL(0x1) << ID_AA64MMFR2_UAO_SHIFT) 1391f45dc694SAndrew Turner #define ID_AA64MMFR2_LSM_SHIFT 8 1392590c3232SAndrew Turner #define ID_AA64MMFR2_LSM_WIDTH 4 1393f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_MASK (UL(0xf) << ID_AA64MMFR2_LSM_SHIFT) 139444e446a1SAndrew Turner #define ID_AA64MMFR2_LSM_VAL(x) ((x) & ID_AA64MMFR2_LSM_MASK) 1395f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_NONE (UL(0x0) << ID_AA64MMFR2_LSM_SHIFT) 1396f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_IMPL (UL(0x1) << ID_AA64MMFR2_LSM_SHIFT) 1397f45dc694SAndrew Turner #define ID_AA64MMFR2_IESB_SHIFT 12 1398590c3232SAndrew Turner #define ID_AA64MMFR2_IESB_WIDTH 4 1399f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_MASK (UL(0xf) << ID_AA64MMFR2_IESB_SHIFT) 140044e446a1SAndrew Turner #define ID_AA64MMFR2_IESB_VAL(x) ((x) & ID_AA64MMFR2_IESB_MASK) 1401f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_NONE (UL(0x0) << ID_AA64MMFR2_IESB_SHIFT) 1402f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_IMPL (UL(0x1) << ID_AA64MMFR2_IESB_SHIFT) 1403f1fbf9c3SAndrew Turner #define ID_AA64MMFR2_VARange_SHIFT 16 1404590c3232SAndrew Turner #define ID_AA64MMFR2_VARange_WIDTH 4 1405f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_MASK (UL(0xf) << ID_AA64MMFR2_VARange_SHIFT) 140644e446a1SAndrew Turner #define ID_AA64MMFR2_VARange_VAL(x) ((x) & ID_AA64MMFR2_VARange_MASK) 1407f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_48 (UL(0x0) << ID_AA64MMFR2_VARange_SHIFT) 1408f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_52 (UL(0x1) << ID_AA64MMFR2_VARange_SHIFT) 1409ca289945SAndrew Turner #define ID_AA64MMFR2_CCIDX_SHIFT 20 1410590c3232SAndrew Turner #define ID_AA64MMFR2_CCIDX_WIDTH 4 1411f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_MASK (UL(0xf) << ID_AA64MMFR2_CCIDX_SHIFT) 141244e446a1SAndrew Turner #define ID_AA64MMFR2_CCIDX_VAL(x) ((x) & ID_AA64MMFR2_CCIDX_MASK) 1413f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_32 (UL(0x0) << ID_AA64MMFR2_CCIDX_SHIFT) 1414f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_64 (UL(0x1) << ID_AA64MMFR2_CCIDX_SHIFT) 1415ca289945SAndrew Turner #define ID_AA64MMFR2_NV_SHIFT 24 1416590c3232SAndrew Turner #define ID_AA64MMFR2_NV_WIDTH 4 1417f31c5955SAndrew Turner #define ID_AA64MMFR2_NV_MASK (UL(0xf) << ID_AA64MMFR2_NV_SHIFT) 141844e446a1SAndrew Turner #define ID_AA64MMFR2_NV_VAL(x) ((x) & ID_AA64MMFR2_NV_MASK) 1419f31c5955SAndrew Turner #define ID_AA64MMFR2_NV_NONE (UL(0x0) << ID_AA64MMFR2_NV_SHIFT) 1420a7b05eb1SAndrew Turner #define ID_AA64MMFR2_NV_8_3 (UL(0x1) << ID_AA64MMFR2_NV_SHIFT) 1421a7b05eb1SAndrew Turner #define ID_AA64MMFR2_NV_8_4 (UL(0x2) << ID_AA64MMFR2_NV_SHIFT) 14220387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_SHIFT 28 1423590c3232SAndrew Turner #define ID_AA64MMFR2_ST_WIDTH 4 14240387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_MASK (UL(0xf) << ID_AA64MMFR2_ST_SHIFT) 14250387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_VAL(x) ((x) & ID_AA64MMFR2_ST_MASK) 14260387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_NONE (UL(0x0) << ID_AA64MMFR2_ST_SHIFT) 14270387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_IMPL (UL(0x1) << ID_AA64MMFR2_ST_SHIFT) 14280387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_SHIFT 32 1429590c3232SAndrew Turner #define ID_AA64MMFR2_AT_WIDTH 4 14300387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_MASK (UL(0xf) << ID_AA64MMFR2_AT_SHIFT) 14310387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_VAL(x) ((x) & ID_AA64MMFR2_AT_MASK) 14320387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_NONE (UL(0x0) << ID_AA64MMFR2_AT_SHIFT) 14330387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_IMPL (UL(0x1) << ID_AA64MMFR2_AT_SHIFT) 14340387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_SHIFT 36 1435590c3232SAndrew Turner #define ID_AA64MMFR2_IDS_WIDTH 4 14360387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_MASK (UL(0xf) << ID_AA64MMFR2_IDS_SHIFT) 14370387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_VAL(x) ((x) & ID_AA64MMFR2_IDS_MASK) 14380387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_NONE (UL(0x0) << ID_AA64MMFR2_IDS_SHIFT) 14390387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_IMPL (UL(0x1) << ID_AA64MMFR2_IDS_SHIFT) 14400387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_SHIFT 40 1441590c3232SAndrew Turner #define ID_AA64MMFR2_FWB_WIDTH 4 14420387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_MASK (UL(0xf) << ID_AA64MMFR2_FWB_SHIFT) 14430387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_VAL(x) ((x) & ID_AA64MMFR2_FWB_MASK) 14440387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_NONE (UL(0x0) << ID_AA64MMFR2_FWB_SHIFT) 14450387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_IMPL (UL(0x1) << ID_AA64MMFR2_FWB_SHIFT) 14460387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_SHIFT 48 1447590c3232SAndrew Turner #define ID_AA64MMFR2_TTL_WIDTH 4 14480387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_MASK (UL(0xf) << ID_AA64MMFR2_TTL_SHIFT) 14490387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_VAL(x) ((x) & ID_AA64MMFR2_TTL_MASK) 14500387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_NONE (UL(0x0) << ID_AA64MMFR2_TTL_SHIFT) 14510387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_IMPL (UL(0x1) << ID_AA64MMFR2_TTL_SHIFT) 14520387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_SHIFT 52 1453590c3232SAndrew Turner #define ID_AA64MMFR2_BBM_WIDTH 4 14540387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_MASK (UL(0xf) << ID_AA64MMFR2_BBM_SHIFT) 14550387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_VAL(x) ((x) & ID_AA64MMFR2_BBM_MASK) 14560387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL0 (UL(0x0) << ID_AA64MMFR2_BBM_SHIFT) 14570387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL1 (UL(0x1) << ID_AA64MMFR2_BBM_SHIFT) 14580387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL2 (UL(0x2) << ID_AA64MMFR2_BBM_SHIFT) 14590387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_SHIFT 56 1460590c3232SAndrew Turner #define ID_AA64MMFR2_EVT_WIDTH 4 14610387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_MASK (UL(0xf) << ID_AA64MMFR2_EVT_SHIFT) 14620387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_VAL(x) ((x) & ID_AA64MMFR2_EVT_MASK) 14630387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_NONE (UL(0x0) << ID_AA64MMFR2_EVT_SHIFT) 14640387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_8_2 (UL(0x1) << ID_AA64MMFR2_EVT_SHIFT) 14650387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_8_5 (UL(0x2) << ID_AA64MMFR2_EVT_SHIFT) 14660387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_SHIFT 60 1467590c3232SAndrew Turner #define ID_AA64MMFR2_E0PD_WIDTH 4 14680387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_MASK (UL(0xf) << ID_AA64MMFR2_E0PD_SHIFT) 14690387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_VAL(x) ((x) & ID_AA64MMFR2_E0PD_MASK) 14700387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_NONE (UL(0x0) << ID_AA64MMFR2_E0PD_SHIFT) 14710387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_IMPL (UL(0x1) << ID_AA64MMFR2_E0PD_SHIFT) 14722bafd72fSAndrew Turner 1473c6567914SAndrew Turner /* ID_AA64MMFR3_EL1 */ 1474c6567914SAndrew Turner #define ID_AA64MMFR3_EL1 MRS_REG(ID_AA64MMFR3_EL1) 1475d6d860c7SAndrew Turner #define ID_AA64MMFR3_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR3_EL1) 1476c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_op0 3 1477c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_op1 0 1478c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_CRn 0 1479c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_CRm 7 1480c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_op2 3 1481c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_SHIFT 0 1482590c3232SAndrew Turner #define ID_AA64MMFR3_TCRX_WIDTH 4 1483c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_MASK (UL(0xf) << ID_AA64MMFR3_TCRX_SHIFT) 1484c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_VAL(x) ((x) & ID_AA64MMFR3_TCRX_MASK) 1485c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_NONE (UL(0x0) << ID_AA64MMFR3_TCRX_SHIFT) 1486c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_IMPL (UL(0x1) << ID_AA64MMFR3_TCRX_SHIFT) 1487c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_SHIFT 4 1488590c3232SAndrew Turner #define ID_AA64MMFR3_SCTLRX_WIDTH 4 1489c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_MASK (UL(0xf) << ID_AA64MMFR3_SCTLRX_SHIFT) 1490c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_VAL(x) ((x) & ID_AA64MMFR3_SCTLRX_MASK) 1491c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_NONE (UL(0x0) << ID_AA64MMFR3_SCTLRX_SHIFT) 1492c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_IMPL (UL(0x1) << ID_AA64MMFR3_SCTLRX_SHIFT) 1493c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_SHIFT 28 1494590c3232SAndrew Turner #define ID_AA64MMFR3_MEC_WIDTH 4 1495c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_MASK (UL(0xf) << ID_AA64MMFR3_MEC_SHIFT) 1496c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_VAL(x) ((x) & ID_AA64MMFR3_MEC_MASK) 1497c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_NONE (UL(0x0) << ID_AA64MMFR3_MEC_SHIFT) 1498c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_IMPL (UL(0x1) << ID_AA64MMFR3_MEC_SHIFT) 1499c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_SHIFT 60 1500590c3232SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_WIDTH 4 1501c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_MASK (UL(0xf) << ID_AA64MMFR3_Spec_FPACC_SHIFT) 1502c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_VAL(x) ((x) & ID_AA64MMFR3_Spec_FPACC_MASK) 1503c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_NONE (UL(0x0) << ID_AA64MMFR3_Spec_FPACC_SHIFT) 1504c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_IMPL (UL(0x1) << ID_AA64MMFR3_Spec_FPACC_SHIFT) 1505c6567914SAndrew Turner 150622235b63SAndrew Turner /* ID_AA64MMFR4_EL1 */ 150722235b63SAndrew Turner #define ID_AA64MMFR4_EL1 MRS_REG(ID_AA64MMFR4_EL1) 1508d6d860c7SAndrew Turner #define ID_AA64MMFR4_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR4_EL1) 150922235b63SAndrew Turner #define ID_AA64MMFR4_EL1_op0 3 151022235b63SAndrew Turner #define ID_AA64MMFR4_EL1_op1 0 151122235b63SAndrew Turner #define ID_AA64MMFR4_EL1_CRn 0 151222235b63SAndrew Turner #define ID_AA64MMFR4_EL1_CRm 7 151322235b63SAndrew Turner #define ID_AA64MMFR4_EL1_op2 4 151422235b63SAndrew Turner 1515e5acd89cSAndrew Turner /* ID_AA64PFR0_EL1 */ 151610f6680fSAndrew Turner #define ID_AA64PFR0_EL1 MRS_REG(ID_AA64PFR0_EL1) 1517d6d860c7SAndrew Turner #define ID_AA64PFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64PFR0_EL1) 15180766dde9SAndrew Turner #define ID_AA64PFR0_EL1_op0 3 15190766dde9SAndrew Turner #define ID_AA64PFR0_EL1_op1 0 15200766dde9SAndrew Turner #define ID_AA64PFR0_EL1_CRn 0 15210766dde9SAndrew Turner #define ID_AA64PFR0_EL1_CRm 4 15220766dde9SAndrew Turner #define ID_AA64PFR0_EL1_op2 0 15235f0a5fefSAndrew Turner #define ID_AA64PFR0_EL0_SHIFT 0 1524590c3232SAndrew Turner #define ID_AA64PFR0_EL0_WIDTH 4 1525f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_MASK (UL(0xf) << ID_AA64PFR0_EL0_SHIFT) 152644e446a1SAndrew Turner #define ID_AA64PFR0_EL0_VAL(x) ((x) & ID_AA64PFR0_EL0_MASK) 1527f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_64 (UL(0x1) << ID_AA64PFR0_EL0_SHIFT) 1528f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_64_32 (UL(0x2) << ID_AA64PFR0_EL0_SHIFT) 15295f0a5fefSAndrew Turner #define ID_AA64PFR0_EL1_SHIFT 4 1530590c3232SAndrew Turner #define ID_AA64PFR0_EL1_WIDTH 4 1531f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_MASK (UL(0xf) << ID_AA64PFR0_EL1_SHIFT) 153244e446a1SAndrew Turner #define ID_AA64PFR0_EL1_VAL(x) ((x) & ID_AA64PFR0_EL1_MASK) 1533f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_64 (UL(0x1) << ID_AA64PFR0_EL1_SHIFT) 1534f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_64_32 (UL(0x2) << ID_AA64PFR0_EL1_SHIFT) 15355f0a5fefSAndrew Turner #define ID_AA64PFR0_EL2_SHIFT 8 1536590c3232SAndrew Turner #define ID_AA64PFR0_EL2_WIDTH 4 1537f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_MASK (UL(0xf) << ID_AA64PFR0_EL2_SHIFT) 153844e446a1SAndrew Turner #define ID_AA64PFR0_EL2_VAL(x) ((x) & ID_AA64PFR0_EL2_MASK) 1539f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_NONE (UL(0x0) << ID_AA64PFR0_EL2_SHIFT) 1540f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_64 (UL(0x1) << ID_AA64PFR0_EL2_SHIFT) 1541f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_64_32 (UL(0x2) << ID_AA64PFR0_EL2_SHIFT) 15425f0a5fefSAndrew Turner #define ID_AA64PFR0_EL3_SHIFT 12 1543590c3232SAndrew Turner #define ID_AA64PFR0_EL3_WIDTH 4 1544f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_MASK (UL(0xf) << ID_AA64PFR0_EL3_SHIFT) 154544e446a1SAndrew Turner #define ID_AA64PFR0_EL3_VAL(x) ((x) & ID_AA64PFR0_EL3_MASK) 1546f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_NONE (UL(0x0) << ID_AA64PFR0_EL3_SHIFT) 1547f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_64 (UL(0x1) << ID_AA64PFR0_EL3_SHIFT) 1548f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_64_32 (UL(0x2) << ID_AA64PFR0_EL3_SHIFT) 15495f0a5fefSAndrew Turner #define ID_AA64PFR0_FP_SHIFT 16 1550590c3232SAndrew Turner #define ID_AA64PFR0_FP_WIDTH 4 1551f31c5955SAndrew Turner #define ID_AA64PFR0_FP_MASK (UL(0xf) << ID_AA64PFR0_FP_SHIFT) 155244e446a1SAndrew Turner #define ID_AA64PFR0_FP_VAL(x) ((x) & ID_AA64PFR0_FP_MASK) 1553f31c5955SAndrew Turner #define ID_AA64PFR0_FP_IMPL (UL(0x0) << ID_AA64PFR0_FP_SHIFT) 1554f31c5955SAndrew Turner #define ID_AA64PFR0_FP_HP (UL(0x1) << ID_AA64PFR0_FP_SHIFT) 1555f31c5955SAndrew Turner #define ID_AA64PFR0_FP_NONE (UL(0xf) << ID_AA64PFR0_FP_SHIFT) 1556f1fbf9c3SAndrew Turner #define ID_AA64PFR0_AdvSIMD_SHIFT 20 1557590c3232SAndrew Turner #define ID_AA64PFR0_AdvSIMD_WIDTH 4 1558f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_MASK (UL(0xf) << ID_AA64PFR0_AdvSIMD_SHIFT) 155944e446a1SAndrew Turner #define ID_AA64PFR0_AdvSIMD_VAL(x) ((x) & ID_AA64PFR0_AdvSIMD_MASK) 1560f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_IMPL (UL(0x0) << ID_AA64PFR0_AdvSIMD_SHIFT) 1561f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_HP (UL(0x1) << ID_AA64PFR0_AdvSIMD_SHIFT) 1562f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_NONE (UL(0xf) << ID_AA64PFR0_AdvSIMD_SHIFT) 15635f0a5fefSAndrew Turner #define ID_AA64PFR0_GIC_BITS 0x4 /* Number of bits in GIC field */ 15645f0a5fefSAndrew Turner #define ID_AA64PFR0_GIC_SHIFT 24 1565590c3232SAndrew Turner #define ID_AA64PFR0_GIC_WIDTH 4 1566f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_MASK (UL(0xf) << ID_AA64PFR0_GIC_SHIFT) 156744e446a1SAndrew Turner #define ID_AA64PFR0_GIC_VAL(x) ((x) & ID_AA64PFR0_GIC_MASK) 1568f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_NONE (UL(0x0) << ID_AA64PFR0_GIC_SHIFT) 1569f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_EN (UL(0x1) << ID_AA64PFR0_GIC_SHIFT) 1570477204e7SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_4_1 (UL(0x3) << ID_AA64PFR0_GIC_SHIFT) 1571f45dc694SAndrew Turner #define ID_AA64PFR0_RAS_SHIFT 28 1572590c3232SAndrew Turner #define ID_AA64PFR0_RAS_WIDTH 4 1573f31c5955SAndrew Turner #define ID_AA64PFR0_RAS_MASK (UL(0xf) << ID_AA64PFR0_RAS_SHIFT) 157444e446a1SAndrew Turner #define ID_AA64PFR0_RAS_VAL(x) ((x) & ID_AA64PFR0_RAS_MASK) 1575f31c5955SAndrew Turner #define ID_AA64PFR0_RAS_NONE (UL(0x0) << ID_AA64PFR0_RAS_SHIFT) 1576a7b05eb1SAndrew Turner #define ID_AA64PFR0_RAS_IMPL (UL(0x1) << ID_AA64PFR0_RAS_SHIFT) 1577a7b05eb1SAndrew Turner #define ID_AA64PFR0_RAS_8_4 (UL(0x2) << ID_AA64PFR0_RAS_SHIFT) 1578f9fc9faaSAndrew Turner #define ID_AA64PFR0_SVE_SHIFT 32 1579590c3232SAndrew Turner #define ID_AA64PFR0_SVE_WIDTH 4 1580f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_MASK (UL(0xf) << ID_AA64PFR0_SVE_SHIFT) 158144e446a1SAndrew Turner #define ID_AA64PFR0_SVE_VAL(x) ((x) & ID_AA64PFR0_SVE_MASK) 1582f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_NONE (UL(0x0) << ID_AA64PFR0_SVE_SHIFT) 1583f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_IMPL (UL(0x1) << ID_AA64PFR0_SVE_SHIFT) 1584b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_SHIFT 36 1585590c3232SAndrew Turner #define ID_AA64PFR0_SEL2_WIDTH 4 1586b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_MASK (UL(0xf) << ID_AA64PFR0_SEL2_SHIFT) 1587b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_VAL(x) ((x) & ID_AA64PFR0_SEL2_MASK) 1588b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_NONE (UL(0x0) << ID_AA64PFR0_SEL2_SHIFT) 1589b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_IMPL (UL(0x1) << ID_AA64PFR0_SEL2_SHIFT) 1590b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_SHIFT 40 1591590c3232SAndrew Turner #define ID_AA64PFR0_MPAM_WIDTH 4 1592b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_MASK (UL(0xf) << ID_AA64PFR0_MPAM_SHIFT) 1593b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_VAL(x) ((x) & ID_AA64PFR0_MPAM_MASK) 1594b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_NONE (UL(0x0) << ID_AA64PFR0_MPAM_SHIFT) 1595b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_IMPL (UL(0x1) << ID_AA64PFR0_MPAM_SHIFT) 1596b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_SHIFT 44 1597590c3232SAndrew Turner #define ID_AA64PFR0_AMU_WIDTH 4 1598b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_MASK (UL(0xf) << ID_AA64PFR0_AMU_SHIFT) 1599b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_VAL(x) ((x) & ID_AA64PFR0_AMU_MASK) 1600b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_NONE (UL(0x0) << ID_AA64PFR0_AMU_SHIFT) 1601b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_V1 (UL(0x1) << ID_AA64PFR0_AMU_SHIFT) 16020766dde9SAndrew Turner #define ID_AA64PFR0_AMU_V1_1 (UL(0x2) << ID_AA64PFR0_AMU_SHIFT) 1603b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_SHIFT 48 1604590c3232SAndrew Turner #define ID_AA64PFR0_DIT_WIDTH 4 1605b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_MASK (UL(0xf) << ID_AA64PFR0_DIT_SHIFT) 1606b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_VAL(x) ((x) & ID_AA64PFR0_DIT_MASK) 1607b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_NONE (UL(0x0) << ID_AA64PFR0_DIT_SHIFT) 1608b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_PSTATE (UL(0x1) << ID_AA64PFR0_DIT_SHIFT) 16090766dde9SAndrew Turner #define ID_AA64PFR0_RME_SHIFT 52 1610590c3232SAndrew Turner #define ID_AA64PFR0_RME_WIDTH 4 16110766dde9SAndrew Turner #define ID_AA64PFR0_RME_MASK (UL(0xf) << ID_AA64PFR0_RME_SHIFT) 16120766dde9SAndrew Turner #define ID_AA64PFR0_RME_VAL(x) ((x) & ID_AA64PFR0_RME_MASK) 16130766dde9SAndrew Turner #define ID_AA64PFR0_RME_NONE (UL(0x0) << ID_AA64PFR0_RME_SHIFT) 16140766dde9SAndrew Turner #define ID_AA64PFR0_RME_IMPL (UL(0x1) << ID_AA64PFR0_RME_SHIFT) 1615b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_SHIFT 56 1616590c3232SAndrew Turner #define ID_AA64PFR0_CSV2_WIDTH 4 1617b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_MASK (UL(0xf) << ID_AA64PFR0_CSV2_SHIFT) 1618b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_VAL(x) ((x) & ID_AA64PFR0_CSV2_MASK) 1619b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_NONE (UL(0x0) << ID_AA64PFR0_CSV2_SHIFT) 1620b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV2_SHIFT) 1621b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_SCXTNUM (UL(0x2) << ID_AA64PFR0_CSV2_SHIFT) 16220766dde9SAndrew Turner #define ID_AA64PFR0_CSV2_3 (UL(0x3) << ID_AA64PFR0_CSV2_SHIFT) 1623b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_SHIFT 60 1624590c3232SAndrew Turner #define ID_AA64PFR0_CSV3_WIDTH 4 1625b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_MASK (UL(0xf) << ID_AA64PFR0_CSV3_SHIFT) 1626b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_VAL(x) ((x) & ID_AA64PFR0_CSV3_MASK) 1627b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_NONE (UL(0x0) << ID_AA64PFR0_CSV3_SHIFT) 1628b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV3_SHIFT) 1629b6cf94aeSMark Johnston 1630b6cf94aeSMark Johnston /* ID_AA64PFR1_EL1 */ 163110f6680fSAndrew Turner #define ID_AA64PFR1_EL1 MRS_REG(ID_AA64PFR1_EL1) 1632d6d860c7SAndrew Turner #define ID_AA64PFR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64PFR1_EL1) 16338c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_op0 3 16348c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_op1 0 16358c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_CRn 0 16368c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_CRm 4 16378c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_op2 1 1638b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_SHIFT 0 1639590c3232SAndrew Turner #define ID_AA64PFR1_BT_WIDTH 4 1640b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_MASK (UL(0xf) << ID_AA64PFR1_BT_SHIFT) 1641b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_VAL(x) ((x) & ID_AA64PFR1_BT_MASK) 1642b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_NONE (UL(0x0) << ID_AA64PFR1_BT_SHIFT) 1643b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_IMPL (UL(0x1) << ID_AA64PFR1_BT_SHIFT) 1644b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_SHIFT 4 1645590c3232SAndrew Turner #define ID_AA64PFR1_SSBS_WIDTH 4 1646b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_MASK (UL(0xf) << ID_AA64PFR1_SSBS_SHIFT) 1647b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_VAL(x) ((x) & ID_AA64PFR1_SSBS_MASK) 1648b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_NONE (UL(0x0) << ID_AA64PFR1_SSBS_SHIFT) 1649b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_PSTATE (UL(0x1) << ID_AA64PFR1_SSBS_SHIFT) 1650b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_PSTATE_MSR (UL(0x2) << ID_AA64PFR1_SSBS_SHIFT) 1651b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_SHIFT 8 1652590c3232SAndrew Turner #define ID_AA64PFR1_MTE_WIDTH 4 1653b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_MASK (UL(0xf) << ID_AA64PFR1_MTE_SHIFT) 1654b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_VAL(x) ((x) & ID_AA64PFR1_MTE_MASK) 1655b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_NONE (UL(0x0) << ID_AA64PFR1_MTE_SHIFT) 16568c111e5bSAndrew Turner #define ID_AA64PFR1_MTE_MTE (UL(0x1) << ID_AA64PFR1_MTE_SHIFT) 16578c111e5bSAndrew Turner #define ID_AA64PFR1_MTE_MTE2 (UL(0x2) << ID_AA64PFR1_MTE_SHIFT) 16588c111e5bSAndrew Turner #define ID_AA64PFR1_MTE_MTE3 (UL(0x3) << ID_AA64PFR1_MTE_SHIFT) 1659b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_SHIFT 12 1660590c3232SAndrew Turner #define ID_AA64PFR1_RAS_frac_WIDTH 4 1661b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_MASK (UL(0xf) << ID_AA64PFR1_RAS_frac_SHIFT) 1662b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_VAL(x) ((x) & ID_AA64PFR1_RAS_frac_MASK) 16638c111e5bSAndrew Turner #define ID_AA64PFR1_RAS_frac_p0 (UL(0x0) << ID_AA64PFR1_RAS_frac_SHIFT) 16648c111e5bSAndrew Turner #define ID_AA64PFR1_RAS_frac_p1 (UL(0x1) << ID_AA64PFR1_RAS_frac_SHIFT) 16658c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_SHIFT 16 1666590c3232SAndrew Turner #define ID_AA64PFR1_MPAM_frac_WIDTH 4 16678c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_MASK (UL(0xf) << ID_AA64PFR1_MPAM_frac_SHIFT) 16688c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_VAL(x) ((x) & ID_AA64PFR1_MPAM_frac_MASK) 16698c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_p0 (UL(0x0) << ID_AA64PFR1_MPAM_frac_SHIFT) 16708c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_p1 (UL(0x1) << ID_AA64PFR1_MPAM_frac_SHIFT) 16718c111e5bSAndrew Turner #define ID_AA64PFR1_SME_SHIFT 24 1672590c3232SAndrew Turner #define ID_AA64PFR1_SME_WIDTH 4 16738c111e5bSAndrew Turner #define ID_AA64PFR1_SME_MASK (UL(0xf) << ID_AA64PFR1_SME_SHIFT) 16748c111e5bSAndrew Turner #define ID_AA64PFR1_SME_VAL(x) ((x) & ID_AA64PFR1_SME_MASK) 16758c111e5bSAndrew Turner #define ID_AA64PFR1_SME_NONE (UL(0x0) << ID_AA64PFR1_SME_SHIFT) 16768c111e5bSAndrew Turner #define ID_AA64PFR1_SME_SME (UL(0x1) << ID_AA64PFR1_SME_SHIFT) 16778c111e5bSAndrew Turner #define ID_AA64PFR1_SME_SME2 (UL(0x2) << ID_AA64PFR1_SME_SHIFT) 16788c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_SHIFT 28 1679590c3232SAndrew Turner #define ID_AA64PFR1_RNDR_trap_WIDTH 4 16808c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_MASK (UL(0xf) << ID_AA64PFR1_RNDR_trap_SHIFT) 16818c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_VAL(x) ((x) & ID_AA64PFR1_RNDR_trap_MASK) 16828c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_NONE (UL(0x0) << ID_AA64PFR1_RNDR_trap_SHIFT) 16838c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_IMPL (UL(0x1) << ID_AA64PFR1_RNDR_trap_SHIFT) 16848c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_SHIFT 32 1685590c3232SAndrew Turner #define ID_AA64PFR1_CSV2_frac_WIDTH 4 16868c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_MASK (UL(0xf) << ID_AA64PFR1_CSV2_frac_SHIFT) 16878c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_VAL(x) ((x) & ID_AA64PFR1_CSV2_frac_MASK) 16888c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_p0 (UL(0x0) << ID_AA64PFR1_CSV2_frac_SHIFT) 16898c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_p1 (UL(0x1) << ID_AA64PFR1_CSV2_frac_SHIFT) 16908c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_p2 (UL(0x2) << ID_AA64PFR1_CSV2_frac_SHIFT) 16918c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_SHIFT 36 1692590c3232SAndrew Turner #define ID_AA64PFR1_NMI_WIDTH 4 16938c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_MASK (UL(0xf) << ID_AA64PFR1_NMI_SHIFT) 16948c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_VAL(x) ((x) & ID_AA64PFR1_NMI_MASK) 16958c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_NONE (UL(0x0) << ID_AA64PFR1_NMI_SHIFT) 16968c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_IMPL (UL(0x1) << ID_AA64PFR1_NMI_SHIFT) 1697e5acd89cSAndrew Turner 169853e1af5aSAndrew Turner /* ID_AA64PFR2_EL1 */ 169953e1af5aSAndrew Turner #define ID_AA64PFR2_EL1 MRS_REG(ID_AA64PFR2_EL1) 1700d6d860c7SAndrew Turner #define ID_AA64PFR2_EL1_REG MRS_REG_ALT_NAME(ID_AA64PFR2_EL1) 170153e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_op0 3 170253e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_op1 0 170353e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_CRn 0 170453e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_CRm 4 170553e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_op2 2 170653e1af5aSAndrew Turner 1707cb91f112SAndrew Turner /* ID_AA64ZFR0_EL1 */ 1708cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1 MRS_REG(ID_AA64ZFR0_EL1) 1709cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64ZFR0_EL1) 1710cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op0 3 1711cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op1 0 1712cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_CRn 0 1713cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_CRm 4 1714cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op2 4 1715cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SHIFT 0 1716590c3232SAndrew Turner #define ID_AA64ZFR0_SVEver_WIDTH 4 1717cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_MASK (UL(0xf) << ID_AA64ZFR0_SVEver_SHIFT) 1718cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_VAL(x) ((x) & ID_AA64ZFR0_SVEver_MASK 1719cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE1 (UL(0x0) << ID_AA64ZFR0_SVEver_SHIFT) 1720cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE2 (UL(0x1) << ID_AA64ZFR0_SVEver_SHIFT) 1721205c1007SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE2P1 (UL(0x2) << ID_AA64ZFR0_SVEver_SHIFT) 1722cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_SHIFT 4 1723590c3232SAndrew Turner #define ID_AA64ZFR0_AES_WIDTH 4 1724cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_MASK (UL(0xf) << ID_AA64ZFR0_AES_SHIFT) 1725cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_VAL(x) ((x) & ID_AA64ZFR0_AES_MASK 1726cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_NONE (UL(0x0) << ID_AA64ZFR0_AES_SHIFT) 1727cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_BASE (UL(0x1) << ID_AA64ZFR0_AES_SHIFT) 1728cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_PMULL (UL(0x2) << ID_AA64ZFR0_AES_SHIFT) 1729cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_SHIFT 16 1730590c3232SAndrew Turner #define ID_AA64ZFR0_BitPerm_WIDTH 4 1731cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_MASK (UL(0xf) << ID_AA64ZFR0_BitPerm_SHIFT) 1732cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_VAL(x) ((x) & ID_AA64ZFR0_BitPerm_MASK 1733cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_NONE (UL(0x0) << ID_AA64ZFR0_BitPerm_SHIFT) 1734cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_IMPL (UL(0x1) << ID_AA64ZFR0_BitPerm_SHIFT) 1735cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_SHIFT 20 1736590c3232SAndrew Turner #define ID_AA64ZFR0_BF16_WIDTH 4 1737cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_MASK (UL(0xf) << ID_AA64ZFR0_BF16_SHIFT) 1738cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_VAL(x) ((x) & ID_AA64ZFR0_BF16_MASK 1739cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_NONE (UL(0x0) << ID_AA64ZFR0_BF16_SHIFT) 1740cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_BASE (UL(0x1) << ID_AA64ZFR0_BF16_SHIFT) 1741cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_EBF (UL(0x1) << ID_AA64ZFR0_BF16_SHIFT) 1742cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_SHIFT 32 1743590c3232SAndrew Turner #define ID_AA64ZFR0_SHA3_WIDTH 4 1744cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_MASK (UL(0xf) << ID_AA64ZFR0_SHA3_SHIFT) 1745cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_VAL(x) ((x) & ID_AA64ZFR0_SHA3_MASK 1746cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_NONE (UL(0x0) << ID_AA64ZFR0_SHA3_SHIFT) 1747cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_IMPL (UL(0x1) << ID_AA64ZFR0_SHA3_SHIFT) 1748cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_SHIFT 40 1749590c3232SAndrew Turner #define ID_AA64ZFR0_SM4_WIDTH 4 1750cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_MASK (UL(0xf) << ID_AA64ZFR0_SM4_SHIFT) 1751cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_VAL(x) ((x) & ID_AA64ZFR0_SM4_MASK 1752cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_NONE (UL(0x0) << ID_AA64ZFR0_SM4_SHIFT) 1753cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_IMPL (UL(0x1) << ID_AA64ZFR0_SM4_SHIFT) 1754cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_SHIFT 44 1755590c3232SAndrew Turner #define ID_AA64ZFR0_I8MM_WIDTH 4 1756cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_MASK (UL(0xf) << ID_AA64ZFR0_I8MM_SHIFT) 1757cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_VAL(x) ((x) & ID_AA64ZFR0_I8MM_MASK 1758cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_NONE (UL(0x0) << ID_AA64ZFR0_I8MM_SHIFT) 1759cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_IMPL (UL(0x1) << ID_AA64ZFR0_I8MM_SHIFT) 1760cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_SHIFT 52 1761590c3232SAndrew Turner #define ID_AA64ZFR0_F32MM_WIDTH 4 1762cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_MASK (UL(0xf) << ID_AA64ZFR0_F32MM_SHIFT) 1763cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_VAL(x) ((x) & ID_AA64ZFR0_F32MM_MASK 1764cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_NONE (UL(0x0) << ID_AA64ZFR0_F32MM_SHIFT) 1765cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_IMPL (UL(0x1) << ID_AA64ZFR0_F32MM_SHIFT) 1766cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_SHIFT 56 1767590c3232SAndrew Turner #define ID_AA64ZFR0_F64MM_WIDTH 4 1768cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_MASK (UL(0xf) << ID_AA64ZFR0_F64MM_SHIFT) 1769cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_VAL(x) ((x) & ID_AA64ZFR0_F64MM_MASK 1770cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_NONE (UL(0x0) << ID_AA64ZFR0_F64MM_SHIFT) 1771cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_IMPL (UL(0x1) << ID_AA64ZFR0_F64MM_SHIFT) 1772cb91f112SAndrew Turner 1773bbe80bffSPeter Grehan /* ID_ISAR5_EL1 */ 177410f6680fSAndrew Turner #define ID_ISAR5_EL1 MRS_REG(ID_ISAR5_EL1) 177510f6680fSAndrew Turner #define ID_ISAR5_EL1_op0 0x3 177610f6680fSAndrew Turner #define ID_ISAR5_EL1_op1 0x0 177710f6680fSAndrew Turner #define ID_ISAR5_EL1_CRn 0x0 177810f6680fSAndrew Turner #define ID_ISAR5_EL1_CRm 0x2 177910f6680fSAndrew Turner #define ID_ISAR5_EL1_op2 0x5 1780bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_SHIFT 0 1781590c3232SAndrew Turner #define ID_ISAR5_SEVL_WIDTH 4 1782bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_MASK (UL(0xf) << ID_ISAR5_SEVL_SHIFT) 1783bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_VAL(x) ((x) & ID_ISAR5_SEVL_MASK) 1784bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_NOP (UL(0x0) << ID_ISAR5_SEVL_SHIFT) 1785bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_IMPL (UL(0x1) << ID_ISAR5_SEVL_SHIFT) 1786bbe80bffSPeter Grehan #define ID_ISAR5_AES_SHIFT 4 1787590c3232SAndrew Turner #define ID_ISAR5_AES_WIDTH 4 1788bbe80bffSPeter Grehan #define ID_ISAR5_AES_MASK (UL(0xf) << ID_ISAR5_AES_SHIFT) 1789bbe80bffSPeter Grehan #define ID_ISAR5_AES_VAL(x) ((x) & ID_ISAR5_AES_MASK) 1790bbe80bffSPeter Grehan #define ID_ISAR5_AES_NONE (UL(0x0) << ID_ISAR5_AES_SHIFT) 1791bbe80bffSPeter Grehan #define ID_ISAR5_AES_BASE (UL(0x1) << ID_ISAR5_AES_SHIFT) 1792bbe80bffSPeter Grehan #define ID_ISAR5_AES_VMULL (UL(0x2) << ID_ISAR5_AES_SHIFT) 1793bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_SHIFT 8 1794590c3232SAndrew Turner #define ID_ISAR5_SHA1_WIDTH 4 1795bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_MASK (UL(0xf) << ID_ISAR5_SHA1_SHIFT) 1796bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_VAL(x) ((x) & ID_ISAR5_SHA1_MASK) 1797bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_NONE (UL(0x0) << ID_ISAR5_SHA1_SHIFT) 1798bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_IMPL (UL(0x1) << ID_ISAR5_SHA1_SHIFT) 1799bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_SHIFT 12 1800590c3232SAndrew Turner #define ID_ISAR5_SHA2_WIDTH 4 1801bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_MASK (UL(0xf) << ID_ISAR5_SHA2_SHIFT) 1802bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_VAL(x) ((x) & ID_ISAR5_SHA2_MASK) 1803bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_NONE (UL(0x0) << ID_ISAR5_SHA2_SHIFT) 1804bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_IMPL (UL(0x1) << ID_ISAR5_SHA2_SHIFT) 1805bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_SHIFT 16 1806590c3232SAndrew Turner #define ID_ISAR5_CRC32_WIDTH 4 1807bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_MASK (UL(0xf) << ID_ISAR5_CRC32_SHIFT) 1808bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_VAL(x) ((x) & ID_ISAR5_CRC32_MASK) 1809bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_NONE (UL(0x0) << ID_ISAR5_CRC32_SHIFT) 1810bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_IMPL (UL(0x1) << ID_ISAR5_CRC32_SHIFT) 1811bbe80bffSPeter Grehan #define ID_ISAR5_RDM_SHIFT 24 1812590c3232SAndrew Turner #define ID_ISAR5_RDM_WIDTH 4 1813bbe80bffSPeter Grehan #define ID_ISAR5_RDM_MASK (UL(0xf) << ID_ISAR5_RDM_SHIFT) 1814bbe80bffSPeter Grehan #define ID_ISAR5_RDM_VAL(x) ((x) & ID_ISAR5_RDM_MASK) 1815bbe80bffSPeter Grehan #define ID_ISAR5_RDM_NONE (UL(0x0) << ID_ISAR5_RDM_SHIFT) 1816bbe80bffSPeter Grehan #define ID_ISAR5_RDM_IMPL (UL(0x1) << ID_ISAR5_RDM_SHIFT) 1817bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_SHIFT 28 1818590c3232SAndrew Turner #define ID_ISAR5_VCMA_WIDTH 4 1819bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_MASK (UL(0xf) << ID_ISAR5_VCMA_SHIFT) 1820bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_VAL(x) ((x) & ID_ISAR5_VCMA_MASK) 1821bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_NONE (UL(0x0) << ID_ISAR5_VCMA_SHIFT) 1822bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_IMPL (UL(0x1) << ID_ISAR5_VCMA_SHIFT) 1823bbe80bffSPeter Grehan 18242abeef73SAndrew Turner /* MAIR_EL1 - Memory Attribute Indirection Register */ 182547361851SAndrew Turner #define MAIR_EL1_REG MRS_REG_ALT_NAME(MAIR_EL1) 182647361851SAndrew Turner #define MAIR_EL1_op0 3 182747361851SAndrew Turner #define MAIR_EL1_op1 0 182847361851SAndrew Turner #define MAIR_EL1_CRn 10 182947361851SAndrew Turner #define MAIR_EL1_CRm 2 183047361851SAndrew Turner #define MAIR_EL1_op2 0 1831a671f96dSAndrew Turner #define MAIR_ATTR_MASK(idx) (UL(0xff) << ((n)* 8)) 18322abeef73SAndrew Turner #define MAIR_ATTR(attr, idx) ((attr) << ((idx) * 8)) 1833a671f96dSAndrew Turner #define MAIR_DEVICE_nGnRnE UL(0x00) 1834a671f96dSAndrew Turner #define MAIR_DEVICE_nGnRE UL(0x04) 1835a671f96dSAndrew Turner #define MAIR_NORMAL_NC UL(0x44) 1836a671f96dSAndrew Turner #define MAIR_NORMAL_WT UL(0xbb) 1837a671f96dSAndrew Turner #define MAIR_NORMAL_WB UL(0xff) 18382abeef73SAndrew Turner 183947361851SAndrew Turner /* MAIR_EL12 */ 184047361851SAndrew Turner #define MAIR_EL12_REG MRS_REG_ALT_NAME(MAIR_EL12) 184147361851SAndrew Turner #define MAIR_EL12_op0 3 184247361851SAndrew Turner #define MAIR_EL12_op1 5 184347361851SAndrew Turner #define MAIR_EL12_CRn 10 184447361851SAndrew Turner #define MAIR_EL12_CRm 2 184547361851SAndrew Turner #define MAIR_EL12_op2 0 184647361851SAndrew Turner 18474dc81560SAndrew Turner /* MDCCINT_EL1 */ 18484dc81560SAndrew Turner #define MDCCINT_EL1 MRS_REG(MDCCINT_EL1) 18494dc81560SAndrew Turner #define MDCCINT_EL1_op0 2 18504dc81560SAndrew Turner #define MDCCINT_EL1_op1 0 18514dc81560SAndrew Turner #define MDCCINT_EL1_CRn 0 18524dc81560SAndrew Turner #define MDCCINT_EL1_CRm 2 18534dc81560SAndrew Turner #define MDCCINT_EL1_op2 0 18544dc81560SAndrew Turner 18554dc81560SAndrew Turner /* MDCCSR_EL0 */ 18564dc81560SAndrew Turner #define MDCCSR_EL0 MRS_REG(MDCCSR_EL0) 18574dc81560SAndrew Turner #define MDCCSR_EL0_op0 2 18584dc81560SAndrew Turner #define MDCCSR_EL0_op1 3 18594dc81560SAndrew Turner #define MDCCSR_EL0_CRn 0 18604dc81560SAndrew Turner #define MDCCSR_EL0_CRm 1 18614dc81560SAndrew Turner #define MDCCSR_EL0_op2 0 18624dc81560SAndrew Turner 18632abeef73SAndrew Turner /* MDSCR_EL1 - Monitor Debug System Control Register */ 18644dc81560SAndrew Turner #define MDSCR_EL1 MRS_REG(MDSCR_EL1) 18654dc81560SAndrew Turner #define MDSCR_EL1_op0 2 18664dc81560SAndrew Turner #define MDSCR_EL1_op1 0 18674dc81560SAndrew Turner #define MDSCR_EL1_CRn 0 18684dc81560SAndrew Turner #define MDSCR_EL1_CRm 2 18694dc81560SAndrew Turner #define MDSCR_EL1_op2 2 18702abeef73SAndrew Turner #define MDSCR_SS_SHIFT 0 18712abeef73SAndrew Turner #define MDSCR_SS (UL(0x1) << MDSCR_SS_SHIFT) 18722abeef73SAndrew Turner #define MDSCR_KDE_SHIFT 13 18732abeef73SAndrew Turner #define MDSCR_KDE (UL(0x1) << MDSCR_KDE_SHIFT) 18742abeef73SAndrew Turner #define MDSCR_MDE_SHIFT 15 18752abeef73SAndrew Turner #define MDSCR_MDE (UL(0x1) << MDSCR_MDE_SHIFT) 18762abeef73SAndrew Turner 1877178747a1SAndrew Turner /* MIDR_EL1 - Main ID Register */ 1878178747a1SAndrew Turner #define MIDR_EL1 MRS_REG(MIDR_EL1) 1879178747a1SAndrew Turner #define MIDR_EL1_op0 3 1880178747a1SAndrew Turner #define MIDR_EL1_op1 0 1881178747a1SAndrew Turner #define MIDR_EL1_CRn 0 1882178747a1SAndrew Turner #define MIDR_EL1_CRm 0 1883178747a1SAndrew Turner #define MIDR_EL1_op2 0 1884178747a1SAndrew Turner 1885419f8fc7SAndrew Turner /* MPIDR_EL1 - Multiprocessor Affinity Register */ 1886419f8fc7SAndrew Turner #define MPIDR_EL1 MRS_REG(MPIDR_EL1) 1887419f8fc7SAndrew Turner #define MPIDR_EL1_op0 3 1888419f8fc7SAndrew Turner #define MPIDR_EL1_op1 0 1889419f8fc7SAndrew Turner #define MPIDR_EL1_CRn 0 1890419f8fc7SAndrew Turner #define MPIDR_EL1_CRm 0 1891419f8fc7SAndrew Turner #define MPIDR_EL1_op2 5 1892419f8fc7SAndrew Turner #define MPIDR_AFF0_SHIFT 0 1893419f8fc7SAndrew Turner #define MPIDR_AFF0_MASK (UL(0xff) << MPIDR_AFF0_SHIFT) 1894419f8fc7SAndrew Turner #define MPIDR_AFF0_VAL(x) ((x) & MPIDR_AFF0_MASK) 1895419f8fc7SAndrew Turner #define MPIDR_AFF1_SHIFT 8 1896419f8fc7SAndrew Turner #define MPIDR_AFF1_MASK (UL(0xff) << MPIDR_AFF1_SHIFT) 1897419f8fc7SAndrew Turner #define MPIDR_AFF1_VAL(x) ((x) & MPIDR_AFF1_MASK) 1898419f8fc7SAndrew Turner #define MPIDR_AFF2_SHIFT 16 1899419f8fc7SAndrew Turner #define MPIDR_AFF2_MASK (UL(0xff) << MPIDR_AFF2_SHIFT) 1900419f8fc7SAndrew Turner #define MPIDR_AFF2_VAL(x) ((x) & MPIDR_AFF2_MASK) 1901419f8fc7SAndrew Turner #define MPIDR_MT_SHIFT 24 1902419f8fc7SAndrew Turner #define MPIDR_MT_MASK (UL(0x1) << MPIDR_MT_SHIFT) 1903419f8fc7SAndrew Turner #define MPIDR_U_SHIFT 30 1904419f8fc7SAndrew Turner #define MPIDR_U_MASK (UL(0x1) << MPIDR_U_SHIFT) 1905419f8fc7SAndrew Turner #define MPIDR_AFF3_SHIFT 32 1906419f8fc7SAndrew Turner #define MPIDR_AFF3_MASK (UL(0xff) << MPIDR_AFF3_SHIFT) 1907419f8fc7SAndrew Turner #define MPIDR_AFF3_VAL(x) ((x) & MPIDR_AFF3_MASK) 1908419f8fc7SAndrew Turner 19092abeef73SAndrew Turner /* MVFR0_EL1 */ 19102abeef73SAndrew Turner #define MVFR0_EL1 MRS_REG(MVFR0_EL1) 19112abeef73SAndrew Turner #define MVFR0_EL1_op0 0x3 19122abeef73SAndrew Turner #define MVFR0_EL1_op1 0x0 19132abeef73SAndrew Turner #define MVFR0_EL1_CRn 0x0 19142abeef73SAndrew Turner #define MVFR0_EL1_CRm 0x3 19152abeef73SAndrew Turner #define MVFR0_EL1_op2 0x0 19162abeef73SAndrew Turner #define MVFR0_SIMDReg_SHIFT 0 1917590c3232SAndrew Turner #define MVFR0_SIMDReg_WIDTH 4 19182abeef73SAndrew Turner #define MVFR0_SIMDReg_MASK (UL(0xf) << MVFR0_SIMDReg_SHIFT) 19192abeef73SAndrew Turner #define MVFR0_SIMDReg_VAL(x) ((x) & MVFR0_SIMDReg_MASK) 19202abeef73SAndrew Turner #define MVFR0_SIMDReg_NONE (UL(0x0) << MVFR0_SIMDReg_SHIFT) 19212abeef73SAndrew Turner #define MVFR0_SIMDReg_FP (UL(0x1) << MVFR0_SIMDReg_SHIFT) 19222abeef73SAndrew Turner #define MVFR0_SIMDReg_AdvSIMD (UL(0x2) << MVFR0_SIMDReg_SHIFT) 19232abeef73SAndrew Turner #define MVFR0_FPSP_SHIFT 4 1924590c3232SAndrew Turner #define MVFR0_FPSP_WIDTH 4 19252abeef73SAndrew Turner #define MVFR0_FPSP_MASK (UL(0xf) << MVFR0_FPSP_SHIFT) 19262abeef73SAndrew Turner #define MVFR0_FPSP_VAL(x) ((x) & MVFR0_FPSP_MASK) 19272abeef73SAndrew Turner #define MVFR0_FPSP_NONE (UL(0x0) << MVFR0_FPSP_SHIFT) 19282abeef73SAndrew Turner #define MVFR0_FPSP_VFP_v2 (UL(0x1) << MVFR0_FPSP_SHIFT) 19292abeef73SAndrew Turner #define MVFR0_FPSP_VFP_v3_v4 (UL(0x2) << MVFR0_FPSP_SHIFT) 19302abeef73SAndrew Turner #define MVFR0_FPDP_SHIFT 8 1931590c3232SAndrew Turner #define MVFR0_FPDP_WIDTH 4 19322abeef73SAndrew Turner #define MVFR0_FPDP_MASK (UL(0xf) << MVFR0_FPDP_SHIFT) 19332abeef73SAndrew Turner #define MVFR0_FPDP_VAL(x) ((x) & MVFR0_FPDP_MASK) 19342abeef73SAndrew Turner #define MVFR0_FPDP_NONE (UL(0x0) << MVFR0_FPDP_SHIFT) 19352abeef73SAndrew Turner #define MVFR0_FPDP_VFP_v2 (UL(0x1) << MVFR0_FPDP_SHIFT) 19362abeef73SAndrew Turner #define MVFR0_FPDP_VFP_v3_v4 (UL(0x2) << MVFR0_FPDP_SHIFT) 19372abeef73SAndrew Turner #define MVFR0_FPTrap_SHIFT 12 1938590c3232SAndrew Turner #define MVFR0_FPTrap_WIDTH 4 19392abeef73SAndrew Turner #define MVFR0_FPTrap_MASK (UL(0xf) << MVFR0_FPTrap_SHIFT) 19402abeef73SAndrew Turner #define MVFR0_FPTrap_VAL(x) ((x) & MVFR0_FPTrap_MASK) 19412abeef73SAndrew Turner #define MVFR0_FPTrap_NONE (UL(0x0) << MVFR0_FPTrap_SHIFT) 19422abeef73SAndrew Turner #define MVFR0_FPTrap_IMPL (UL(0x1) << MVFR0_FPTrap_SHIFT) 19432abeef73SAndrew Turner #define MVFR0_FPDivide_SHIFT 16 1944590c3232SAndrew Turner #define MVFR0_FPDivide_WIDTH 4 19452abeef73SAndrew Turner #define MVFR0_FPDivide_MASK (UL(0xf) << MVFR0_FPDivide_SHIFT) 19462abeef73SAndrew Turner #define MVFR0_FPDivide_VAL(x) ((x) & MVFR0_FPDivide_MASK) 19472abeef73SAndrew Turner #define MVFR0_FPDivide_NONE (UL(0x0) << MVFR0_FPDivide_SHIFT) 19482abeef73SAndrew Turner #define MVFR0_FPDivide_IMPL (UL(0x1) << MVFR0_FPDivide_SHIFT) 19492abeef73SAndrew Turner #define MVFR0_FPSqrt_SHIFT 20 1950590c3232SAndrew Turner #define MVFR0_FPSqrt_WIDTH 4 19512abeef73SAndrew Turner #define MVFR0_FPSqrt_MASK (UL(0xf) << MVFR0_FPSqrt_SHIFT) 19522abeef73SAndrew Turner #define MVFR0_FPSqrt_VAL(x) ((x) & MVFR0_FPSqrt_MASK) 19532abeef73SAndrew Turner #define MVFR0_FPSqrt_NONE (UL(0x0) << MVFR0_FPSqrt_SHIFT) 19542abeef73SAndrew Turner #define MVFR0_FPSqrt_IMPL (UL(0x1) << MVFR0_FPSqrt_SHIFT) 19552abeef73SAndrew Turner #define MVFR0_FPShVec_SHIFT 24 1956590c3232SAndrew Turner #define MVFR0_FPShVec_WIDTH 4 19572abeef73SAndrew Turner #define MVFR0_FPShVec_MASK (UL(0xf) << MVFR0_FPShVec_SHIFT) 19582abeef73SAndrew Turner #define MVFR0_FPShVec_VAL(x) ((x) & MVFR0_FPShVec_MASK) 19592abeef73SAndrew Turner #define MVFR0_FPShVec_NONE (UL(0x0) << MVFR0_FPShVec_SHIFT) 19602abeef73SAndrew Turner #define MVFR0_FPShVec_IMPL (UL(0x1) << MVFR0_FPShVec_SHIFT) 19612abeef73SAndrew Turner #define MVFR0_FPRound_SHIFT 28 1962590c3232SAndrew Turner #define MVFR0_FPRound_WIDTH 4 19632abeef73SAndrew Turner #define MVFR0_FPRound_MASK (UL(0xf) << MVFR0_FPRound_SHIFT) 19642abeef73SAndrew Turner #define MVFR0_FPRound_VAL(x) ((x) & MVFR0_FPRound_MASK) 19652abeef73SAndrew Turner #define MVFR0_FPRound_NONE (UL(0x0) << MVFR0_FPRound_SHIFT) 19662abeef73SAndrew Turner #define MVFR0_FPRound_IMPL (UL(0x1) << MVFR0_FPRound_SHIFT) 19672abeef73SAndrew Turner 19682abeef73SAndrew Turner /* MVFR1_EL1 */ 19692abeef73SAndrew Turner #define MVFR1_EL1 MRS_REG(MVFR1_EL1) 19702abeef73SAndrew Turner #define MVFR1_EL1_op0 0x3 19712abeef73SAndrew Turner #define MVFR1_EL1_op1 0x0 19722abeef73SAndrew Turner #define MVFR1_EL1_CRn 0x0 19732abeef73SAndrew Turner #define MVFR1_EL1_CRm 0x3 19742abeef73SAndrew Turner #define MVFR1_EL1_op2 0x1 19752abeef73SAndrew Turner #define MVFR1_FPFtZ_SHIFT 0 1976590c3232SAndrew Turner #define MVFR1_FPFtZ_WIDTH 4 19772abeef73SAndrew Turner #define MVFR1_FPFtZ_MASK (UL(0xf) << MVFR1_FPFtZ_SHIFT) 19782abeef73SAndrew Turner #define MVFR1_FPFtZ_VAL(x) ((x) & MVFR1_FPFtZ_MASK) 19792abeef73SAndrew Turner #define MVFR1_FPFtZ_NONE (UL(0x0) << MVFR1_FPFtZ_SHIFT) 19802abeef73SAndrew Turner #define MVFR1_FPFtZ_IMPL (UL(0x1) << MVFR1_FPFtZ_SHIFT) 19812abeef73SAndrew Turner #define MVFR1_FPDNaN_SHIFT 4 1982590c3232SAndrew Turner #define MVFR1_FPDNaN_WIDTH 4 19832abeef73SAndrew Turner #define MVFR1_FPDNaN_MASK (UL(0xf) << MVFR1_FPDNaN_SHIFT) 19842abeef73SAndrew Turner #define MVFR1_FPDNaN_VAL(x) ((x) & MVFR1_FPDNaN_MASK) 19852abeef73SAndrew Turner #define MVFR1_FPDNaN_NONE (UL(0x0) << MVFR1_FPDNaN_SHIFT) 19862abeef73SAndrew Turner #define MVFR1_FPDNaN_IMPL (UL(0x1) << MVFR1_FPDNaN_SHIFT) 19872abeef73SAndrew Turner #define MVFR1_SIMDLS_SHIFT 8 1988590c3232SAndrew Turner #define MVFR1_SIMDLS_WIDTH 4 19892abeef73SAndrew Turner #define MVFR1_SIMDLS_MASK (UL(0xf) << MVFR1_SIMDLS_SHIFT) 19902abeef73SAndrew Turner #define MVFR1_SIMDLS_VAL(x) ((x) & MVFR1_SIMDLS_MASK) 19912abeef73SAndrew Turner #define MVFR1_SIMDLS_NONE (UL(0x0) << MVFR1_SIMDLS_SHIFT) 19922abeef73SAndrew Turner #define MVFR1_SIMDLS_IMPL (UL(0x1) << MVFR1_SIMDLS_SHIFT) 19932abeef73SAndrew Turner #define MVFR1_SIMDInt_SHIFT 12 1994590c3232SAndrew Turner #define MVFR1_SIMDInt_WIDTH 4 19952abeef73SAndrew Turner #define MVFR1_SIMDInt_MASK (UL(0xf) << MVFR1_SIMDInt_SHIFT) 19962abeef73SAndrew Turner #define MVFR1_SIMDInt_VAL(x) ((x) & MVFR1_SIMDInt_MASK) 19972abeef73SAndrew Turner #define MVFR1_SIMDInt_NONE (UL(0x0) << MVFR1_SIMDInt_SHIFT) 19982abeef73SAndrew Turner #define MVFR1_SIMDInt_IMPL (UL(0x1) << MVFR1_SIMDInt_SHIFT) 19992abeef73SAndrew Turner #define MVFR1_SIMDSP_SHIFT 16 2000590c3232SAndrew Turner #define MVFR1_SIMDSP_WIDTH 4 20012abeef73SAndrew Turner #define MVFR1_SIMDSP_MASK (UL(0xf) << MVFR1_SIMDSP_SHIFT) 20022abeef73SAndrew Turner #define MVFR1_SIMDSP_VAL(x) ((x) & MVFR1_SIMDSP_MASK) 20032abeef73SAndrew Turner #define MVFR1_SIMDSP_NONE (UL(0x0) << MVFR1_SIMDSP_SHIFT) 20042abeef73SAndrew Turner #define MVFR1_SIMDSP_IMPL (UL(0x1) << MVFR1_SIMDSP_SHIFT) 20052abeef73SAndrew Turner #define MVFR1_SIMDHP_SHIFT 20 2006590c3232SAndrew Turner #define MVFR1_SIMDHP_WIDTH 4 20072abeef73SAndrew Turner #define MVFR1_SIMDHP_MASK (UL(0xf) << MVFR1_SIMDHP_SHIFT) 20082abeef73SAndrew Turner #define MVFR1_SIMDHP_VAL(x) ((x) & MVFR1_SIMDHP_MASK) 20092abeef73SAndrew Turner #define MVFR1_SIMDHP_NONE (UL(0x0) << MVFR1_SIMDHP_SHIFT) 20102abeef73SAndrew Turner #define MVFR1_SIMDHP_CONV_SP (UL(0x1) << MVFR1_SIMDHP_SHIFT) 20112abeef73SAndrew Turner #define MVFR1_SIMDHP_ARITH (UL(0x2) << MVFR1_SIMDHP_SHIFT) 20122abeef73SAndrew Turner #define MVFR1_FPHP_SHIFT 24 2013590c3232SAndrew Turner #define MVFR1_FPHP_WIDTH 4 20142abeef73SAndrew Turner #define MVFR1_FPHP_MASK (UL(0xf) << MVFR1_FPHP_SHIFT) 20152abeef73SAndrew Turner #define MVFR1_FPHP_VAL(x) ((x) & MVFR1_FPHP_MASK) 20162abeef73SAndrew Turner #define MVFR1_FPHP_NONE (UL(0x0) << MVFR1_FPHP_SHIFT) 20172abeef73SAndrew Turner #define MVFR1_FPHP_CONV_SP (UL(0x1) << MVFR1_FPHP_SHIFT) 20182abeef73SAndrew Turner #define MVFR1_FPHP_CONV_DP (UL(0x2) << MVFR1_FPHP_SHIFT) 20192abeef73SAndrew Turner #define MVFR1_FPHP_ARITH (UL(0x3) << MVFR1_FPHP_SHIFT) 20202abeef73SAndrew Turner #define MVFR1_SIMDFMAC_SHIFT 28 2021590c3232SAndrew Turner #define MVFR1_SIMDFMAC_WIDTH 4 20222abeef73SAndrew Turner #define MVFR1_SIMDFMAC_MASK (UL(0xf) << MVFR1_SIMDFMAC_SHIFT) 20232abeef73SAndrew Turner #define MVFR1_SIMDFMAC_VAL(x) ((x) & MVFR1_SIMDFMAC_MASK) 20242abeef73SAndrew Turner #define MVFR1_SIMDFMAC_NONE (UL(0x0) << MVFR1_SIMDFMAC_SHIFT) 20252abeef73SAndrew Turner #define MVFR1_SIMDFMAC_IMPL (UL(0x1) << MVFR1_SIMDFMAC_SHIFT) 20262abeef73SAndrew Turner 20274dc81560SAndrew Turner /* OSDLR_EL1 */ 20284dc81560SAndrew Turner #define OSDLR_EL1 MRS_REG(OSDLR_EL1) 20294dc81560SAndrew Turner #define OSDLR_EL1_op0 2 20304dc81560SAndrew Turner #define OSDLR_EL1_op1 0 20314dc81560SAndrew Turner #define OSDLR_EL1_CRn 1 20324dc81560SAndrew Turner #define OSDLR_EL1_CRm 3 20334dc81560SAndrew Turner #define OSDLR_EL1_op2 4 20344dc81560SAndrew Turner 20354dc81560SAndrew Turner /* OSLAR_EL1 */ 20364dc81560SAndrew Turner #define OSLAR_EL1 MRS_REG(OSLAR_EL1) 20374dc81560SAndrew Turner #define OSLAR_EL1_op0 2 20384dc81560SAndrew Turner #define OSLAR_EL1_op1 0 20394dc81560SAndrew Turner #define OSLAR_EL1_CRn 1 20404dc81560SAndrew Turner #define OSLAR_EL1_CRm 0 20414dc81560SAndrew Turner #define OSLAR_EL1_op2 4 20424dc81560SAndrew Turner 20434dc81560SAndrew Turner /* OSLSR_EL1 */ 20444dc81560SAndrew Turner #define OSLSR_EL1 MRS_REG(OSLSR_EL1) 20454dc81560SAndrew Turner #define OSLSR_EL1_op0 2 20464dc81560SAndrew Turner #define OSLSR_EL1_op1 0 20474dc81560SAndrew Turner #define OSLSR_EL1_CRn 1 20484dc81560SAndrew Turner #define OSLSR_EL1_CRm 1 20494dc81560SAndrew Turner #define OSLSR_EL1_op2 4 20504dc81560SAndrew Turner 20512abeef73SAndrew Turner /* PAR_EL1 - Physical Address Register */ 20522abeef73SAndrew Turner #define PAR_F_SHIFT 0 20532abeef73SAndrew Turner #define PAR_F (0x1 << PAR_F_SHIFT) 20542abeef73SAndrew Turner #define PAR_SUCCESS(x) (((x) & PAR_F) == 0) 20552abeef73SAndrew Turner /* When PAR_F == 0 (success) */ 20562abeef73SAndrew Turner #define PAR_LOW_MASK 0xfff 20572abeef73SAndrew Turner #define PAR_SH_SHIFT 7 20582abeef73SAndrew Turner #define PAR_SH_MASK (0x3 << PAR_SH_SHIFT) 20592abeef73SAndrew Turner #define PAR_NS_SHIFT 9 20602abeef73SAndrew Turner #define PAR_NS_MASK (0x3 << PAR_NS_SHIFT) 20612abeef73SAndrew Turner #define PAR_PA_SHIFT 12 20622abeef73SAndrew Turner #define PAR_PA_MASK 0x0000fffffffff000 20632abeef73SAndrew Turner #define PAR_ATTR_SHIFT 56 20642abeef73SAndrew Turner #define PAR_ATTR_MASK (0xff << PAR_ATTR_SHIFT) 20652abeef73SAndrew Turner /* When PAR_F == 1 (aborted) */ 20662abeef73SAndrew Turner #define PAR_FST_SHIFT 1 20672abeef73SAndrew Turner #define PAR_FST_MASK (0x3f << PAR_FST_SHIFT) 20682abeef73SAndrew Turner #define PAR_PTW_SHIFT 8 20692abeef73SAndrew Turner #define PAR_PTW_MASK (0x1 << PAR_PTW_SHIFT) 20702abeef73SAndrew Turner #define PAR_S_SHIFT 9 20712abeef73SAndrew Turner #define PAR_S_MASK (0x1 << PAR_S_SHIFT) 20722abeef73SAndrew Turner 20732ad19997SAndrew Turner /* PMBIDR_EL1 */ 20742ad19997SAndrew Turner #define PMBIDR_EL1 MRS_REG(PMBIDR_EL1) 2075f7bdaa10SZachary Leaf #define PMBIDR_EL1_REG MRS_REG_ALT_NAME(PMBIDR_EL1) 2076f7bdaa10SZachary Leaf #define PMBIDR_EL1_op0 3 2077f7bdaa10SZachary Leaf #define PMBIDR_EL1_op1 0 2078f7bdaa10SZachary Leaf #define PMBIDR_EL1_CRn 9 2079f7bdaa10SZachary Leaf #define PMBIDR_EL1_CRm 10 2080f7bdaa10SZachary Leaf #define PMBIDR_EL1_op2 7 20812ad19997SAndrew Turner #define PMBIDR_Align_SHIFT 0 20822ad19997SAndrew Turner #define PMBIDR_Align_MASK (UL(0xf) << PMBIDR_Align_SHIFT) 20832ad19997SAndrew Turner #define PMBIDR_P_SHIFT 4 20842ad19997SAndrew Turner #define PMBIDR_P (UL(0x1) << PMBIDR_P_SHIFT) 20852ad19997SAndrew Turner #define PMBIDR_F_SHIFT 5 20862ad19997SAndrew Turner #define PMBIDR_F (UL(0x1) << PMBIDR_F_SHIFT) 20872ad19997SAndrew Turner 20882ad19997SAndrew Turner /* PMBLIMITR_EL1 */ 20892ad19997SAndrew Turner #define PMBLIMITR_EL1 MRS_REG(PMBLIMITR_EL1) 2090f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_REG MRS_REG_ALT_NAME(PMBLIMITR_EL1) 2091f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_op0 3 2092f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_op1 0 2093f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_CRn 9 2094f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_CRm 10 2095f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_op2 0 20962ad19997SAndrew Turner #define PMBLIMITR_E_SHIFT 0 20972ad19997SAndrew Turner #define PMBLIMITR_E (UL(0x1) << PMBLIMITR_E_SHIFT) 20982ad19997SAndrew Turner #define PMBLIMITR_FM_SHIFT 1 20992ad19997SAndrew Turner #define PMBLIMITR_FM_MASK (UL(0x3) << PMBLIMITR_FM_SHIFT) 21002ad19997SAndrew Turner #define PMBLIMITR_PMFZ_SHIFT 5 21012ad19997SAndrew Turner #define PMBLIMITR_PMFZ (UL(0x1) << PMBLIMITR_PMFZ_SHIFT) 21022ad19997SAndrew Turner #define PMBLIMITR_LIMIT_SHIFT 12 21032ad19997SAndrew Turner #define PMBLIMITR_LIMIT_MASK \ 21042ad19997SAndrew Turner (UL(0xfffffffffffff) << PMBLIMITR_LIMIT_SHIFT) 21052ad19997SAndrew Turner 21062ad19997SAndrew Turner /* PMBPTR_EL1 */ 21072ad19997SAndrew Turner #define PMBPTR_EL1 MRS_REG(PMBPTR_EL1) 2108f7bdaa10SZachary Leaf #define PMBPTR_EL1_REG MRS_REG_ALT_NAME(PMBPTR_EL1) 2109f7bdaa10SZachary Leaf #define PMBPTR_EL1_op0 3 2110f7bdaa10SZachary Leaf #define PMBPTR_EL1_op1 0 2111f7bdaa10SZachary Leaf #define PMBPTR_EL1_CRn 9 2112f7bdaa10SZachary Leaf #define PMBPTR_EL1_CRm 10 2113f7bdaa10SZachary Leaf #define PMBPTR_EL1_op2 1 21142ad19997SAndrew Turner #define PMBPTR_PTR_SHIFT 0 21152ad19997SAndrew Turner #define PMBPTR_PTR_MASK \ 21162ad19997SAndrew Turner (UL(0xffffffffffffffff) << PMBPTR_PTR_SHIFT) 21172ad19997SAndrew Turner 21182ad19997SAndrew Turner /* PMBSR_EL1 */ 21192ad19997SAndrew Turner #define PMBSR_EL1 MRS_REG(PMBSR_EL1) 2120f7bdaa10SZachary Leaf #define PMBSR_EL1_REG MRS_REG_ALT_NAME(PMBSR_EL1) 2121f7bdaa10SZachary Leaf #define PMBSR_EL1_op0 3 2122f7bdaa10SZachary Leaf #define PMBSR_EL1_op1 0 2123f7bdaa10SZachary Leaf #define PMBSR_EL1_CRn 9 2124f7bdaa10SZachary Leaf #define PMBSR_EL1_CRm 10 2125f7bdaa10SZachary Leaf #define PMBSR_EL1_op2 3 21262ad19997SAndrew Turner #define PMBSR_MSS_SHIFT 0 21272ad19997SAndrew Turner #define PMBSR_MSS_MASK (UL(0xffff) << PMBSR_MSS_SHIFT) 212810b3eac8SZachary Leaf #define PMBSR_MSS_BSC_MASK (UL(0x3f) << PMBSR_MSS_SHIFT) 212910b3eac8SZachary Leaf #define PMBSR_MSS_FSC_MASK (UL(0x3f) << PMBSR_MSS_SHIFT) 21302ad19997SAndrew Turner #define PMBSR_COLL_SHIFT 16 21312ad19997SAndrew Turner #define PMBSR_COLL (UL(0x1) << PMBSR_COLL_SHIFT) 21322ad19997SAndrew Turner #define PMBSR_S_SHIFT 17 21332ad19997SAndrew Turner #define PMBSR_S (UL(0x1) << PMBSR_S_SHIFT) 21342ad19997SAndrew Turner #define PMBSR_EA_SHIFT 18 21352ad19997SAndrew Turner #define PMBSR_EA (UL(0x1) << PMBSR_EA_SHIFT) 21362ad19997SAndrew Turner #define PMBSR_DL_SHIFT 19 21372ad19997SAndrew Turner #define PMBSR_DL (UL(0x1) << PMBSR_DL_SHIFT) 21382ad19997SAndrew Turner #define PMBSR_EC_SHIFT 26 21392ad19997SAndrew Turner #define PMBSR_EC_MASK (UL(0x3f) << PMBSR_EC_SHIFT) 21402ad19997SAndrew Turner 21414dc81560SAndrew Turner /* PMCCFILTR_EL0 */ 21424dc81560SAndrew Turner #define PMCCFILTR_EL0 MRS_REG(PMCCFILTR_EL0) 21434dc81560SAndrew Turner #define PMCCFILTR_EL0_op0 3 21444dc81560SAndrew Turner #define PMCCFILTR_EL0_op1 3 21454dc81560SAndrew Turner #define PMCCFILTR_EL0_CRn 14 21464dc81560SAndrew Turner #define PMCCFILTR_EL0_CRm 15 21474dc81560SAndrew Turner #define PMCCFILTR_EL0_op2 7 21484dc81560SAndrew Turner 21494dc81560SAndrew Turner /* PMCCNTR_EL0 */ 21504dc81560SAndrew Turner #define PMCCNTR_EL0 MRS_REG(PMCCNTR_EL0) 21514dc81560SAndrew Turner #define PMCCNTR_EL0_op0 3 21524dc81560SAndrew Turner #define PMCCNTR_EL0_op1 3 21534dc81560SAndrew Turner #define PMCCNTR_EL0_CRn 9 21544dc81560SAndrew Turner #define PMCCNTR_EL0_CRm 13 21554dc81560SAndrew Turner #define PMCCNTR_EL0_op2 0 21564dc81560SAndrew Turner 21574dc81560SAndrew Turner /* PMCEID0_EL0 */ 21584dc81560SAndrew Turner #define PMCEID0_EL0 MRS_REG(PMCEID0_EL0) 21594dc81560SAndrew Turner #define PMCEID0_EL0_op0 3 21604dc81560SAndrew Turner #define PMCEID0_EL0_op1 3 21614dc81560SAndrew Turner #define PMCEID0_EL0_CRn 9 21624dc81560SAndrew Turner #define PMCEID0_EL0_CRm 12 21634dc81560SAndrew Turner #define PMCEID0_EL0_op2 6 21644dc81560SAndrew Turner 21654dc81560SAndrew Turner /* PMCEID1_EL0 */ 21664dc81560SAndrew Turner #define PMCEID1_EL0 MRS_REG(PMCEID1_EL0) 21674dc81560SAndrew Turner #define PMCEID1_EL0_op0 3 21684dc81560SAndrew Turner #define PMCEID1_EL0_op1 3 21694dc81560SAndrew Turner #define PMCEID1_EL0_CRn 9 21704dc81560SAndrew Turner #define PMCEID1_EL0_CRm 12 21714dc81560SAndrew Turner #define PMCEID1_EL0_op2 7 21724dc81560SAndrew Turner 21734dc81560SAndrew Turner /* PMCNTENCLR_EL0 */ 21744dc81560SAndrew Turner #define PMCNTENCLR_EL0 MRS_REG(PMCNTENCLR_EL0) 21754dc81560SAndrew Turner #define PMCNTENCLR_EL0_op0 3 21764dc81560SAndrew Turner #define PMCNTENCLR_EL0_op1 3 21774dc81560SAndrew Turner #define PMCNTENCLR_EL0_CRn 9 21784dc81560SAndrew Turner #define PMCNTENCLR_EL0_CRm 12 21794dc81560SAndrew Turner #define PMCNTENCLR_EL0_op2 2 21804dc81560SAndrew Turner 21814dc81560SAndrew Turner /* PMCNTENSET_EL0 */ 21824dc81560SAndrew Turner #define PMCNTENSET_EL0 MRS_REG(PMCNTENSET_EL0) 21834dc81560SAndrew Turner #define PMCNTENSET_EL0_op0 3 21844dc81560SAndrew Turner #define PMCNTENSET_EL0_op1 3 21854dc81560SAndrew Turner #define PMCNTENSET_EL0_CRn 9 21864dc81560SAndrew Turner #define PMCNTENSET_EL0_CRm 12 21874dc81560SAndrew Turner #define PMCNTENSET_EL0_op2 1 21884dc81560SAndrew Turner 2189a1b4e4faSAndrew Turner /* PMCR_EL0 - Perfomance Monitoring Counters */ 21904dc81560SAndrew Turner #define PMCR_EL0 MRS_REG(PMCR_EL0) 21914dc81560SAndrew Turner #define PMCR_EL0_op0 3 21924dc81560SAndrew Turner #define PMCR_EL0_op1 3 21934dc81560SAndrew Turner #define PMCR_EL0_CRn 9 21944dc81560SAndrew Turner #define PMCR_EL0_CRm 12 21954dc81560SAndrew Turner #define PMCR_EL0_op2 0 2196a1b4e4faSAndrew Turner #define PMCR_E (1 << 0) /* Enable all counters */ 2197a1b4e4faSAndrew Turner #define PMCR_P (1 << 1) /* Reset all counters */ 2198a1b4e4faSAndrew Turner #define PMCR_C (1 << 2) /* Clock counter reset */ 2199a1b4e4faSAndrew Turner #define PMCR_D (1 << 3) /* CNTR counts every 64 clk cycles */ 2200a1b4e4faSAndrew Turner #define PMCR_X (1 << 4) /* Export to ext. monitoring (ETM) */ 2201a1b4e4faSAndrew Turner #define PMCR_DP (1 << 5) /* Disable CCNT if non-invasive debug*/ 2202a1b4e4faSAndrew Turner #define PMCR_LC (1 << 6) /* Long cycle count enable */ 2203a1b4e4faSAndrew Turner #define PMCR_IMP_SHIFT 24 /* Implementer code */ 2204a1b4e4faSAndrew Turner #define PMCR_IMP_MASK (0xff << PMCR_IMP_SHIFT) 2205a1b4e4faSAndrew Turner #define PMCR_IMP_ARM 0x41 2206a1b4e4faSAndrew Turner #define PMCR_IDCODE_SHIFT 16 /* Identification code */ 2207a1b4e4faSAndrew Turner #define PMCR_IDCODE_MASK (0xff << PMCR_IDCODE_SHIFT) 2208a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A57 0x01 2209a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A72 0x02 2210a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A53 0x03 2211a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A73 0x04 2212a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A35 0x0a 2213a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A76 0x0b 2214a1b4e4faSAndrew Turner #define PMCR_IDCODE_NEOVERSE_N1 0x0c 2215a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A77 0x10 2216a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A55 0x45 2217a1b4e4faSAndrew Turner #define PMCR_IDCODE_NEOVERSE_E1 0x46 2218a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A75 0x4a 2219a1b4e4faSAndrew Turner #define PMCR_N_SHIFT 11 /* Number of counters implemented */ 2220a1b4e4faSAndrew Turner #define PMCR_N_MASK (0x1f << PMCR_N_SHIFT) 2221a1b4e4faSAndrew Turner 22224dc81560SAndrew Turner /* PMEVCNTR<n>_EL0 */ 22234dc81560SAndrew Turner #define PMEVCNTR_EL0_op0 3 22244dc81560SAndrew Turner #define PMEVCNTR_EL0_op1 3 22254dc81560SAndrew Turner #define PMEVCNTR_EL0_CRn 14 22264dc81560SAndrew Turner #define PMEVCNTR_EL0_CRm 8 22274dc81560SAndrew Turner /* 22284dc81560SAndrew Turner * PMEVCNTRn_EL0_CRm[1:0] holds the upper 2 bits of 'n' 22294dc81560SAndrew Turner * PMEVCNTRn_EL0_op2 holds the lower 3 bits of 'n' 22304dc81560SAndrew Turner */ 22314dc81560SAndrew Turner 2232456d57a6SJohn Baldwin /* PMEVTYPER<n>_EL0 - Performance Monitoring Event Type */ 22334dc81560SAndrew Turner #define PMEVTYPER_EL0_op0 3 22344dc81560SAndrew Turner #define PMEVTYPER_EL0_op1 3 22354dc81560SAndrew Turner #define PMEVTYPER_EL0_CRn 14 22364dc81560SAndrew Turner #define PMEVTYPER_EL0_CRm 12 22374dc81560SAndrew Turner /* 22384dc81560SAndrew Turner * PMEVTYPERn_EL0_CRm[1:0] holds the upper 2 bits of 'n' 22394dc81560SAndrew Turner * PMEVTYPERn_EL0_op2 holds the lower 3 bits of 'n' 22404dc81560SAndrew Turner */ 2241456d57a6SJohn Baldwin #define PMEVTYPER_EVTCOUNT_MASK 0x000003ff /* ARMv8.0 */ 2242456d57a6SJohn Baldwin #define PMEVTYPER_EVTCOUNT_8_1_MASK 0x0000ffff /* ARMv8.1+ */ 2243456d57a6SJohn Baldwin #define PMEVTYPER_MT (1 << 25) /* Multithreading */ 2244456d57a6SJohn Baldwin #define PMEVTYPER_M (1 << 26) /* Secure EL3 filtering */ 2245456d57a6SJohn Baldwin #define PMEVTYPER_NSH (1 << 27) /* Non-secure hypervisor filtering */ 2246456d57a6SJohn Baldwin #define PMEVTYPER_NSU (1 << 28) /* Non-secure user filtering */ 2247456d57a6SJohn Baldwin #define PMEVTYPER_NSK (1 << 29) /* Non-secure kernel filtering */ 2248456d57a6SJohn Baldwin #define PMEVTYPER_U (1 << 30) /* User filtering */ 2249456d57a6SJohn Baldwin #define PMEVTYPER_P (1 << 31) /* Privileged filtering */ 22504dc81560SAndrew Turner 22514dc81560SAndrew Turner /* PMINTENCLR_EL1 */ 22524dc81560SAndrew Turner #define PMINTENCLR_EL1 MRS_REG(PMINTENCLR_EL1) 22534dc81560SAndrew Turner #define PMINTENCLR_EL1_op0 3 22544dc81560SAndrew Turner #define PMINTENCLR_EL1_op1 0 22554dc81560SAndrew Turner #define PMINTENCLR_EL1_CRn 9 22564dc81560SAndrew Turner #define PMINTENCLR_EL1_CRm 14 22574dc81560SAndrew Turner #define PMINTENCLR_EL1_op2 2 22584dc81560SAndrew Turner 22594dc81560SAndrew Turner /* PMINTENSET_EL1 */ 22604dc81560SAndrew Turner #define PMINTENSET_EL1 MRS_REG(PMINTENSET_EL1) 22614dc81560SAndrew Turner #define PMINTENSET_EL1_op0 3 22624dc81560SAndrew Turner #define PMINTENSET_EL1_op1 0 22634dc81560SAndrew Turner #define PMINTENSET_EL1_CRn 9 22644dc81560SAndrew Turner #define PMINTENSET_EL1_CRm 14 22654dc81560SAndrew Turner #define PMINTENSET_EL1_op2 1 22664dc81560SAndrew Turner 22674dc81560SAndrew Turner /* PMMIR_EL1 */ 22684dc81560SAndrew Turner #define PMMIR_EL1 MRS_REG(PMMIR_EL1) 22694dc81560SAndrew Turner #define PMMIR_EL1_op0 3 22704dc81560SAndrew Turner #define PMMIR_EL1_op1 0 22714dc81560SAndrew Turner #define PMMIR_EL1_CRn 9 22724dc81560SAndrew Turner #define PMMIR_EL1_CRm 14 22734dc81560SAndrew Turner #define PMMIR_EL1_op2 6 22744dc81560SAndrew Turner 22754dc81560SAndrew Turner /* PMOVSCLR_EL0 */ 22764dc81560SAndrew Turner #define PMOVSCLR_EL0 MRS_REG(PMOVSCLR_EL0) 22774dc81560SAndrew Turner #define PMOVSCLR_EL0_op0 3 22784dc81560SAndrew Turner #define PMOVSCLR_EL0_op1 3 22794dc81560SAndrew Turner #define PMOVSCLR_EL0_CRn 9 22804dc81560SAndrew Turner #define PMOVSCLR_EL0_CRm 12 22814dc81560SAndrew Turner #define PMOVSCLR_EL0_op2 3 22824dc81560SAndrew Turner 22834dc81560SAndrew Turner /* PMOVSSET_EL0 */ 22844dc81560SAndrew Turner #define PMOVSSET_EL0 MRS_REG(PMOVSSET_EL0) 22854dc81560SAndrew Turner #define PMOVSSET_EL0_op0 3 22864dc81560SAndrew Turner #define PMOVSSET_EL0_op1 3 22874dc81560SAndrew Turner #define PMOVSSET_EL0_CRn 9 22884dc81560SAndrew Turner #define PMOVSSET_EL0_CRm 14 22894dc81560SAndrew Turner #define PMOVSSET_EL0_op2 3 22904dc81560SAndrew Turner 22912ad19997SAndrew Turner /* PMSCR_EL1 */ 22922ad19997SAndrew Turner #define PMSCR_EL1 MRS_REG(PMSCR_EL1) 2293f7bdaa10SZachary Leaf #define PMSCR_EL1_REG MRS_REG_ALT_NAME(PMSCR_EL1) 2294f7bdaa10SZachary Leaf #define PMSCR_EL1_op0 3 2295f7bdaa10SZachary Leaf #define PMSCR_EL1_op1 0 2296f7bdaa10SZachary Leaf #define PMSCR_EL1_CRn 9 2297f7bdaa10SZachary Leaf #define PMSCR_EL1_CRm 9 2298f7bdaa10SZachary Leaf #define PMSCR_EL1_op2 0 22992ad19997SAndrew Turner #define PMSCR_E0SPE_SHIFT 0 23002ad19997SAndrew Turner #define PMSCR_E0SPE (UL(0x1) << PMSCR_E0SPE_SHIFT) 23012ad19997SAndrew Turner #define PMSCR_E1SPE_SHIFT 1 23022ad19997SAndrew Turner #define PMSCR_E1SPE (UL(0x1) << PMSCR_E1SPE_SHIFT) 23032ad19997SAndrew Turner #define PMSCR_CX_SHIFT 3 23042ad19997SAndrew Turner #define PMSCR_CX (UL(0x1) << PMSCR_CX_SHIFT) 23052ad19997SAndrew Turner #define PMSCR_PA_SHIFT 4 23062ad19997SAndrew Turner #define PMSCR_PA (UL(0x1) << PMSCR_PA_SHIFT) 23072ad19997SAndrew Turner #define PMSCR_TS_SHIFT 5 23082ad19997SAndrew Turner #define PMSCR_TS (UL(0x1) << PMSCR_TS_SHIFT) 23092ad19997SAndrew Turner #define PMSCR_PCT_SHIFT 6 23102ad19997SAndrew Turner #define PMSCR_PCT_MASK (UL(0x3) << PMSCR_PCT_SHIFT) 23112ad19997SAndrew Turner 23124dc81560SAndrew Turner /* PMSELR_EL0 */ 23134dc81560SAndrew Turner #define PMSELR_EL0 MRS_REG(PMSELR_EL0) 23144dc81560SAndrew Turner #define PMSELR_EL0_op0 3 23154dc81560SAndrew Turner #define PMSELR_EL0_op1 3 23164dc81560SAndrew Turner #define PMSELR_EL0_CRn 9 23174dc81560SAndrew Turner #define PMSELR_EL0_CRm 12 23184dc81560SAndrew Turner #define PMSELR_EL0_op2 5 23194dc81560SAndrew Turner #define PMSELR_SEL_MASK 0x1f 23204dc81560SAndrew Turner 23212ad19997SAndrew Turner /* PMSEVFR_EL1 */ 23222ad19997SAndrew Turner #define PMSEVFR_EL1 MRS_REG(PMSEVFR_EL1) 2323f7bdaa10SZachary Leaf #define PMSEVFR_EL1_REG MRS_REG_ALT_NAME(PMSEVFR_EL1) 2324f7bdaa10SZachary Leaf #define PMSEVFR_EL1_op0 3 2325f7bdaa10SZachary Leaf #define PMSEVFR_EL1_op1 0 2326f7bdaa10SZachary Leaf #define PMSEVFR_EL1_CRn 9 2327f7bdaa10SZachary Leaf #define PMSEVFR_EL1_CRm 9 2328f7bdaa10SZachary Leaf #define PMSEVFR_EL1_op2 5 23292ad19997SAndrew Turner 23302ad19997SAndrew Turner /* PMSFCR_EL1 */ 23312ad19997SAndrew Turner #define PMSFCR_EL1 MRS_REG(PMSFCR_EL1) 2332f7bdaa10SZachary Leaf #define PMSFCR_EL1_REG MRS_REG_ALT_NAME(PMSFCR_EL1) 2333f7bdaa10SZachary Leaf #define PMSFCR_EL1_op0 3 2334f7bdaa10SZachary Leaf #define PMSFCR_EL1_op1 0 2335f7bdaa10SZachary Leaf #define PMSFCR_EL1_CRn 9 2336f7bdaa10SZachary Leaf #define PMSFCR_EL1_CRm 9 2337f7bdaa10SZachary Leaf #define PMSFCR_EL1_op2 4 23382ad19997SAndrew Turner #define PMSFCR_FE_SHIFT 0 23392ad19997SAndrew Turner #define PMSFCR_FE (UL(0x1) << PMSFCR_FE_SHIFT) 23402ad19997SAndrew Turner #define PMSFCR_FT_SHIFT 1 23412ad19997SAndrew Turner #define PMSFCR_FT (UL(0x1) << PMSFCR_FT_SHIFT) 23422ad19997SAndrew Turner #define PMSFCR_FL_SHIFT 2 23432ad19997SAndrew Turner #define PMSFCR_FL (UL(0x1) << PMSFCR_FL_SHIFT) 23442ad19997SAndrew Turner #define PMSFCR_FnE_SHIFT 3 23452ad19997SAndrew Turner #define PMSFCR_FnE (UL(0x1) << PMSFCR_FnE_SHIFT) 23462ad19997SAndrew Turner #define PMSFCR_B_SHIFT 16 23472ad19997SAndrew Turner #define PMSFCR_B (UL(0x1) << PMSFCR_B_SHIFT) 23482ad19997SAndrew Turner #define PMSFCR_LD_SHIFT 17 23492ad19997SAndrew Turner #define PMSFCR_LD (UL(0x1) << PMSFCR_LD_SHIFT) 23502ad19997SAndrew Turner #define PMSFCR_ST_SHIFT 18 23512ad19997SAndrew Turner #define PMSFCR_ST (UL(0x1) << PMSFCR_ST_SHIFT) 23522ad19997SAndrew Turner 23532ad19997SAndrew Turner /* PMSICR_EL1 */ 23542ad19997SAndrew Turner #define PMSICR_EL1 MRS_REG(PMSICR_EL1) 2355f7bdaa10SZachary Leaf #define PMSICR_EL1_REG MRS_REG_ALT_NAME(PMSICR_EL1) 2356f7bdaa10SZachary Leaf #define PMSICR_EL1_op0 3 2357f7bdaa10SZachary Leaf #define PMSICR_EL1_op1 0 2358f7bdaa10SZachary Leaf #define PMSICR_EL1_CRn 9 2359f7bdaa10SZachary Leaf #define PMSICR_EL1_CRm 9 2360f7bdaa10SZachary Leaf #define PMSICR_EL1_op2 2 23612ad19997SAndrew Turner #define PMSICR_COUNT_SHIFT 0 23622ad19997SAndrew Turner #define PMSICR_COUNT_MASK (UL(0xffffffff) << PMSICR_COUNT_SHIFT) 23632ad19997SAndrew Turner #define PMSICR_ECOUNT_SHIFT 56 23642ad19997SAndrew Turner #define PMSICR_ECOUNT_MASK (UL(0xff) << PMSICR_ECOUNT_SHIFT) 23652ad19997SAndrew Turner 23662ad19997SAndrew Turner /* PMSIDR_EL1 */ 23672ad19997SAndrew Turner #define PMSIDR_EL1 MRS_REG(PMSIDR_EL1) 2368f7bdaa10SZachary Leaf #define PMSIDR_EL1_REG MRS_REG_ALT_NAME(PMSIDR_EL1) 2369f7bdaa10SZachary Leaf #define PMSIDR_EL1_op0 3 2370f7bdaa10SZachary Leaf #define PMSIDR_EL1_op1 0 2371f7bdaa10SZachary Leaf #define PMSIDR_EL1_CRn 9 2372f7bdaa10SZachary Leaf #define PMSIDR_EL1_CRm 9 2373f7bdaa10SZachary Leaf #define PMSIDR_EL1_op2 7 23742ad19997SAndrew Turner #define PMSIDR_FE_SHIFT 0 23752ad19997SAndrew Turner #define PMSIDR_FE (UL(0x1) << PMSIDR_FE_SHIFT) 23762ad19997SAndrew Turner #define PMSIDR_FT_SHIFT 1 23772ad19997SAndrew Turner #define PMSIDR_FT (UL(0x1) << PMSIDR_FT_SHIFT) 23782ad19997SAndrew Turner #define PMSIDR_FL_SHIFT 2 23792ad19997SAndrew Turner #define PMSIDR_FL (UL(0x1) << PMSIDR_FL_SHIFT) 23802ad19997SAndrew Turner #define PMSIDR_ArchInst_SHIFT 3 23812ad19997SAndrew Turner #define PMSIDR_ArchInst (UL(0x1) << PMSIDR_ArchInst_SHIFT) 23822ad19997SAndrew Turner #define PMSIDR_LDS_SHIFT 4 23832ad19997SAndrew Turner #define PMSIDR_LDS (UL(0x1) << PMSIDR_LDS_SHIFT) 23842ad19997SAndrew Turner #define PMSIDR_ERnd_SHIFT 5 23852ad19997SAndrew Turner #define PMSIDR_ERnd (UL(0x1) << PMSIDR_ERnd_SHIFT) 23862ad19997SAndrew Turner #define PMSIDR_FnE_SHIFT 6 23872ad19997SAndrew Turner #define PMSIDR_FnE (UL(0x1) << PMSIDR_FnE_SHIFT) 23882ad19997SAndrew Turner #define PMSIDR_Interval_SHIFT 8 23892ad19997SAndrew Turner #define PMSIDR_Interval_MASK (UL(0xf) << PMSIDR_Interval_SHIFT) 23902ad19997SAndrew Turner #define PMSIDR_MaxSize_SHIFT 12 23912ad19997SAndrew Turner #define PMSIDR_MaxSize_MASK (UL(0xf) << PMSIDR_MaxSize_SHIFT) 23922ad19997SAndrew Turner #define PMSIDR_CountSize_SHIFT 16 23932ad19997SAndrew Turner #define PMSIDR_CountSize_MASK (UL(0xf) << PMSIDR_CountSize_SHIFT) 23942ad19997SAndrew Turner #define PMSIDR_Format_SHIFT 20 23952ad19997SAndrew Turner #define PMSIDR_Format_MASK (UL(0xf) << PMSIDR_Format_SHIFT) 23962ad19997SAndrew Turner #define PMSIDR_PBT_SHIFT 24 23972ad19997SAndrew Turner #define PMSIDR_PBT (UL(0x1) << PMSIDR_PBT_SHIFT) 23982ad19997SAndrew Turner 23992ad19997SAndrew Turner /* PMSIRR_EL1 */ 24002ad19997SAndrew Turner #define PMSIRR_EL1 MRS_REG(PMSIRR_EL1) 2401f7bdaa10SZachary Leaf #define PMSIRR_EL1_REG MRS_REG_ALT_NAME(PMSIRR_EL1) 2402f7bdaa10SZachary Leaf #define PMSIRR_EL1_op0 3 2403f7bdaa10SZachary Leaf #define PMSIRR_EL1_op1 0 2404f7bdaa10SZachary Leaf #define PMSIRR_EL1_CRn 9 2405f7bdaa10SZachary Leaf #define PMSIRR_EL1_CRm 9 2406f7bdaa10SZachary Leaf #define PMSIRR_EL1_op2 3 24072ad19997SAndrew Turner #define PMSIRR_RND_SHIFT 0 24082ad19997SAndrew Turner #define PMSIRR_RND (UL(0x1) << PMSIRR_RND_SHIFT) 24092ad19997SAndrew Turner #define PMSIRR_INTERVAL_SHIFT 8 24102ad19997SAndrew Turner #define PMSIRR_INTERVAL_MASK (UL(0xffffff) << PMSIRR_INTERVAL_SHIFT) 24112ad19997SAndrew Turner 24122ad19997SAndrew Turner /* PMSLATFR_EL1 */ 24132ad19997SAndrew Turner #define PMSLATFR_EL1 MRS_REG(PMSLATFR_EL1) 2414f7bdaa10SZachary Leaf #define PMSLATFR_EL1_REG MRS_REG_ALT_NAME(PMSLATFR_EL1) 2415f7bdaa10SZachary Leaf #define PMSLATFR_EL1_op0 3 2416f7bdaa10SZachary Leaf #define PMSLATFR_EL1_op1 0 2417f7bdaa10SZachary Leaf #define PMSLATFR_EL1_CRn 9 2418f7bdaa10SZachary Leaf #define PMSLATFR_EL1_CRm 9 2419f7bdaa10SZachary Leaf #define PMSLATFR_EL1_op2 6 24202ad19997SAndrew Turner #define PMSLATFR_MINLAT_SHIFT 0 24212ad19997SAndrew Turner #define PMSLATFR_MINLAT_MASK (UL(0xfff) << PMSLATFR_MINLAT_SHIFT) 24222ad19997SAndrew Turner 24232ad19997SAndrew Turner /* PMSNEVFR_EL1 */ 24242ad19997SAndrew Turner #define PMSNEVFR_EL1 MRS_REG(PMSNEVFR_EL1) 2425f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_REG MRS_REG_ALT_NAME(PMSNEVFR_EL1) 2426f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_op0 3 2427f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_op1 0 2428f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_CRn 9 2429f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_CRm 9 2430f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_op2 1 24312ad19997SAndrew Turner 24324dc81560SAndrew Turner /* PMSWINC_EL0 */ 24334dc81560SAndrew Turner #define PMSWINC_EL0 MRS_REG(PMSWINC_EL0) 24344dc81560SAndrew Turner #define PMSWINC_EL0_op0 3 24354dc81560SAndrew Turner #define PMSWINC_EL0_op1 3 24364dc81560SAndrew Turner #define PMSWINC_EL0_CRn 9 24374dc81560SAndrew Turner #define PMSWINC_EL0_CRm 12 24384dc81560SAndrew Turner #define PMSWINC_EL0_op2 4 24394dc81560SAndrew Turner 24404dc81560SAndrew Turner /* PMUSERENR_EL0 */ 24414dc81560SAndrew Turner #define PMUSERENR_EL0 MRS_REG(PMUSERENR_EL0) 24424dc81560SAndrew Turner #define PMUSERENR_EL0_op0 3 24434dc81560SAndrew Turner #define PMUSERENR_EL0_op1 3 24444dc81560SAndrew Turner #define PMUSERENR_EL0_CRn 9 24454dc81560SAndrew Turner #define PMUSERENR_EL0_CRm 14 24464dc81560SAndrew Turner #define PMUSERENR_EL0_op2 0 24474dc81560SAndrew Turner 24484dc81560SAndrew Turner /* PMXEVCNTR_EL0 */ 24494dc81560SAndrew Turner #define PMXEVCNTR_EL0 MRS_REG(PMXEVCNTR_EL0) 24504dc81560SAndrew Turner #define PMXEVCNTR_EL0_op0 3 24514dc81560SAndrew Turner #define PMXEVCNTR_EL0_op1 3 24524dc81560SAndrew Turner #define PMXEVCNTR_EL0_CRn 9 24534dc81560SAndrew Turner #define PMXEVCNTR_EL0_CRm 13 24544dc81560SAndrew Turner #define PMXEVCNTR_EL0_op2 2 24554dc81560SAndrew Turner 24564dc81560SAndrew Turner /* PMXEVTYPER_EL0 */ 24574dc81560SAndrew Turner #define PMXEVTYPER_EL0 MRS_REG(PMXEVTYPER_EL0) 24584dc81560SAndrew Turner #define PMXEVTYPER_EL0_op0 3 24594dc81560SAndrew Turner #define PMXEVTYPER_EL0_op1 3 24604dc81560SAndrew Turner #define PMXEVTYPER_EL0_CRn 9 24614dc81560SAndrew Turner #define PMXEVTYPER_EL0_CRm 13 24624dc81560SAndrew Turner #define PMXEVTYPER_EL0_op2 1 24634dc81560SAndrew Turner 24649560ac4bSJessica Clarke /* RNDRRS */ 24659560ac4bSJessica Clarke #define RNDRRS MRS_REG(RNDRRS) 24669560ac4bSJessica Clarke #define RNDRRS_REG MRS_REG_ALT_NAME(RNDRRS) 24679560ac4bSJessica Clarke #define RNDRRS_op0 3 24689560ac4bSJessica Clarke #define RNDRRS_op1 3 24699560ac4bSJessica Clarke #define RNDRRS_CRn 2 24709560ac4bSJessica Clarke #define RNDRRS_CRm 4 24719560ac4bSJessica Clarke #define RNDRRS_op2 1 24729560ac4bSJessica Clarke 2473e5acd89cSAndrew Turner /* SCTLR_EL1 - System Control Register */ 247447361851SAndrew Turner #define SCTLR_EL1_REG MRS_REG_ALT_NAME(SCTLR_EL1) 247547361851SAndrew Turner #define SCTLR_EL1_op0 3 247647361851SAndrew Turner #define SCTLR_EL1_op1 0 247747361851SAndrew Turner #define SCTLR_EL1_CRn 1 247847361851SAndrew Turner #define SCTLR_EL1_CRm 0 247947361851SAndrew Turner #define SCTLR_EL1_op2 0 2480aec085f4SAndrew Turner #define SCTLR_RES1 0x30d00800 /* Reserved ARMv8.0, write 1 */ 24815484e6d9SAndrew Turner #define SCTLR_M (UL(0x1) << 0) 24825484e6d9SAndrew Turner #define SCTLR_A (UL(0x1) << 1) 24835484e6d9SAndrew Turner #define SCTLR_C (UL(0x1) << 2) 24845484e6d9SAndrew Turner #define SCTLR_SA (UL(0x1) << 3) 24855484e6d9SAndrew Turner #define SCTLR_SA0 (UL(0x1) << 4) 24865484e6d9SAndrew Turner #define SCTLR_CP15BEN (UL(0x1) << 5) 24875484e6d9SAndrew Turner #define SCTLR_nAA (UL(0x1) << 6) 24885484e6d9SAndrew Turner #define SCTLR_ITD (UL(0x1) << 7) 24895484e6d9SAndrew Turner #define SCTLR_SED (UL(0x1) << 8) 24905484e6d9SAndrew Turner #define SCTLR_UMA (UL(0x1) << 9) 24915484e6d9SAndrew Turner #define SCTLR_EnRCTX (UL(0x1) << 10) 24925484e6d9SAndrew Turner #define SCTLR_EOS (UL(0x1) << 11) 24935484e6d9SAndrew Turner #define SCTLR_I (UL(0x1) << 12) 24945484e6d9SAndrew Turner #define SCTLR_EnDB (UL(0x1) << 13) 24955484e6d9SAndrew Turner #define SCTLR_DZE (UL(0x1) << 14) 24965484e6d9SAndrew Turner #define SCTLR_UCT (UL(0x1) << 15) 24975484e6d9SAndrew Turner #define SCTLR_nTWI (UL(0x1) << 16) 2498a9725b63SAndrew Turner /* Bit 17 is reserved */ 24995484e6d9SAndrew Turner #define SCTLR_nTWE (UL(0x1) << 18) 25005484e6d9SAndrew Turner #define SCTLR_WXN (UL(0x1) << 19) 25015484e6d9SAndrew Turner #define SCTLR_TSCXT (UL(0x1) << 20) 25025484e6d9SAndrew Turner #define SCTLR_IESB (UL(0x1) << 21) 25035484e6d9SAndrew Turner #define SCTLR_EIS (UL(0x1) << 22) 25045484e6d9SAndrew Turner #define SCTLR_SPAN (UL(0x1) << 23) 25055484e6d9SAndrew Turner #define SCTLR_E0E (UL(0x1) << 24) 25065484e6d9SAndrew Turner #define SCTLR_EE (UL(0x1) << 25) 25075484e6d9SAndrew Turner #define SCTLR_UCI (UL(0x1) << 26) 25085484e6d9SAndrew Turner #define SCTLR_EnDA (UL(0x1) << 27) 25095484e6d9SAndrew Turner #define SCTLR_nTLSMD (UL(0x1) << 28) 25105484e6d9SAndrew Turner #define SCTLR_LSMAOE (UL(0x1) << 29) 25115484e6d9SAndrew Turner #define SCTLR_EnIB (UL(0x1) << 30) 25125484e6d9SAndrew Turner #define SCTLR_EnIA (UL(0x1) << 31) 25135484e6d9SAndrew Turner /* Bits 34:32 are reserved */ 25145484e6d9SAndrew Turner #define SCTLR_BT0 (UL(0x1) << 35) 25155484e6d9SAndrew Turner #define SCTLR_BT1 (UL(0x1) << 36) 25165484e6d9SAndrew Turner #define SCTLR_ITFSB (UL(0x1) << 37) 25175484e6d9SAndrew Turner #define SCTLR_TCF0_MASK (UL(0x3) << 38) 25185484e6d9SAndrew Turner #define SCTLR_TCF_MASK (UL(0x3) << 40) 25195484e6d9SAndrew Turner #define SCTLR_ATA0 (UL(0x1) << 42) 25205484e6d9SAndrew Turner #define SCTLR_ATA (UL(0x1) << 43) 25215484e6d9SAndrew Turner #define SCTLR_DSSBS (UL(0x1) << 44) 25225484e6d9SAndrew Turner #define SCTLR_TWEDEn (UL(0x1) << 45) 25235484e6d9SAndrew Turner #define SCTLR_TWEDEL_MASK (UL(0xf) << 46) 25245484e6d9SAndrew Turner /* Bits 53:50 are reserved */ 25255484e6d9SAndrew Turner #define SCTLR_EnASR (UL(0x1) << 54) 25265484e6d9SAndrew Turner #define SCTLR_EnAS0 (UL(0x1) << 55) 25275484e6d9SAndrew Turner #define SCTLR_EnALS (UL(0x1) << 56) 25285484e6d9SAndrew Turner #define SCTLR_EPAN (UL(0x1) << 57) 2529e5acd89cSAndrew Turner 253047361851SAndrew Turner /* SCTLR_EL12 */ 253147361851SAndrew Turner #define SCTLR_EL12_REG MRS_REG_ALT_NAME(SCTLR_EL12) 253247361851SAndrew Turner #define SCTLR_EL12_op0 3 253347361851SAndrew Turner #define SCTLR_EL12_op1 5 253447361851SAndrew Turner #define SCTLR_EL12_CRn 1 253547361851SAndrew Turner #define SCTLR_EL12_CRm 0 253647361851SAndrew Turner #define SCTLR_EL12_op2 0 253747361851SAndrew Turner 2538e5acd89cSAndrew Turner /* SPSR_EL1 */ 253947361851SAndrew Turner #define SPSR_EL1_REG MRS_REG_ALT_NAME(SPSR_EL1) 254047361851SAndrew Turner #define SPSR_EL1_op0 3 254147361851SAndrew Turner #define SPSR_EL1_op1 0 254247361851SAndrew Turner #define SPSR_EL1_CRn 4 254347361851SAndrew Turner #define SPSR_EL1_CRm 0 254447361851SAndrew Turner #define SPSR_EL1_op2 0 2545e5acd89cSAndrew Turner /* 2546e5acd89cSAndrew Turner * When the exception is taken in AArch64: 2547e5acd89cSAndrew Turner * M[3:2] is the exception level 2548e5acd89cSAndrew Turner * M[1] is unused 2549e5acd89cSAndrew Turner * M[0] is the SP select: 2550e5acd89cSAndrew Turner * 0: always SP0 2551e5acd89cSAndrew Turner * 1: current ELs SP 2552e5acd89cSAndrew Turner */ 25536a4f5fddSAndrew Turner #define PSR_M_EL0t 0x00000000UL 25546a4f5fddSAndrew Turner #define PSR_M_EL1t 0x00000004UL 25556a4f5fddSAndrew Turner #define PSR_M_EL1h 0x00000005UL 25566a4f5fddSAndrew Turner #define PSR_M_EL2t 0x00000008UL 25576a4f5fddSAndrew Turner #define PSR_M_EL2h 0x00000009UL 25586a4f5fddSAndrew Turner #define PSR_M_64 0x00000000UL 25596a4f5fddSAndrew Turner #define PSR_M_32 0x00000010UL 25606a4f5fddSAndrew Turner #define PSR_M_MASK 0x0000000fUL 2561e5acd89cSAndrew Turner 25626a4f5fddSAndrew Turner #define PSR_T 0x00000020UL 25638c9c3144SOlivier Houchard 25646a4f5fddSAndrew Turner #define PSR_AARCH32 0x00000010UL 25656a4f5fddSAndrew Turner #define PSR_F 0x00000040UL 25666a4f5fddSAndrew Turner #define PSR_I 0x00000080UL 25676a4f5fddSAndrew Turner #define PSR_A 0x00000100UL 25686a4f5fddSAndrew Turner #define PSR_D 0x00000200UL 2569739e4482SAndrew Turner #define PSR_DAIF (PSR_D | PSR_A | PSR_I | PSR_F) 257017b6ee96SAndrew Turner /* The default DAIF mask. These bits are valid in spsr_el1 and daif */ 25711f0174c9SAyrton Munoz #define PSR_DAIF_DEFAULT (0) 2572*a84653c5SAndrew Turner #define PSR_DAIF_INTR (PSR_I | PSR_F) 257364963dd2SAndrew Turner #define PSR_BTYPE 0x00000c00UL 257464963dd2SAndrew Turner #define PSR_SSBS 0x00001000UL 257564963dd2SAndrew Turner #define PSR_ALLINT 0x00002000UL 25766a4f5fddSAndrew Turner #define PSR_IL 0x00100000UL 25776a4f5fddSAndrew Turner #define PSR_SS 0x00200000UL 257864963dd2SAndrew Turner #define PSR_PAN 0x00400000UL 257964963dd2SAndrew Turner #define PSR_UAO 0x00800000UL 258064963dd2SAndrew Turner #define PSR_DIT 0x01000000UL 258164963dd2SAndrew Turner #define PSR_TCO 0x02000000UL 25826a4f5fddSAndrew Turner #define PSR_V 0x10000000UL 25836a4f5fddSAndrew Turner #define PSR_C 0x20000000UL 25846a4f5fddSAndrew Turner #define PSR_Z 0x40000000UL 25856a4f5fddSAndrew Turner #define PSR_N 0x80000000UL 25866a4f5fddSAndrew Turner #define PSR_FLAGS 0xf0000000UL 258731cf95ceSAndrew Turner /* PSR fields that can be set from 32-bit and 64-bit processes */ 258831cf95ceSAndrew Turner #define PSR_SETTABLE_32 PSR_FLAGS 258931cf95ceSAndrew Turner #define PSR_SETTABLE_64 (PSR_FLAGS | PSR_SS) 2590e5acd89cSAndrew Turner 259147361851SAndrew Turner /* SPSR_EL12 */ 259247361851SAndrew Turner #define SPSR_EL12_REG MRS_REG_ALT_NAME(SPSR_EL12) 259347361851SAndrew Turner #define SPSR_EL12_op0 3 259447361851SAndrew Turner #define SPSR_EL12_op1 5 259547361851SAndrew Turner #define SPSR_EL12_CRn 4 259647361851SAndrew Turner #define SPSR_EL12_CRm 0 259747361851SAndrew Turner #define SPSR_EL12_op2 0 259847361851SAndrew Turner 2599178747a1SAndrew Turner /* REVIDR_EL1 - Revision ID Register */ 2600178747a1SAndrew Turner #define REVIDR_EL1 MRS_REG(REVIDR_EL1) 2601178747a1SAndrew Turner #define REVIDR_EL1_op0 3 2602178747a1SAndrew Turner #define REVIDR_EL1_op1 0 2603178747a1SAndrew Turner #define REVIDR_EL1_CRn 0 2604178747a1SAndrew Turner #define REVIDR_EL1_CRm 0 2605178747a1SAndrew Turner #define REVIDR_EL1_op2 6 2606178747a1SAndrew Turner 2607e5acd89cSAndrew Turner /* TCR_EL1 - Translation Control Register */ 260847361851SAndrew Turner #define TCR_EL1_REG MRS_REG_ALT_NAME(TCR_EL1) 260947361851SAndrew Turner #define TCR_EL1_op0 3 261047361851SAndrew Turner #define TCR_EL1_op1 0 261147361851SAndrew Turner #define TCR_EL1_CRn 2 261247361851SAndrew Turner #define TCR_EL1_CRm 0 261347361851SAndrew Turner #define TCR_EL1_op2 2 2614f3e9395dSAndrew Turner /* Bits 63:59 are reserved */ 26157be11454SAndrew Turner #define TCR_DS_SHIFT 59 26167be11454SAndrew Turner #define TCR_DS (UL(1) << TCR_DS_SHIFT) 2617f3e9395dSAndrew Turner #define TCR_TCMA1_SHIFT 58 261829c1cf98SAndrew Turner #define TCR_TCMA1 (UL(1) << TCR_TCMA1_SHIFT) 2619f3e9395dSAndrew Turner #define TCR_TCMA0_SHIFT 57 262029c1cf98SAndrew Turner #define TCR_TCMA0 (UL(1) << TCR_TCMA0_SHIFT) 2621f3e9395dSAndrew Turner #define TCR_E0PD1_SHIFT 56 262229c1cf98SAndrew Turner #define TCR_E0PD1 (UL(1) << TCR_E0PD1_SHIFT) 2623f3e9395dSAndrew Turner #define TCR_E0PD0_SHIFT 55 262429c1cf98SAndrew Turner #define TCR_E0PD0 (UL(1) << TCR_E0PD0_SHIFT) 2625f3e9395dSAndrew Turner #define TCR_NFD1_SHIFT 54 262629c1cf98SAndrew Turner #define TCR_NFD1 (UL(1) << TCR_NFD1_SHIFT) 2627f3e9395dSAndrew Turner #define TCR_NFD0_SHIFT 53 262829c1cf98SAndrew Turner #define TCR_NFD0 (UL(1) << TCR_NFD0_SHIFT) 2629f3e9395dSAndrew Turner #define TCR_TBID1_SHIFT 52 263029c1cf98SAndrew Turner #define TCR_TBID1 (UL(1) << TCR_TBID1_SHIFT) 2631f3e9395dSAndrew Turner #define TCR_TBID0_SHIFT 51 263229c1cf98SAndrew Turner #define TCR_TBID0 (UL(1) << TCR_TBID0_SHIFT) 2633f3e9395dSAndrew Turner #define TCR_HWU162_SHIFT 50 263429c1cf98SAndrew Turner #define TCR_HWU162 (UL(1) << TCR_HWU162_SHIFT) 2635f3e9395dSAndrew Turner #define TCR_HWU161_SHIFT 49 263629c1cf98SAndrew Turner #define TCR_HWU161 (UL(1) << TCR_HWU161_SHIFT) 2637f3e9395dSAndrew Turner #define TCR_HWU160_SHIFT 48 263829c1cf98SAndrew Turner #define TCR_HWU160 (UL(1) << TCR_HWU160_SHIFT) 2639f3e9395dSAndrew Turner #define TCR_HWU159_SHIFT 47 264029c1cf98SAndrew Turner #define TCR_HWU159 (UL(1) << TCR_HWU159_SHIFT) 2641f3e9395dSAndrew Turner #define TCR_HWU1 \ 2642f3e9395dSAndrew Turner (TCR_HWU159 | TCR_HWU160 | TCR_HWU161 | TCR_HWU162) 2643f3e9395dSAndrew Turner #define TCR_HWU062_SHIFT 46 264429c1cf98SAndrew Turner #define TCR_HWU062 (UL(1) << TCR_HWU062_SHIFT) 2645f3e9395dSAndrew Turner #define TCR_HWU061_SHIFT 45 264629c1cf98SAndrew Turner #define TCR_HWU061 (UL(1) << TCR_HWU061_SHIFT) 2647f3e9395dSAndrew Turner #define TCR_HWU060_SHIFT 44 264829c1cf98SAndrew Turner #define TCR_HWU060 (UL(1) << TCR_HWU060_SHIFT) 2649f3e9395dSAndrew Turner #define TCR_HWU059_SHIFT 43 265029c1cf98SAndrew Turner #define TCR_HWU059 (UL(1) << TCR_HWU059_SHIFT) 2651f3e9395dSAndrew Turner #define TCR_HWU0 \ 2652f3e9395dSAndrew Turner (TCR_HWU059 | TCR_HWU060 | TCR_HWU061 | TCR_HWU062) 2653f3e9395dSAndrew Turner #define TCR_HPD1_SHIFT 42 265429c1cf98SAndrew Turner #define TCR_HPD1 (UL(1) << TCR_HPD1_SHIFT) 2655f3e9395dSAndrew Turner #define TCR_HPD0_SHIFT 41 265629c1cf98SAndrew Turner #define TCR_HPD0 (UL(1) << TCR_HPD0_SHIFT) 2657b0a0152aSAlan Cox #define TCR_HD_SHIFT 40 265829c1cf98SAndrew Turner #define TCR_HD (UL(1) << TCR_HD_SHIFT) 2659b0a0152aSAlan Cox #define TCR_HA_SHIFT 39 266029c1cf98SAndrew Turner #define TCR_HA (UL(1) << TCR_HA_SHIFT) 2661f3e9395dSAndrew Turner #define TCR_TBI1_SHIFT 38 266229c1cf98SAndrew Turner #define TCR_TBI1 (UL(1) << TCR_TBI1_SHIFT) 2663f3e9395dSAndrew Turner #define TCR_TBI0_SHIFT 37 266429c1cf98SAndrew Turner #define TCR_TBI0 (UL(1) << TCR_TBI0_SHIFT) 266565565c97SAndrew Turner #define TCR_ASID_SHIFT 36 266665565c97SAndrew Turner #define TCR_ASID_WIDTH 1 266729c1cf98SAndrew Turner #define TCR_ASID_16 (UL(1) << TCR_ASID_SHIFT) 2668f3e9395dSAndrew Turner /* Bit 35 is reserved */ 2669e5acd89cSAndrew Turner #define TCR_IPS_SHIFT 32 267065565c97SAndrew Turner #define TCR_IPS_WIDTH 3 267129c1cf98SAndrew Turner #define TCR_IPS_32BIT (UL(0) << TCR_IPS_SHIFT) 267229c1cf98SAndrew Turner #define TCR_IPS_36BIT (UL(1) << TCR_IPS_SHIFT) 267329c1cf98SAndrew Turner #define TCR_IPS_40BIT (UL(2) << TCR_IPS_SHIFT) 267429c1cf98SAndrew Turner #define TCR_IPS_42BIT (UL(3) << TCR_IPS_SHIFT) 267529c1cf98SAndrew Turner #define TCR_IPS_44BIT (UL(4) << TCR_IPS_SHIFT) 267629c1cf98SAndrew Turner #define TCR_IPS_48BIT (UL(5) << TCR_IPS_SHIFT) 2677e5acd89cSAndrew Turner #define TCR_TG1_SHIFT 30 267829c1cf98SAndrew Turner #define TCR_TG1_MASK (UL(3) << TCR_TG1_SHIFT) 267929c1cf98SAndrew Turner #define TCR_TG1_16K (UL(1) << TCR_TG1_SHIFT) 268029c1cf98SAndrew Turner #define TCR_TG1_4K (UL(2) << TCR_TG1_SHIFT) 268129c1cf98SAndrew Turner #define TCR_TG1_64K (UL(3) << TCR_TG1_SHIFT) 26821038d102SZbigniew Bodek #define TCR_SH1_SHIFT 28 268329c1cf98SAndrew Turner #define TCR_SH1_IS (UL(3) << TCR_SH1_SHIFT) 26841038d102SZbigniew Bodek #define TCR_ORGN1_SHIFT 26 268529c1cf98SAndrew Turner #define TCR_ORGN1_WBWA (UL(1) << TCR_ORGN1_SHIFT) 26861038d102SZbigniew Bodek #define TCR_IRGN1_SHIFT 24 268729c1cf98SAndrew Turner #define TCR_IRGN1_WBWA (UL(1) << TCR_IRGN1_SHIFT) 2688f3e9395dSAndrew Turner #define TCR_EPD1_SHIFT 23 268929c1cf98SAndrew Turner #define TCR_EPD1 (UL(1) << TCR_EPD1_SHIFT) 269050e3ab6bSAlan Cox #define TCR_A1_SHIFT 22 269129c1cf98SAndrew Turner #define TCR_A1 (UL(1) << TCR_A1_SHIFT) 2692f3e9395dSAndrew Turner #define TCR_T1SZ_SHIFT 16 269329c1cf98SAndrew Turner #define TCR_T1SZ_MASK (UL(0x3f) << TCR_T1SZ_SHIFT) 2694f3e9395dSAndrew Turner #define TCR_T1SZ(x) ((x) << TCR_T1SZ_SHIFT) 2695f3e9395dSAndrew Turner #define TCR_TG0_SHIFT 14 269629c1cf98SAndrew Turner #define TCR_TG0_MASK (UL(3) << TCR_TG0_SHIFT) 269729c1cf98SAndrew Turner #define TCR_TG0_4K (UL(0) << TCR_TG0_SHIFT) 269829c1cf98SAndrew Turner #define TCR_TG0_64K (UL(1) << TCR_TG0_SHIFT) 269929c1cf98SAndrew Turner #define TCR_TG0_16K (UL(2) << TCR_TG0_SHIFT) 27001038d102SZbigniew Bodek #define TCR_SH0_SHIFT 12 270129c1cf98SAndrew Turner #define TCR_SH0_IS (UL(3) << TCR_SH0_SHIFT) 27021038d102SZbigniew Bodek #define TCR_ORGN0_SHIFT 10 270329c1cf98SAndrew Turner #define TCR_ORGN0_WBWA (UL(1) << TCR_ORGN0_SHIFT) 27041038d102SZbigniew Bodek #define TCR_IRGN0_SHIFT 8 270529c1cf98SAndrew Turner #define TCR_IRGN0_WBWA (UL(1) << TCR_IRGN0_SHIFT) 2706f3e9395dSAndrew Turner #define TCR_EPD0_SHIFT 7 270729c1cf98SAndrew Turner #define TCR_EPD0 (UL(1) << TCR_EPD0_SHIFT) 2708f3e9395dSAndrew Turner /* Bit 6 is reserved */ 2709f3e9395dSAndrew Turner #define TCR_T0SZ_SHIFT 0 271029c1cf98SAndrew Turner #define TCR_T0SZ_MASK (UL(0x3f) << TCR_T0SZ_SHIFT) 2711f3e9395dSAndrew Turner #define TCR_T0SZ(x) ((x) << TCR_T0SZ_SHIFT) 2712f3e9395dSAndrew Turner #define TCR_TxSZ(x) (TCR_T1SZ(x) | TCR_T0SZ(x)) 27131038d102SZbigniew Bodek 271447361851SAndrew Turner /* TCR_EL12 */ 271547361851SAndrew Turner #define TCR_EL12_REG MRS_REG_ALT_NAME(TCR_EL12) 271647361851SAndrew Turner #define TCR_EL12_op0 3 271747361851SAndrew Turner #define TCR_EL12_op1 5 271847361851SAndrew Turner #define TCR_EL12_CRn 2 271947361851SAndrew Turner #define TCR_EL12_CRm 0 272047361851SAndrew Turner #define TCR_EL12_op2 2 272147361851SAndrew Turner 27220accd726SAndrew Turner /* TTBR0_EL1 & TTBR1_EL1 - Translation Table Base Register 0 & 1 */ 27230accd726SAndrew Turner #define TTBR_ASID_SHIFT 48 27240accd726SAndrew Turner #define TTBR_ASID_MASK (0xfffful << TTBR_ASID_SHIFT) 27250accd726SAndrew Turner #define TTBR_BADDR 0x0000fffffffffffeul 27260accd726SAndrew Turner #define TTBR_CnP_SHIFT 0 27270accd726SAndrew Turner #define TTBR_CnP (1ul << TTBR_CnP_SHIFT) 27280accd726SAndrew Turner 272947361851SAndrew Turner /* TTBR0_EL1 */ 273047361851SAndrew Turner #define TTBR0_EL1_REG MRS_REG_ALT_NAME(TTBR0_EL1) 273147361851SAndrew Turner #define TTBR0_EL1_op0 3 273247361851SAndrew Turner #define TTBR0_EL1_op1 0 273347361851SAndrew Turner #define TTBR0_EL1_CRn 2 273447361851SAndrew Turner #define TTBR0_EL1_CRm 0 273547361851SAndrew Turner #define TTBR0_EL1_op2 0 273647361851SAndrew Turner 273747361851SAndrew Turner /* TTBR0_EL12 */ 273847361851SAndrew Turner #define TTBR0_EL12_REG MRS_REG_ALT_NAME(TTBR0_EL12) 273947361851SAndrew Turner #define TTBR0_EL12_op0 3 274047361851SAndrew Turner #define TTBR0_EL12_op1 5 274147361851SAndrew Turner #define TTBR0_EL12_CRn 2 274247361851SAndrew Turner #define TTBR0_EL12_CRm 0 274347361851SAndrew Turner #define TTBR0_EL12_op2 0 274447361851SAndrew Turner 274547361851SAndrew Turner /* TTBR1_EL1 */ 274647361851SAndrew Turner #define TTBR1_EL1_REG MRS_REG_ALT_NAME(TTBR1_EL1) 274747361851SAndrew Turner #define TTBR1_EL1_op0 3 274847361851SAndrew Turner #define TTBR1_EL1_op1 0 274947361851SAndrew Turner #define TTBR1_EL1_CRn 2 275047361851SAndrew Turner #define TTBR1_EL1_CRm 0 275147361851SAndrew Turner #define TTBR1_EL1_op2 1 275247361851SAndrew Turner 275347361851SAndrew Turner /* TTBR1_EL12 */ 275447361851SAndrew Turner #define TTBR1_EL12_REG MRS_REG_ALT_NAME(TTBR1_EL12) 275547361851SAndrew Turner #define TTBR1_EL12_op0 3 275647361851SAndrew Turner #define TTBR1_EL12_op1 5 275747361851SAndrew Turner #define TTBR1_EL12_CRn 2 275847361851SAndrew Turner #define TTBR1_EL12_CRm 0 275947361851SAndrew Turner #define TTBR1_EL12_op2 1 276047361851SAndrew Turner 276147361851SAndrew Turner /* VBAR_EL1 */ 276247361851SAndrew Turner #define VBAR_EL1_REG MRS_REG_ALT_NAME(VBAR_EL1) 276347361851SAndrew Turner #define VBAR_EL1_op0 3 276447361851SAndrew Turner #define VBAR_EL1_op1 0 276547361851SAndrew Turner #define VBAR_EL1_CRn 12 276647361851SAndrew Turner #define VBAR_EL1_CRm 0 276747361851SAndrew Turner #define VBAR_EL1_op2 0 276847361851SAndrew Turner 276947361851SAndrew Turner /* VBAR_EL12 */ 277047361851SAndrew Turner #define VBAR_EL12_REG MRS_REG_ALT_NAME(VBAR_EL12) 277147361851SAndrew Turner #define VBAR_EL12_op0 3 277247361851SAndrew Turner #define VBAR_EL12_op1 5 277347361851SAndrew Turner #define VBAR_EL12_CRn 12 277447361851SAndrew Turner #define VBAR_EL12_CRm 0 277547361851SAndrew Turner #define VBAR_EL12_op2 0 277647361851SAndrew Turner 27772f317e73SAndrew Turner /* ZCR_EL1 - SVE Control Register */ 2778332c4263SAndrew Turner #define ZCR_EL1 MRS_REG(ZCR_EL1) 2779332c4263SAndrew Turner #define ZCR_EL1_REG MRS_REG_ALT_NAME(ZCR_EL1_REG) 2780332c4263SAndrew Turner #define ZCR_EL1_REG_op0 3 2781332c4263SAndrew Turner #define ZCR_EL1_REG_op1 0 2782332c4263SAndrew Turner #define ZCR_EL1_REG_CRn 1 2783332c4263SAndrew Turner #define ZCR_EL1_REG_CRm 2 2784332c4263SAndrew Turner #define ZCR_EL1_REG_op2 0 27852f317e73SAndrew Turner #define ZCR_LEN_SHIFT 0 27862f317e73SAndrew Turner #define ZCR_LEN_MASK (0xf << ZCR_LEN_SHIFT) 27872f317e73SAndrew Turner #define ZCR_LEN_BYTES(x) ((((x) & ZCR_LEN_MASK) + 1) * 16) 27882f317e73SAndrew Turner 2789e5acd89cSAndrew Turner #endif /* !_MACHINE_ARMREG_H_ */ 2790d5d97bedSMike Karels 2791d5d97bedSMike Karels #endif /* !__arm__ */ 2792