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 */ 3664b516226SAndrew Turner #define CTR_EL0 MRS_REG(CTR_EL0) 3674b516226SAndrew Turner #define CTR_EL0_REG MRS_REG_ALT_NAME(CTR_EL0) 3684b516226SAndrew Turner #define CTR_EL0_op0 3 3694b516226SAndrew Turner #define CTR_EL0_op1 3 3704b516226SAndrew Turner #define CTR_EL0_CRn 0 3714b516226SAndrew Turner #define CTR_EL0_CRm 0 3724b516226SAndrew Turner #define CTR_EL0_op2 1 373c32e28d5SAndrew Turner #define CTR_RES1 (1 << 31) 374c32e28d5SAndrew Turner #define CTR_TminLine_SHIFT 32 375c32e28d5SAndrew Turner #define CTR_TminLine_MASK (UL(0x3f) << CTR_TminLine_SHIFT) 376c32e28d5SAndrew Turner #define CTR_TminLine_VAL(reg) ((reg) & CTR_TminLine_MASK) 377c32e28d5SAndrew Turner #define CTR_DIC_SHIFT 29 378a090372fSAndrew Turner #define CTR_DIC_WIDTH 1 379c32e28d5SAndrew Turner #define CTR_DIC_MASK (0x1 << CTR_DIC_SHIFT) 380c32e28d5SAndrew Turner #define CTR_DIC_VAL(reg) ((reg) & CTR_DIC_MASK) 381a090372fSAndrew Turner #define CTR_DIC_NONE (0x0 << CTR_DIC_SHIFT) 382a090372fSAndrew Turner #define CTR_DIC_IMPL (0x1 << CTR_DIC_SHIFT) 383c32e28d5SAndrew Turner #define CTR_IDC_SHIFT 28 384a090372fSAndrew Turner #define CTR_IDC_WIDTH 1 385c32e28d5SAndrew Turner #define CTR_IDC_MASK (0x1 << CTR_IDC_SHIFT) 386c32e28d5SAndrew Turner #define CTR_IDC_VAL(reg) ((reg) & CTR_IDC_MASK) 387a090372fSAndrew Turner #define CTR_IDC_NONE (0x0 << CTR_IDC_SHIFT) 388a090372fSAndrew Turner #define CTR_IDC_IMPL (0x1 << CTR_IDC_SHIFT) 389c32e28d5SAndrew Turner #define CTR_CWG_SHIFT 24 390a090372fSAndrew Turner #define CTR_CWG_WIDTH 4 391c32e28d5SAndrew Turner #define CTR_CWG_MASK (0xf << CTR_CWG_SHIFT) 392c32e28d5SAndrew Turner #define CTR_CWG_VAL(reg) ((reg) & CTR_CWG_MASK) 393c32e28d5SAndrew Turner #define CTR_CWG_SIZE(reg) (4 << (CTR_CWG_VAL(reg) >> CTR_CWG_SHIFT)) 394c32e28d5SAndrew Turner #define CTR_ERG_SHIFT 20 395a090372fSAndrew Turner #define CTR_ERG_WIDTH 4 396c32e28d5SAndrew Turner #define CTR_ERG_MASK (0xf << CTR_ERG_SHIFT) 397c32e28d5SAndrew Turner #define CTR_ERG_VAL(reg) ((reg) & CTR_ERG_MASK) 398c32e28d5SAndrew Turner #define CTR_ERG_SIZE(reg) (4 << (CTR_ERG_VAL(reg) >> CTR_ERG_SHIFT)) 399e5acd89cSAndrew Turner #define CTR_DLINE_SHIFT 16 400a090372fSAndrew Turner #define CTR_DLINE_WIDTH 4 401e5acd89cSAndrew Turner #define CTR_DLINE_MASK (0xf << CTR_DLINE_SHIFT) 402c32e28d5SAndrew Turner #define CTR_DLINE_VAL(reg) ((reg) & CTR_DLINE_MASK) 403c32e28d5SAndrew Turner #define CTR_DLINE_SIZE(reg) (4 << (CTR_DLINE_VAL(reg) >> CTR_DLINE_SHIFT)) 404c32e28d5SAndrew Turner #define CTR_L1IP_SHIFT 14 405a090372fSAndrew Turner #define CTR_L1IP_WIDTH 2 406c32e28d5SAndrew Turner #define CTR_L1IP_MASK (0x3 << CTR_L1IP_SHIFT) 407c32e28d5SAndrew Turner #define CTR_L1IP_VAL(reg) ((reg) & CTR_L1IP_MASK) 4082923027cSAndrew Turner #define CTR_L1IP_VIPT (2 << CTR_L1IP_SHIFT) 409c32e28d5SAndrew Turner #define CTR_L1IP_PIPT (3 << CTR_L1IP_SHIFT) 410e5acd89cSAndrew Turner #define CTR_ILINE_SHIFT 0 411a090372fSAndrew Turner #define CTR_ILINE_WIDTH 4 412e5acd89cSAndrew Turner #define CTR_ILINE_MASK (0xf << CTR_ILINE_SHIFT) 413c32e28d5SAndrew Turner #define CTR_ILINE_VAL(reg) ((reg) & CTR_ILINE_MASK) 414c32e28d5SAndrew Turner #define CTR_ILINE_SIZE(reg) (4 << (CTR_ILINE_VAL(reg) >> CTR_ILINE_SHIFT)) 415e5acd89cSAndrew Turner 4165e7941b6SAndrew Turner /* CurrentEL - Current Exception Level */ 4175e7941b6SAndrew Turner #define CURRENTEL_EL_SHIFT 2 4185e7941b6SAndrew Turner #define CURRENTEL_EL_MASK (0x3 << CURRENTEL_EL_SHIFT) 4195e7941b6SAndrew Turner #define CURRENTEL_EL_EL0 (0x0 << CURRENTEL_EL_SHIFT) 4205e7941b6SAndrew Turner #define CURRENTEL_EL_EL1 (0x1 << CURRENTEL_EL_SHIFT) 4215e7941b6SAndrew Turner #define CURRENTEL_EL_EL2 (0x2 << CURRENTEL_EL_SHIFT) 4225e7941b6SAndrew Turner #define CURRENTEL_EL_EL3 (0x3 << CURRENTEL_EL_SHIFT) 4235e7941b6SAndrew Turner 424337eb2abSAndrew Turner /* DAIFSet/DAIFClear */ 425337eb2abSAndrew Turner #define DAIF_D (1 << 3) 426337eb2abSAndrew Turner #define DAIF_A (1 << 2) 427337eb2abSAndrew Turner #define DAIF_I (1 << 1) 428337eb2abSAndrew Turner #define DAIF_F (1 << 0) 429337eb2abSAndrew Turner #define DAIF_ALL (DAIF_D | DAIF_A | DAIF_I | DAIF_F) 4301f0174c9SAyrton Munoz #define DAIF_INTR (DAIF_I | DAIF_F) /* All exceptions that pass */ 431337eb2abSAndrew Turner /* through the intr framework */ 432337eb2abSAndrew Turner 433664640baSAndrew Turner /* DBGBCR<n>_EL1 - Debug Breakpoint Control Registers */ 4344dc81560SAndrew Turner #define DBGBCR_EL1_op0 2 4354dc81560SAndrew Turner #define DBGBCR_EL1_op1 0 4364dc81560SAndrew Turner #define DBGBCR_EL1_CRn 0 4374dc81560SAndrew Turner /* DBGBCR_EL1_CRm indicates which watchpoint this register is for */ 4384dc81560SAndrew Turner #define DBGBCR_EL1_op2 5 439664640baSAndrew Turner #define DBGBCR_EN 0x1 440664640baSAndrew Turner #define DBGBCR_PMC_SHIFT 1 441664640baSAndrew Turner #define DBGBCR_PMC (0x3 << DBGBCR_PMC_SHIFT) 442664640baSAndrew Turner #define DBGBCR_PMC_EL1 (0x1 << DBGBCR_PMC_SHIFT) 443664640baSAndrew Turner #define DBGBCR_PMC_EL0 (0x2 << DBGBCR_PMC_SHIFT) 444664640baSAndrew Turner #define DBGBCR_BAS_SHIFT 5 445664640baSAndrew Turner #define DBGBCR_BAS (0xf << DBGBCR_BAS_SHIFT) 446664640baSAndrew Turner #define DBGBCR_HMC_SHIFT 13 447664640baSAndrew Turner #define DBGBCR_HMC (0x1 << DBGBCR_HMC_SHIFT) 448664640baSAndrew Turner #define DBGBCR_SSC_SHIFT 14 449664640baSAndrew Turner #define DBGBCR_SSC (0x3 << DBGBCR_SSC_SHIFT) 450664640baSAndrew Turner #define DBGBCR_LBN_SHIFT 16 451664640baSAndrew Turner #define DBGBCR_LBN (0xf << DBGBCR_LBN_SHIFT) 452664640baSAndrew Turner #define DBGBCR_BT_SHIFT 20 453664640baSAndrew Turner #define DBGBCR_BT (0xf << DBGBCR_BT_SHIFT) 454664640baSAndrew Turner 4554dc81560SAndrew Turner /* DBGBVR<n>_EL1 - Debug Breakpoint Value Registers */ 4564dc81560SAndrew Turner #define DBGBVR_EL1_op0 2 4574dc81560SAndrew Turner #define DBGBVR_EL1_op1 0 4584dc81560SAndrew Turner #define DBGBVR_EL1_CRn 0 4594dc81560SAndrew Turner /* DBGBVR_EL1_CRm indicates which watchpoint this register is for */ 4604dc81560SAndrew Turner #define DBGBVR_EL1_op2 4 4614dc81560SAndrew Turner 462664640baSAndrew Turner /* DBGWCR<n>_EL1 - Debug Watchpoint Control Registers */ 4634dc81560SAndrew Turner #define DBGWCR_EL1_op0 2 4644dc81560SAndrew Turner #define DBGWCR_EL1_op1 0 4654dc81560SAndrew Turner #define DBGWCR_EL1_CRn 0 4664dc81560SAndrew Turner /* DBGWCR_EL1_CRm indicates which watchpoint this register is for */ 4674dc81560SAndrew Turner #define DBGWCR_EL1_op2 7 468664640baSAndrew Turner #define DBGWCR_EN 0x1 469664640baSAndrew Turner #define DBGWCR_PAC_SHIFT 1 470664640baSAndrew Turner #define DBGWCR_PAC (0x3 << DBGWCR_PAC_SHIFT) 471664640baSAndrew Turner #define DBGWCR_PAC_EL1 (0x1 << DBGWCR_PAC_SHIFT) 472664640baSAndrew Turner #define DBGWCR_PAC_EL0 (0x2 << DBGWCR_PAC_SHIFT) 473664640baSAndrew Turner #define DBGWCR_LSC_SHIFT 3 474664640baSAndrew Turner #define DBGWCR_LSC (0x3 << DBGWCR_LSC_SHIFT) 475664640baSAndrew Turner #define DBGWCR_BAS_SHIFT 5 476664640baSAndrew Turner #define DBGWCR_BAS (0xff << DBGWCR_BAS_SHIFT) 477664640baSAndrew Turner #define DBGWCR_HMC_SHIFT 13 478664640baSAndrew Turner #define DBGWCR_HMC (0x1 << DBGWCR_HMC_SHIFT) 479664640baSAndrew Turner #define DBGWCR_SSC_SHIFT 14 480664640baSAndrew Turner #define DBGWCR_SSC (0x3 << DBGWCR_SSC_SHIFT) 481664640baSAndrew Turner #define DBGWCR_LBN_SHIFT 16 482664640baSAndrew Turner #define DBGWCR_LBN (0xf << DBGWCR_LBN_SHIFT) 483664640baSAndrew Turner #define DBGWCR_WT_SHIFT 20 484664640baSAndrew Turner #define DBGWCR_WT (0x1 << DBGWCR_WT_SHIFT) 485664640baSAndrew Turner #define DBGWCR_MASK_SHIFT 24 486664640baSAndrew Turner #define DBGWCR_MASK (0x1f << DBGWCR_MASK_SHIFT) 487664640baSAndrew Turner 4884dc81560SAndrew Turner /* DBGWVR<n>_EL1 - Debug Watchpoint Value Registers */ 4894dc81560SAndrew Turner #define DBGWVR_EL1_op0 2 4904dc81560SAndrew Turner #define DBGWVR_EL1_op1 0 4914dc81560SAndrew Turner #define DBGWVR_EL1_CRn 0 4924dc81560SAndrew Turner /* DBGWVR_EL1_CRm indicates which watchpoint this register is for */ 4934dc81560SAndrew Turner #define DBGWVR_EL1_op2 6 4944dc81560SAndrew Turner 495db278182SWojciech Macek /* DCZID_EL0 - Data Cache Zero ID register */ 496db278182SWojciech Macek #define DCZID_DZP (1 << 4) /* DC ZVA prohibited if non-0 */ 497db278182SWojciech Macek #define DCZID_BS_SHIFT 0 498db278182SWojciech Macek #define DCZID_BS_MASK (0xf << DCZID_BS_SHIFT) 499db278182SWojciech Macek #define DCZID_BS_SIZE(reg) (((reg) & DCZID_BS_MASK) >> DCZID_BS_SHIFT) 500db278182SWojciech Macek 5014dc81560SAndrew Turner /* DBGAUTHSTATUS_EL1 */ 5024dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1 MRS_REG(DBGAUTHSTATUS_EL1) 5034dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op0 2 5044dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op1 0 5054dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_CRn 7 5064dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_CRm 14 5074dc81560SAndrew Turner #define DBGAUTHSTATUS_EL1_op2 6 5084dc81560SAndrew Turner 5094dc81560SAndrew Turner /* DBGCLAIMCLR_EL1 */ 5104dc81560SAndrew Turner #define DBGCLAIMCLR_EL1 MRS_REG(DBGCLAIMCLR_EL1) 5114dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op0 2 5124dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op1 0 5134dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_CRn 7 5144dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_CRm 9 5154dc81560SAndrew Turner #define DBGCLAIMCLR_EL1_op2 6 5164dc81560SAndrew Turner 5174dc81560SAndrew Turner /* DBGCLAIMSET_EL1 */ 5184dc81560SAndrew Turner #define DBGCLAIMSET_EL1 MRS_REG(DBGCLAIMSET_EL1) 5194dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op0 2 5204dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op1 0 5214dc81560SAndrew Turner #define DBGCLAIMSET_EL1_CRn 7 5224dc81560SAndrew Turner #define DBGCLAIMSET_EL1_CRm 8 5234dc81560SAndrew Turner #define DBGCLAIMSET_EL1_op2 6 5244dc81560SAndrew Turner 5254dc81560SAndrew Turner /* DBGPRCR_EL1 */ 5264dc81560SAndrew Turner #define DBGPRCR_EL1 MRS_REG(DBGPRCR_EL1) 5274dc81560SAndrew Turner #define DBGPRCR_EL1_op0 2 5284dc81560SAndrew Turner #define DBGPRCR_EL1_op1 0 5294dc81560SAndrew Turner #define DBGPRCR_EL1_CRn 1 5304dc81560SAndrew Turner #define DBGPRCR_EL1_CRm 4 5314dc81560SAndrew Turner #define DBGPRCR_EL1_op2 4 5324dc81560SAndrew Turner 53347361851SAndrew Turner /* ELR_EL1 */ 53447361851SAndrew Turner #define ELR_EL1_REG MRS_REG_ALT_NAME(ELR_EL1) 53547361851SAndrew Turner #define ELR_EL1_op0 3 53647361851SAndrew Turner #define ELR_EL1_op1 0 53747361851SAndrew Turner #define ELR_EL1_CRn 4 53847361851SAndrew Turner #define ELR_EL1_CRm 0 53947361851SAndrew Turner #define ELR_EL1_op2 1 54047361851SAndrew Turner 54147361851SAndrew Turner /* ELR_EL12 */ 54247361851SAndrew Turner #define ELR_EL12_REG MRS_REG_ALT_NAME(ELR_EL12) 54347361851SAndrew Turner #define ELR_EL12_op0 3 54447361851SAndrew Turner #define ELR_EL12_op1 5 54547361851SAndrew Turner #define ELR_EL12_CRn 4 54647361851SAndrew Turner #define ELR_EL12_CRm 0 54747361851SAndrew Turner #define ELR_EL12_op2 1 54847361851SAndrew Turner 549e5acd89cSAndrew Turner /* ESR_ELx */ 5503a1c1a30SAndrew Turner #define ESR_ELx_ISS_MASK 0x01ffffff 5516e2caba7SDmitry Chagin #define ISS_FP_TFV_SHIFT 23 5526e2caba7SDmitry Chagin #define ISS_FP_TFV (0x01 << ISS_FP_TFV_SHIFT) 5536e2caba7SDmitry Chagin #define ISS_FP_IOF 0x01 5546e2caba7SDmitry Chagin #define ISS_FP_DZF 0x02 5556e2caba7SDmitry Chagin #define ISS_FP_OFF 0x04 5566e2caba7SDmitry Chagin #define ISS_FP_UFF 0x08 5576e2caba7SDmitry Chagin #define ISS_FP_IXF 0x10 5586e2caba7SDmitry Chagin #define ISS_FP_IDF 0x80 559e5acd89cSAndrew Turner #define ISS_INSN_FnV (0x01 << 10) 560e5acd89cSAndrew Turner #define ISS_INSN_EA (0x01 << 9) 561e5acd89cSAndrew Turner #define ISS_INSN_S1PTW (0x01 << 7) 562e5acd89cSAndrew Turner #define ISS_INSN_IFSC_MASK (0x1f << 0) 5633a1c1a30SAndrew Turner 564dd24d475SMark Johnston #define ISS_WFx_TI_SHIFT 0 565dd24d475SMark Johnston #define ISS_WFx_TI_MASK (0x03 << ISS_WFx_TI_SHIFT) 566dd24d475SMark Johnston #define ISS_WFx_TI_WFI (0x00 << ISS_WFx_TI_SHIFT) 567dd24d475SMark Johnston #define ISS_WFx_TI_WFE (0x01 << ISS_WFx_TI_SHIFT) 568dd24d475SMark Johnston #define ISS_WFx_TI_WFIT (0x02 << ISS_WFx_TI_SHIFT) 569dd24d475SMark Johnston #define ISS_WFx_TI_WFET (0x03 << ISS_WFx_TI_SHIFT) 570dd24d475SMark Johnston #define ISS_WFx_RV_SHIFT 2 571dd24d475SMark Johnston #define ISS_WFx_RV_MASK (0x01 << ISS_WFx_RV_SHIFT) 572dd24d475SMark Johnston #define ISS_WFx_RV_INVALID (0x00 << ISS_WFx_RV_SHIFT) 573dd24d475SMark Johnston #define ISS_WFx_RV_VALID (0x01 << ISS_WFx_RV_SHIFT) 574dd24d475SMark Johnston #define ISS_WFx_RN_SHIFT 5 575dd24d475SMark Johnston #define ISS_WFx_RN_MASK (0x1f << ISS_WFx_RN_SHIFT) 576dd24d475SMark Johnston #define ISS_WFx_RN(x) (((x) & ISS_WFx_RN_MASK) >> ISS_WFx_RN_SHIFT) 577dd24d475SMark Johnston #define ISS_WFx_COND_SHIFT 20 578dd24d475SMark Johnston #define ISS_WFx_COND_MASK (0x0f << ISS_WFx_COND_SHIFT) 579dd24d475SMark Johnston #define ISS_WFx_CV_SHIFT 24 580dd24d475SMark Johnston #define ISS_WFx_CV_MASK (0x01 << ISS_WFx_CV_SHIFT) 581dd24d475SMark Johnston #define ISS_WFx_CV_INVALID (0x00 << ISS_WFx_CV_SHIFT) 582dd24d475SMark Johnston #define ISS_WFx_CV_VALID (0x01 << ISS_WFx_CV_SHIFT) 583dd24d475SMark Johnston 5843a1c1a30SAndrew Turner #define ISS_MSR_DIR_SHIFT 0 5853a1c1a30SAndrew Turner #define ISS_MSR_DIR (0x01 << ISS_MSR_DIR_SHIFT) 5863a1c1a30SAndrew Turner #define ISS_MSR_Rt_SHIFT 5 5873a1c1a30SAndrew Turner #define ISS_MSR_Rt_MASK (0x1f << ISS_MSR_Rt_SHIFT) 5883a1c1a30SAndrew Turner #define ISS_MSR_Rt(x) (((x) & ISS_MSR_Rt_MASK) >> ISS_MSR_Rt_SHIFT) 5893a1c1a30SAndrew Turner #define ISS_MSR_CRm_SHIFT 1 5903a1c1a30SAndrew Turner #define ISS_MSR_CRm_MASK (0xf << ISS_MSR_CRm_SHIFT) 5913a1c1a30SAndrew Turner #define ISS_MSR_CRm(x) (((x) & ISS_MSR_CRm_MASK) >> ISS_MSR_CRm_SHIFT) 5923a1c1a30SAndrew Turner #define ISS_MSR_CRn_SHIFT 10 5933a1c1a30SAndrew Turner #define ISS_MSR_CRn_MASK (0xf << ISS_MSR_CRn_SHIFT) 5943a1c1a30SAndrew Turner #define ISS_MSR_CRn(x) (((x) & ISS_MSR_CRn_MASK) >> ISS_MSR_CRn_SHIFT) 5953a1c1a30SAndrew Turner #define ISS_MSR_OP1_SHIFT 14 5963a1c1a30SAndrew Turner #define ISS_MSR_OP1_MASK (0x7 << ISS_MSR_OP1_SHIFT) 5973a1c1a30SAndrew Turner #define ISS_MSR_OP1(x) (((x) & ISS_MSR_OP1_MASK) >> ISS_MSR_OP1_SHIFT) 5983a1c1a30SAndrew Turner #define ISS_MSR_OP2_SHIFT 17 5993a1c1a30SAndrew Turner #define ISS_MSR_OP2_MASK (0x7 << ISS_MSR_OP2_SHIFT) 6003a1c1a30SAndrew Turner #define ISS_MSR_OP2(x) (((x) & ISS_MSR_OP2_MASK) >> ISS_MSR_OP2_SHIFT) 6013a1c1a30SAndrew Turner #define ISS_MSR_OP0_SHIFT 20 6023a1c1a30SAndrew Turner #define ISS_MSR_OP0_MASK (0x3 << ISS_MSR_OP0_SHIFT) 6033a1c1a30SAndrew Turner #define ISS_MSR_OP0(x) (((x) & ISS_MSR_OP0_MASK) >> ISS_MSR_OP0_SHIFT) 6043a1c1a30SAndrew Turner #define ISS_MSR_REG_MASK \ 6053a1c1a30SAndrew Turner (ISS_MSR_OP0_MASK | ISS_MSR_OP2_MASK | ISS_MSR_OP1_MASK | \ 6063a1c1a30SAndrew Turner ISS_MSR_CRn_MASK | ISS_MSR_CRm_MASK) 60709ac9cf8SAndrew Turner #define ISS_MSR_REG(reg) \ 60809ac9cf8SAndrew Turner (((reg ## _op0) << ISS_MSR_OP0_SHIFT) | \ 60909ac9cf8SAndrew Turner ((reg ## _op1) << ISS_MSR_OP1_SHIFT) | \ 61009ac9cf8SAndrew Turner ((reg ## _CRn) << ISS_MSR_CRn_SHIFT) | \ 61109ac9cf8SAndrew Turner ((reg ## _CRm) << ISS_MSR_CRm_SHIFT) | \ 61209ac9cf8SAndrew Turner ((reg ## _op2) << ISS_MSR_OP2_SHIFT)) 6133a1c1a30SAndrew Turner 6143a1c1a30SAndrew Turner #define ISS_DATA_ISV_SHIFT 24 6153a1c1a30SAndrew Turner #define ISS_DATA_ISV (0x01 << ISS_DATA_ISV_SHIFT) 6163a1c1a30SAndrew Turner #define ISS_DATA_SAS_SHIFT 22 6173a1c1a30SAndrew Turner #define ISS_DATA_SAS_MASK (0x03 << ISS_DATA_SAS_SHIFT) 6183a1c1a30SAndrew Turner #define ISS_DATA_SSE_SHIFT 21 6193a1c1a30SAndrew Turner #define ISS_DATA_SSE (0x01 << ISS_DATA_SSE_SHIFT) 6203a1c1a30SAndrew Turner #define ISS_DATA_SRT_SHIFT 16 6213a1c1a30SAndrew Turner #define ISS_DATA_SRT_MASK (0x1f << ISS_DATA_SRT_SHIFT) 622e5acd89cSAndrew Turner #define ISS_DATA_SF (0x01 << 15) 623e5acd89cSAndrew Turner #define ISS_DATA_AR (0x01 << 14) 624e5acd89cSAndrew Turner #define ISS_DATA_FnV (0x01 << 10) 625a9da8477SMark Johnston #define ISS_DATA_EA (0x01 << 9) 626a9da8477SMark Johnston #define ISS_DATA_CM (0x01 << 8) 627a9da8477SMark Johnston #define ISS_DATA_S1PTW (0x01 << 7) 6283a1c1a30SAndrew Turner #define ISS_DATA_WnR_SHIFT 6 6293a1c1a30SAndrew Turner #define ISS_DATA_WnR (0x01 << ISS_DATA_WnR_SHIFT) 630a70475caSAndrew Turner #define ISS_DATA_DFSC_MASK (0x3f << 0) 63163512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L0 (0x00 << 0) 63263512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L1 (0x01 << 0) 63363512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L2 (0x02 << 0) 63463512a12SAndrew Turner #define ISS_DATA_DFSC_ASF_L3 (0x03 << 0) 63563512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L0 (0x04 << 0) 63663512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L1 (0x05 << 0) 63763512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L2 (0x06 << 0) 63863512a12SAndrew Turner #define ISS_DATA_DFSC_TF_L3 (0x07 << 0) 63963512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L1 (0x09 << 0) 64063512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L2 (0x0a << 0) 64163512a12SAndrew Turner #define ISS_DATA_DFSC_AFF_L3 (0x0b << 0) 64263512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L1 (0x0d << 0) 64363512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L2 (0x0e << 0) 64463512a12SAndrew Turner #define ISS_DATA_DFSC_PF_L3 (0x0f << 0) 64563512a12SAndrew Turner #define ISS_DATA_DFSC_EXT (0x10 << 0) 64663512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L0 (0x14 << 0) 64763512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L1 (0x15 << 0) 64863512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L2 (0x16 << 0) 64963512a12SAndrew Turner #define ISS_DATA_DFSC_EXT_L3 (0x17 << 0) 65063512a12SAndrew Turner #define ISS_DATA_DFSC_ECC (0x18 << 0) 65163512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L0 (0x1c << 0) 65263512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L1 (0x1d << 0) 65363512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L2 (0x1e << 0) 65463512a12SAndrew Turner #define ISS_DATA_DFSC_ECC_L3 (0x1f << 0) 65563512a12SAndrew Turner #define ISS_DATA_DFSC_ALIGN (0x21 << 0) 656dc836c65SAndrew Turner #define ISS_DATA_DFSC_TLB_CONFLICT (0x30 << 0) 657e5acd89cSAndrew Turner #define ESR_ELx_IL (0x01 << 25) 658e5acd89cSAndrew Turner #define ESR_ELx_EC_SHIFT 26 659e5acd89cSAndrew Turner #define ESR_ELx_EC_MASK (0x3f << 26) 660e5acd89cSAndrew Turner #define ESR_ELx_EXCEPTION(esr) (((esr) & ESR_ELx_EC_MASK) >> ESR_ELx_EC_SHIFT) 661e5acd89cSAndrew Turner #define EXCP_UNKNOWN 0x00 /* Unkwn exception */ 6623a1c1a30SAndrew Turner #define EXCP_TRAP_WFI_WFE 0x01 /* Trapped WFI or WFE */ 663e5acd89cSAndrew Turner #define EXCP_FP_SIMD 0x07 /* VFP/SIMD trap */ 664450f731bSAndrew Turner #define EXCP_BTI 0x0d /* Branch Target Exception */ 665e5acd89cSAndrew Turner #define EXCP_ILL_STATE 0x0e /* Illegal execution state */ 6667af24ff7SEd Schouten #define EXCP_SVC32 0x11 /* SVC trap for AArch32 */ 6677af24ff7SEd Schouten #define EXCP_SVC64 0x15 /* SVC trap for AArch64 */ 6683a1c1a30SAndrew Turner #define EXCP_HVC 0x16 /* HVC trap */ 669e5acd89cSAndrew Turner #define EXCP_MSR 0x18 /* MSR/MRS trap */ 670ffa5bf8bSAndrew Turner #define EXCP_SVE 0x19 /* SVE trap */ 67185b7c566SAndrew Turner #define EXCP_FPAC 0x1c /* Faulting PAC trap */ 672e5acd89cSAndrew Turner #define EXCP_INSN_ABORT_L 0x20 /* Instruction abort, from lower EL */ 673e5acd89cSAndrew Turner #define EXCP_INSN_ABORT 0x21 /* Instruction abort, from same EL */ 674e5acd89cSAndrew Turner #define EXCP_PC_ALIGN 0x22 /* PC alignment fault */ 675e5acd89cSAndrew Turner #define EXCP_DATA_ABORT_L 0x24 /* Data abort, from lower EL */ 676e5acd89cSAndrew Turner #define EXCP_DATA_ABORT 0x25 /* Data abort, from same EL */ 677e5acd89cSAndrew Turner #define EXCP_SP_ALIGN 0x26 /* SP slignment fault */ 678e5acd89cSAndrew Turner #define EXCP_TRAP_FP 0x2c /* Trapped FP exception */ 679e5acd89cSAndrew Turner #define EXCP_SERROR 0x2f /* SError interrupt */ 68005f39d1aSAndrew Turner #define EXCP_BRKPT_EL0 0x30 /* Hardware breakpoint, from same EL */ 681c802b486SAndrew Turner #define EXCP_BRKPT_EL1 0x31 /* Hardware breakpoint, from same EL */ 68287e19994SAndrew Turner #define EXCP_SOFTSTP_EL0 0x32 /* Software Step, from lower EL */ 683e5acd89cSAndrew Turner #define EXCP_SOFTSTP_EL1 0x33 /* Software Step, from same EL */ 684bd012c71SMitchell Horne #define EXCP_WATCHPT_EL0 0x34 /* Watchpoint, from lower EL */ 685e5acd89cSAndrew Turner #define EXCP_WATCHPT_EL1 0x35 /* Watchpoint, from same EL */ 68627340501SOlivier Houchard #define EXCP_BRKPT_32 0x38 /* 32bits breakpoint */ 687e5acd89cSAndrew Turner #define EXCP_BRK 0x3c /* Breakpoint */ 688e5acd89cSAndrew Turner 68947361851SAndrew Turner /* ESR_EL1 */ 69047361851SAndrew Turner #define ESR_EL1_REG MRS_REG_ALT_NAME(ESR_EL1) 69147361851SAndrew Turner #define ESR_EL1_op0 3 69247361851SAndrew Turner #define ESR_EL1_op1 0 69347361851SAndrew Turner #define ESR_EL1_CRn 5 69447361851SAndrew Turner #define ESR_EL1_CRm 2 6958b017284SAndrew Turner #define ESR_EL1_op2 0 69647361851SAndrew Turner 69747361851SAndrew Turner /* ESR_EL12 */ 69847361851SAndrew Turner #define ESR_EL12_REG MRS_REG_ALT_NAME(ESR_EL12) 69947361851SAndrew Turner #define ESR_EL12_op0 3 70047361851SAndrew Turner #define ESR_EL12_op1 5 70147361851SAndrew Turner #define ESR_EL12_CRn 5 70247361851SAndrew Turner #define ESR_EL12_CRm 2 70347361851SAndrew Turner #define ESR_EL12_op2 0 70447361851SAndrew Turner 70547361851SAndrew Turner /* FAR_EL1 */ 70647361851SAndrew Turner #define FAR_EL1_REG MRS_REG_ALT_NAME(FAR_EL1) 70747361851SAndrew Turner #define FAR_EL1_op0 3 70847361851SAndrew Turner #define FAR_EL1_op1 0 70947361851SAndrew Turner #define FAR_EL1_CRn 6 71047361851SAndrew Turner #define FAR_EL1_CRm 0 71147361851SAndrew Turner #define FAR_EL1_op2 0 71247361851SAndrew Turner 71347361851SAndrew Turner /* FAR_EL12 */ 71447361851SAndrew Turner #define FAR_EL12_REG MRS_REG_ALT_NAME(FAR_EL12) 71547361851SAndrew Turner #define FAR_EL12_op0 3 71647361851SAndrew Turner #define FAR_EL12_op1 5 71747361851SAndrew Turner #define FAR_EL12_CRn 6 71847361851SAndrew Turner #define FAR_EL12_CRm 0 71947361851SAndrew Turner #define FAR_EL12_op2 0 72047361851SAndrew Turner 72142cb216aSZbigniew Bodek /* ICC_CTLR_EL1 */ 72242cb216aSZbigniew Bodek #define ICC_CTLR_EL1_EOIMODE (1U << 1) 72342cb216aSZbigniew Bodek 72442cb216aSZbigniew Bodek /* ICC_IAR1_EL1 */ 72542cb216aSZbigniew Bodek #define ICC_IAR1_EL1_SPUR (0x03ff) 72642cb216aSZbigniew Bodek 72742cb216aSZbigniew Bodek /* ICC_IGRPEN0_EL1 */ 72842cb216aSZbigniew Bodek #define ICC_IGRPEN0_EL1_EN (1U << 0) 72942cb216aSZbigniew Bodek 73042cb216aSZbigniew Bodek /* ICC_PMR_EL1 */ 73142cb216aSZbigniew Bodek #define ICC_PMR_EL1_PRIO_MASK (0xFFUL) 73242cb216aSZbigniew Bodek 7338133eda9SZbigniew Bodek /* ICC_SGI1R_EL1 */ 7344dc81560SAndrew Turner #define ICC_SGI1R_EL1 MRS_REG(ICC_SGI1R_EL1) 7354dc81560SAndrew Turner #define ICC_SGI1R_EL1_op0 3 7364dc81560SAndrew Turner #define ICC_SGI1R_EL1_op1 0 7374dc81560SAndrew Turner #define ICC_SGI1R_EL1_CRn 12 7384dc81560SAndrew Turner #define ICC_SGI1R_EL1_CRm 11 7394dc81560SAndrew Turner #define ICC_SGI1R_EL1_op2 5 740419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_TL_SHIFT 0 741419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_TL_MASK (0xffffUL << ICC_SGI1R_EL1_TL_SHIFT) 742419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_TL_VAL(x) ((x) & ICC_SGI1R_EL1_TL_MASK) 7438133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF1_SHIFT 16 744419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF1_MASK (0xfful << ICC_SGI1R_EL1_AFF1_SHIFT) 745419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF1_VAL(x) ((x) & ICC_SGI1R_EL1_AFF1_MASK) 7468133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_SGIID_SHIFT 24 747419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_SGIID_MASK (0xfUL << ICC_SGI1R_EL1_SGIID_SHIFT) 748419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_SGIID_VAL(x) ((x) & ICC_SGI1R_EL1_SGIID_MASK) 7498133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF2_SHIFT 32 750419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF2_MASK (0xfful << ICC_SGI1R_EL1_AFF2_SHIFT) 751419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF2_VAL(x) ((x) & ICC_SGI1R_EL1_AFF2_MASK) 752419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_RS_SHIFT 44 753419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_RS_MASK (0xful << ICC_SGI1R_EL1_RS_SHIFT) 754419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_RS_VAL(x) ((x) & ICC_SGI1R_EL1_RS_MASK) 7558133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_AFF3_SHIFT 48 756419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF3_MASK (0xfful << ICC_SGI1R_EL1_AFF3_SHIFT) 757419f8fc7SAndrew Turner #define ICC_SGI1R_EL1_AFF3_VAL(x) ((x) & ICC_SGI1R_EL1_AFF3_MASK) 7588133eda9SZbigniew Bodek #define ICC_SGI1R_EL1_IRM (0x1UL << 40) 7598133eda9SZbigniew Bodek 76042cb216aSZbigniew Bodek /* ICC_SRE_EL1 */ 76142cb216aSZbigniew Bodek #define ICC_SRE_EL1_SRE (1U << 0) 76242cb216aSZbigniew Bodek 7634baf5db0SAndrew Turner /* ID_AA64AFR0_EL1 */ 7644baf5db0SAndrew Turner #define ID_AA64AFR0_EL1 MRS_REG(ID_AA64AFR0_EL1) 765d6d860c7SAndrew Turner #define ID_AA64AFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64AFR0_EL1) 7664baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_op0 3 7674baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_op1 0 7684baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_CRn 0 7694baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_CRm 5 7704baf5db0SAndrew Turner #define ID_AA64AFR0_EL1_op2 4 7714baf5db0SAndrew Turner 7724baf5db0SAndrew Turner /* ID_AA64AFR1_EL1 */ 7734baf5db0SAndrew Turner #define ID_AA64AFR1_EL1 MRS_REG(ID_AA64AFR1_EL1) 774d6d860c7SAndrew Turner #define ID_AA64AFR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64AFR1_EL1) 7754baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_op0 3 7764baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_op1 0 7774baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_CRn 0 7784baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_CRm 5 7794baf5db0SAndrew Turner #define ID_AA64AFR1_EL1_op2 5 7804baf5db0SAndrew Turner 7815f0a5fefSAndrew Turner /* ID_AA64DFR0_EL1 */ 78210f6680fSAndrew Turner #define ID_AA64DFR0_EL1 MRS_REG(ID_AA64DFR0_EL1) 783d6d860c7SAndrew Turner #define ID_AA64DFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64DFR0_EL1) 7846fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_op0 3 7856fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_op1 0 7866fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_CRn 0 7876fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_CRm 5 7886fd44e5fSAndrew Turner #define ID_AA64DFR0_EL1_op2 0 789f1fbf9c3SAndrew Turner #define ID_AA64DFR0_DebugVer_SHIFT 0 790590c3232SAndrew Turner #define ID_AA64DFR0_DebugVer_WIDTH 4 791f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_MASK (UL(0xf) << ID_AA64DFR0_DebugVer_SHIFT) 79244e446a1SAndrew Turner #define ID_AA64DFR0_DebugVer_VAL(x) ((x) & ID_AA64DFR0_DebugVer_MASK) 793f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8 (UL(0x6) << ID_AA64DFR0_DebugVer_SHIFT) 794f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8_VHE (UL(0x7) << ID_AA64DFR0_DebugVer_SHIFT) 795f31c5955SAndrew Turner #define ID_AA64DFR0_DebugVer_8_2 (UL(0x8) << ID_AA64DFR0_DebugVer_SHIFT) 796a7b05eb1SAndrew Turner #define ID_AA64DFR0_DebugVer_8_4 (UL(0x9) << ID_AA64DFR0_DebugVer_SHIFT) 7976fd44e5fSAndrew Turner #define ID_AA64DFR0_DebugVer_8_8 (UL(0xa) << ID_AA64DFR0_DebugVer_SHIFT) 798*4daaee44SHarry Moulton #define ID_AA64DFR0_DebugVer_8_9 (UL(0xb) << ID_AA64DFR0_DebugVer_SHIFT) 799f1fbf9c3SAndrew Turner #define ID_AA64DFR0_TraceVer_SHIFT 4 800590c3232SAndrew Turner #define ID_AA64DFR0_TraceVer_WIDTH 4 801f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_MASK (UL(0xf) << ID_AA64DFR0_TraceVer_SHIFT) 80244e446a1SAndrew Turner #define ID_AA64DFR0_TraceVer_VAL(x) ((x) & ID_AA64DFR0_TraceVer_MASK) 803f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_NONE (UL(0x0) << ID_AA64DFR0_TraceVer_SHIFT) 804f31c5955SAndrew Turner #define ID_AA64DFR0_TraceVer_IMPL (UL(0x1) << ID_AA64DFR0_TraceVer_SHIFT) 805f1fbf9c3SAndrew Turner #define ID_AA64DFR0_PMUVer_SHIFT 8 806590c3232SAndrew Turner #define ID_AA64DFR0_PMUVer_WIDTH 4 807f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_MASK (UL(0xf) << ID_AA64DFR0_PMUVer_SHIFT) 80844e446a1SAndrew Turner #define ID_AA64DFR0_PMUVer_VAL(x) ((x) & ID_AA64DFR0_PMUVer_MASK) 809f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_NONE (UL(0x0) << ID_AA64DFR0_PMUVer_SHIFT) 810f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_3 (UL(0x1) << ID_AA64DFR0_PMUVer_SHIFT) 811f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_3_1 (UL(0x4) << ID_AA64DFR0_PMUVer_SHIFT) 812a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMUVer_3_4 (UL(0x5) << ID_AA64DFR0_PMUVer_SHIFT) 813a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMUVer_3_5 (UL(0x6) << ID_AA64DFR0_PMUVer_SHIFT) 8146fd44e5fSAndrew Turner #define ID_AA64DFR0_PMUVer_3_7 (UL(0x7) << ID_AA64DFR0_PMUVer_SHIFT) 8156fd44e5fSAndrew Turner #define ID_AA64DFR0_PMUVer_3_8 (UL(0x8) << ID_AA64DFR0_PMUVer_SHIFT) 816*4daaee44SHarry Moulton #define ID_AA64DFR0_PMUVer_3_9 (UL(0x9) << ID_AA64DFR0_PMUVer_SHIFT) 817f31c5955SAndrew Turner #define ID_AA64DFR0_PMUVer_IMPL (UL(0xf) << ID_AA64DFR0_PMUVer_SHIFT) 818f1fbf9c3SAndrew Turner #define ID_AA64DFR0_BRPs_SHIFT 12 819590c3232SAndrew Turner #define ID_AA64DFR0_BRPs_WIDTH 4 820f31c5955SAndrew Turner #define ID_AA64DFR0_BRPs_MASK (UL(0xf) << ID_AA64DFR0_BRPs_SHIFT) 82144e446a1SAndrew Turner #define ID_AA64DFR0_BRPs_VAL(x) \ 822f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_BRPs_SHIFT) & 0xf) + 1) 8236fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_SHIFT 16 824590c3232SAndrew Turner #define ID_AA64DFR0_PMSS_WIDTH 4 8256fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_MASK (UL(0xf) << ID_AA64DFR0_PMSS_SHIFT) 8266fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_VAL(x) ((x) & ID_AA64DFR0_PMSS_MASK) 8276fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_NONE (UL(0x0) << ID_AA64DFR0_PMSS_SHIFT) 8286fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSS_IMPL (UL(0x1) << ID_AA64DFR0_PMSS_SHIFT) 829f1fbf9c3SAndrew Turner #define ID_AA64DFR0_WRPs_SHIFT 20 830590c3232SAndrew Turner #define ID_AA64DFR0_WRPs_WIDTH 4 831f31c5955SAndrew Turner #define ID_AA64DFR0_WRPs_MASK (UL(0xf) << ID_AA64DFR0_WRPs_SHIFT) 83244e446a1SAndrew Turner #define ID_AA64DFR0_WRPs_VAL(x) \ 833f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_WRPs_SHIFT) & 0xf) + 1) 834f1fbf9c3SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_SHIFT 28 835590c3232SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_WIDTH 4 836f31c5955SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_MASK (UL(0xf) << ID_AA64DFR0_CTX_CMPs_SHIFT) 83744e446a1SAndrew Turner #define ID_AA64DFR0_CTX_CMPs_VAL(x) \ 838f1fbf9c3SAndrew Turner ((((x) >> ID_AA64DFR0_CTX_CMPs_SHIFT) & 0xf) + 1) 839f1fbf9c3SAndrew Turner #define ID_AA64DFR0_PMSVer_SHIFT 32 840590c3232SAndrew Turner #define ID_AA64DFR0_PMSVer_WIDTH 4 841f31c5955SAndrew Turner #define ID_AA64DFR0_PMSVer_MASK (UL(0xf) << ID_AA64DFR0_PMSVer_SHIFT) 84244e446a1SAndrew Turner #define ID_AA64DFR0_PMSVer_VAL(x) ((x) & ID_AA64DFR0_PMSVer_MASK) 843f31c5955SAndrew Turner #define ID_AA64DFR0_PMSVer_NONE (UL(0x0) << ID_AA64DFR0_PMSVer_SHIFT) 844a7b05eb1SAndrew Turner #define ID_AA64DFR0_PMSVer_SPE (UL(0x1) << ID_AA64DFR0_PMSVer_SHIFT) 8456fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_1_1 (UL(0x2) << ID_AA64DFR0_PMSVer_SHIFT) 8466fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_1_2 (UL(0x3) << ID_AA64DFR0_PMSVer_SHIFT) 8476fd44e5fSAndrew Turner #define ID_AA64DFR0_PMSVer_SPE_1_3 (UL(0x4) << ID_AA64DFR0_PMSVer_SHIFT) 848*4daaee44SHarry Moulton #define ID_AA64DFR0_PMSVer_SPE_1_4 (UL(0x5) << ID_AA64DFR0_PMSVer_SHIFT) 849a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_SHIFT 36 850590c3232SAndrew Turner #define ID_AA64DFR0_DoubleLock_WIDTH 4 851a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_MASK (UL(0xf) << ID_AA64DFR0_DoubleLock_SHIFT) 852a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_VAL(x) ((x) & ID_AA64DFR0_DoubleLock_MASK) 853a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_IMPL (UL(0x0) << ID_AA64DFR0_DoubleLock_SHIFT) 854a7b05eb1SAndrew Turner #define ID_AA64DFR0_DoubleLock_NONE (UL(0xf) << ID_AA64DFR0_DoubleLock_SHIFT) 855a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_SHIFT 40 856590c3232SAndrew Turner #define ID_AA64DFR0_TraceFilt_WIDTH 4 857a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_MASK (UL(0xf) << ID_AA64DFR0_TraceFilt_SHIFT) 858a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_VAL(x) ((x) & ID_AA64DFR0_TraceFilt_MASK) 859a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_NONE (UL(0x0) << ID_AA64DFR0_TraceFilt_SHIFT) 860a7b05eb1SAndrew Turner #define ID_AA64DFR0_TraceFilt_8_4 (UL(0x1) << ID_AA64DFR0_TraceFilt_SHIFT) 8616fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_SHIFT 44 862590c3232SAndrew Turner #define ID_AA64DFR0_TraceBuffer_WIDTH 4 8636fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_MASK (UL(0xf) << ID_AA64DFR0_TraceBuffer_SHIFT) 8646fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_VAL(x) ((x) & ID_AA64DFR0_TraceBuffer_MASK) 8656fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_NONE (UL(0x0) << ID_AA64DFR0_TraceBuffer_SHIFT) 8666fd44e5fSAndrew Turner #define ID_AA64DFR0_TraceBuffer_IMPL (UL(0x1) << ID_AA64DFR0_TraceBuffer_SHIFT) 8676fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_SHIFT 48 868590c3232SAndrew Turner #define ID_AA64DFR0_MTPMU_WIDTH 4 8696fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_MASK (UL(0xf) << ID_AA64DFR0_MTPMU_SHIFT) 8706fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_VAL(x) ((x) & ID_AA64DFR0_MTPMU_MASK) 8716fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_NONE (UL(0x0) << ID_AA64DFR0_MTPMU_SHIFT) 8726fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_IMPL (UL(0x1) << ID_AA64DFR0_MTPMU_SHIFT) 8736fd44e5fSAndrew Turner #define ID_AA64DFR0_MTPMU_NONE_MT_RES0 (UL(0xf) << ID_AA64DFR0_MTPMU_SHIFT) 8746fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_SHIFT 52 875590c3232SAndrew Turner #define ID_AA64DFR0_BRBE_WIDTH 4 8766fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_MASK (UL(0xf) << ID_AA64DFR0_BRBE_SHIFT) 8776fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_VAL(x) ((x) & ID_AA64DFR0_BRBE_MASK) 8786fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_NONE (UL(0x0) << ID_AA64DFR0_BRBE_SHIFT) 8796fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_IMPL (UL(0x1) << ID_AA64DFR0_BRBE_SHIFT) 8806fd44e5fSAndrew Turner #define ID_AA64DFR0_BRBE_EL3 (UL(0x2) << ID_AA64DFR0_BRBE_SHIFT) 8816fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_SHIFT 60 882590c3232SAndrew Turner #define ID_AA64DFR0_HPMN0_WIDTH 4 8836fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_MASK (UL(0xf) << ID_AA64DFR0_HPMN0_SHIFT) 8846fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_VAL(x) ((x) & ID_AA64DFR0_HPMN0_MASK) 8856fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_CONSTR (UL(0x0) << ID_AA64DFR0_HPMN0_SHIFT) 8866fd44e5fSAndrew Turner #define ID_AA64DFR0_HPMN0_DEFINED (UL(0x1) << ID_AA64DFR0_HPMN0_SHIFT) 8875f0a5fefSAndrew Turner 888419f8fc7SAndrew Turner /* ID_AA64DFR1_EL1 */ 889dd235575SAndrew Turner #define ID_AA64DFR1_EL1 MRS_REG(ID_AA64DFR1_EL1) 890d6d860c7SAndrew Turner #define ID_AA64DFR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64DFR1_EL1) 891419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_op0 3 892419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_op1 0 893419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_CRn 0 894419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_CRm 5 895419f8fc7SAndrew Turner #define ID_AA64DFR1_EL1_op2 1 896*4daaee44SHarry Moulton #define ID_AA64DFR1_SPMU_SHIFT 32 897*4daaee44SHarry Moulton #define ID_AA64DFR1_SPMU_WIDTH 4 898*4daaee44SHarry Moulton #define ID_AA64DFR1_SPMU_MASK (UL(0xf) << ID_AA64DFR1_SPMU_SHIFT) 899*4daaee44SHarry Moulton #define ID_AA64DFR1_SPMU_VAL(x) ((x) & ID_AA64DFR1_SPMU_MASK) 900*4daaee44SHarry Moulton #define ID_AA64DFR1_SPMU_NONE (UL(0x0) << ID_AA64DFR1_SPMU_SHIFT) 901*4daaee44SHarry Moulton #define ID_AA64DFR1_SPMU_IMPL (UL(0x1) << ID_AA64DFR1_SPMU_SHIFT) 902*4daaee44SHarry Moulton #define ID_AA64DFR1_PMICNTR_SHIFT 36 903*4daaee44SHarry Moulton #define ID_AA64DFR1_PMICNTR_WIDTH 4 904*4daaee44SHarry Moulton #define ID_AA64DFR1_PMICNTR_MASK (UL(0xf) << ID_AA64DFR1_PMICNTR_SHIFT) 905*4daaee44SHarry Moulton #define ID_AA64DFR1_PMICNTR_VAL(x) ((x) & ID_AA64DFR1_PMICNTR_MASK) 906*4daaee44SHarry Moulton #define ID_AA64DFR1_PMICNTR_NONE (UL(0x0) << ID_AA64DFR1_PMICNTR_SHIFT) 907*4daaee44SHarry Moulton #define ID_AA64DFR1_PMICNTR_IMPL (UL(0x1) << ID_AA64DFR1_PMICNTR_SHIFT) 908*4daaee44SHarry Moulton #define ID_AA64DFR1_DPFZS_SHIFT 52 909*4daaee44SHarry Moulton #define ID_AA64DFR1_DPFZS_WIDTH 4 910*4daaee44SHarry Moulton #define ID_AA64DFR1_DPFZS_MASK (UL(0xf) << ID_AA64DFR1_DPFZS_SHIFT) 911*4daaee44SHarry Moulton #define ID_AA64DFR1_DPFZS_VAL(x) ((x) & ID_AA64DFR1_DPFZS_MASK) 912*4daaee44SHarry Moulton #define ID_AA64DFR1_DPFZS_NONE (UL(0x0) << ID_AA64DFR1_DPFZS_SHIFT) 913*4daaee44SHarry Moulton #define ID_AA64DFR1_DPFZS_IMPL (UL(0x1) << ID_AA64DFR1_DPFZS_SHIFT) 914419f8fc7SAndrew Turner 9155f0a5fefSAndrew Turner /* ID_AA64ISAR0_EL1 */ 91610f6680fSAndrew Turner #define ID_AA64ISAR0_EL1 MRS_REG(ID_AA64ISAR0_EL1) 917d6d860c7SAndrew Turner #define ID_AA64ISAR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64ISAR0_EL1) 9184182f581SAndrew Turner #define ID_AA64ISAR0_EL1_op0 3 9194182f581SAndrew Turner #define ID_AA64ISAR0_EL1_op1 0 9204182f581SAndrew Turner #define ID_AA64ISAR0_EL1_CRn 0 9214182f581SAndrew Turner #define ID_AA64ISAR0_EL1_CRm 6 9224182f581SAndrew Turner #define ID_AA64ISAR0_EL1_op2 0 9235f0a5fefSAndrew Turner #define ID_AA64ISAR0_AES_SHIFT 4 924590c3232SAndrew Turner #define ID_AA64ISAR0_AES_WIDTH 4 925f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_MASK (UL(0xf) << ID_AA64ISAR0_AES_SHIFT) 92644e446a1SAndrew Turner #define ID_AA64ISAR0_AES_VAL(x) ((x) & ID_AA64ISAR0_AES_MASK) 927f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_NONE (UL(0x0) << ID_AA64ISAR0_AES_SHIFT) 928f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_BASE (UL(0x1) << ID_AA64ISAR0_AES_SHIFT) 929f31c5955SAndrew Turner #define ID_AA64ISAR0_AES_PMULL (UL(0x2) << ID_AA64ISAR0_AES_SHIFT) 9305f0a5fefSAndrew Turner #define ID_AA64ISAR0_SHA1_SHIFT 8 931590c3232SAndrew Turner #define ID_AA64ISAR0_SHA1_WIDTH 4 932f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_MASK (UL(0xf) << ID_AA64ISAR0_SHA1_SHIFT) 93344e446a1SAndrew Turner #define ID_AA64ISAR0_SHA1_VAL(x) ((x) & ID_AA64ISAR0_SHA1_MASK) 934f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_NONE (UL(0x0) << ID_AA64ISAR0_SHA1_SHIFT) 935f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA1_BASE (UL(0x1) << ID_AA64ISAR0_SHA1_SHIFT) 9365f0a5fefSAndrew Turner #define ID_AA64ISAR0_SHA2_SHIFT 12 937590c3232SAndrew Turner #define ID_AA64ISAR0_SHA2_WIDTH 4 938f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_MASK (UL(0xf) << ID_AA64ISAR0_SHA2_SHIFT) 93944e446a1SAndrew Turner #define ID_AA64ISAR0_SHA2_VAL(x) ((x) & ID_AA64ISAR0_SHA2_MASK) 940f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_NONE (UL(0x0) << ID_AA64ISAR0_SHA2_SHIFT) 941f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_BASE (UL(0x1) << ID_AA64ISAR0_SHA2_SHIFT) 942f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA2_512 (UL(0x2) << ID_AA64ISAR0_SHA2_SHIFT) 9435f0a5fefSAndrew Turner #define ID_AA64ISAR0_CRC32_SHIFT 16 944590c3232SAndrew Turner #define ID_AA64ISAR0_CRC32_WIDTH 4 945f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_MASK (UL(0xf) << ID_AA64ISAR0_CRC32_SHIFT) 94644e446a1SAndrew Turner #define ID_AA64ISAR0_CRC32_VAL(x) ((x) & ID_AA64ISAR0_CRC32_MASK) 947f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_NONE (UL(0x0) << ID_AA64ISAR0_CRC32_SHIFT) 948f31c5955SAndrew Turner #define ID_AA64ISAR0_CRC32_BASE (UL(0x1) << ID_AA64ISAR0_CRC32_SHIFT) 949f1fbf9c3SAndrew Turner #define ID_AA64ISAR0_Atomic_SHIFT 20 950590c3232SAndrew Turner #define ID_AA64ISAR0_Atomic_WIDTH 4 951f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_MASK (UL(0xf) << ID_AA64ISAR0_Atomic_SHIFT) 95244e446a1SAndrew Turner #define ID_AA64ISAR0_Atomic_VAL(x) ((x) & ID_AA64ISAR0_Atomic_MASK) 953f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_NONE (UL(0x0) << ID_AA64ISAR0_Atomic_SHIFT) 954f31c5955SAndrew Turner #define ID_AA64ISAR0_Atomic_IMPL (UL(0x2) << ID_AA64ISAR0_Atomic_SHIFT) 9554182f581SAndrew Turner #define ID_AA64ISAR0_TME_SHIFT 24 956590c3232SAndrew Turner #define ID_AA64ISAR0_TME_WIDTH 4 9574182f581SAndrew Turner #define ID_AA64ISAR0_TME_MASK (UL(0xf) << ID_AA64ISAR0_TME_SHIFT) 9584182f581SAndrew Turner #define ID_AA64ISAR0_TME_NONE (UL(0x0) << ID_AA64ISAR0_TME_SHIFT) 9594182f581SAndrew Turner #define ID_AA64ISAR0_TME_IMPL (UL(0x1) << ID_AA64ISAR0_TME_SHIFT) 9602bafd72fSAndrew Turner #define ID_AA64ISAR0_RDM_SHIFT 28 961590c3232SAndrew Turner #define ID_AA64ISAR0_RDM_WIDTH 4 962f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_MASK (UL(0xf) << ID_AA64ISAR0_RDM_SHIFT) 96344e446a1SAndrew Turner #define ID_AA64ISAR0_RDM_VAL(x) ((x) & ID_AA64ISAR0_RDM_MASK) 964f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_NONE (UL(0x0) << ID_AA64ISAR0_RDM_SHIFT) 965f31c5955SAndrew Turner #define ID_AA64ISAR0_RDM_IMPL (UL(0x1) << ID_AA64ISAR0_RDM_SHIFT) 966ca289945SAndrew Turner #define ID_AA64ISAR0_SHA3_SHIFT 32 967590c3232SAndrew Turner #define ID_AA64ISAR0_SHA3_WIDTH 4 968f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_MASK (UL(0xf) << ID_AA64ISAR0_SHA3_SHIFT) 96944e446a1SAndrew Turner #define ID_AA64ISAR0_SHA3_VAL(x) ((x) & ID_AA64ISAR0_SHA3_MASK) 970f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_NONE (UL(0x0) << ID_AA64ISAR0_SHA3_SHIFT) 971f31c5955SAndrew Turner #define ID_AA64ISAR0_SHA3_IMPL (UL(0x1) << ID_AA64ISAR0_SHA3_SHIFT) 972ca289945SAndrew Turner #define ID_AA64ISAR0_SM3_SHIFT 36 973590c3232SAndrew Turner #define ID_AA64ISAR0_SM3_WIDTH 4 974f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_MASK (UL(0xf) << ID_AA64ISAR0_SM3_SHIFT) 97544e446a1SAndrew Turner #define ID_AA64ISAR0_SM3_VAL(x) ((x) & ID_AA64ISAR0_SM3_MASK) 976f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_NONE (UL(0x0) << ID_AA64ISAR0_SM3_SHIFT) 977f31c5955SAndrew Turner #define ID_AA64ISAR0_SM3_IMPL (UL(0x1) << ID_AA64ISAR0_SM3_SHIFT) 978ca289945SAndrew Turner #define ID_AA64ISAR0_SM4_SHIFT 40 979590c3232SAndrew Turner #define ID_AA64ISAR0_SM4_WIDTH 4 980f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_MASK (UL(0xf) << ID_AA64ISAR0_SM4_SHIFT) 98144e446a1SAndrew Turner #define ID_AA64ISAR0_SM4_VAL(x) ((x) & ID_AA64ISAR0_SM4_MASK) 982f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_NONE (UL(0x0) << ID_AA64ISAR0_SM4_SHIFT) 983f31c5955SAndrew Turner #define ID_AA64ISAR0_SM4_IMPL (UL(0x1) << ID_AA64ISAR0_SM4_SHIFT) 9845bb9cd61SAndrew Turner #define ID_AA64ISAR0_DP_SHIFT 44 985590c3232SAndrew Turner #define ID_AA64ISAR0_DP_WIDTH 4 986f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_MASK (UL(0xf) << ID_AA64ISAR0_DP_SHIFT) 98744e446a1SAndrew Turner #define ID_AA64ISAR0_DP_VAL(x) ((x) & ID_AA64ISAR0_DP_MASK) 988f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_NONE (UL(0x0) << ID_AA64ISAR0_DP_SHIFT) 989f31c5955SAndrew Turner #define ID_AA64ISAR0_DP_IMPL (UL(0x1) << ID_AA64ISAR0_DP_SHIFT) 99061949736SMitchell Horne #define ID_AA64ISAR0_FHM_SHIFT 48 991590c3232SAndrew Turner #define ID_AA64ISAR0_FHM_WIDTH 4 99261949736SMitchell Horne #define ID_AA64ISAR0_FHM_MASK (UL(0xf) << ID_AA64ISAR0_FHM_SHIFT) 99361949736SMitchell Horne #define ID_AA64ISAR0_FHM_VAL(x) ((x) & ID_AA64ISAR0_FHM_MASK) 99461949736SMitchell Horne #define ID_AA64ISAR0_FHM_NONE (UL(0x0) << ID_AA64ISAR0_FHM_SHIFT) 99561949736SMitchell Horne #define ID_AA64ISAR0_FHM_IMPL (UL(0x1) << ID_AA64ISAR0_FHM_SHIFT) 99661949736SMitchell Horne #define ID_AA64ISAR0_TS_SHIFT 52 997590c3232SAndrew Turner #define ID_AA64ISAR0_TS_WIDTH 4 99861949736SMitchell Horne #define ID_AA64ISAR0_TS_MASK (UL(0xf) << ID_AA64ISAR0_TS_SHIFT) 99961949736SMitchell Horne #define ID_AA64ISAR0_TS_VAL(x) ((x) & ID_AA64ISAR0_TS_MASK) 100061949736SMitchell Horne #define ID_AA64ISAR0_TS_NONE (UL(0x0) << ID_AA64ISAR0_TS_SHIFT) 100161949736SMitchell Horne #define ID_AA64ISAR0_TS_CondM_8_4 (UL(0x1) << ID_AA64ISAR0_TS_SHIFT) 100261949736SMitchell Horne #define ID_AA64ISAR0_TS_CondM_8_5 (UL(0x2) << ID_AA64ISAR0_TS_SHIFT) 100361949736SMitchell Horne #define ID_AA64ISAR0_TLB_SHIFT 56 1004590c3232SAndrew Turner #define ID_AA64ISAR0_TLB_WIDTH 4 100561949736SMitchell Horne #define ID_AA64ISAR0_TLB_MASK (UL(0xf) << ID_AA64ISAR0_TLB_SHIFT) 100661949736SMitchell Horne #define ID_AA64ISAR0_TLB_VAL(x) ((x) & ID_AA64ISAR0_TLB_MASK) 100761949736SMitchell Horne #define ID_AA64ISAR0_TLB_NONE (UL(0x0) << ID_AA64ISAR0_TLB_SHIFT) 100861949736SMitchell Horne #define ID_AA64ISAR0_TLB_TLBIOS (UL(0x1) << ID_AA64ISAR0_TLB_SHIFT) 100961949736SMitchell Horne #define ID_AA64ISAR0_TLB_TLBIOSR (UL(0x2) << ID_AA64ISAR0_TLB_SHIFT) 101061949736SMitchell Horne #define ID_AA64ISAR0_RNDR_SHIFT 60 1011590c3232SAndrew Turner #define ID_AA64ISAR0_RNDR_WIDTH 4 101261949736SMitchell Horne #define ID_AA64ISAR0_RNDR_MASK (UL(0xf) << ID_AA64ISAR0_RNDR_SHIFT) 101361949736SMitchell Horne #define ID_AA64ISAR0_RNDR_VAL(x) ((x) & ID_AA64ISAR0_RNDR_MASK) 101461949736SMitchell Horne #define ID_AA64ISAR0_RNDR_NONE (UL(0x0) << ID_AA64ISAR0_RNDR_SHIFT) 101561949736SMitchell Horne #define ID_AA64ISAR0_RNDR_IMPL (UL(0x1) << ID_AA64ISAR0_RNDR_SHIFT) 10165f0a5fefSAndrew Turner 1017f45dc694SAndrew Turner /* ID_AA64ISAR1_EL1 */ 101810f6680fSAndrew Turner #define ID_AA64ISAR1_EL1 MRS_REG(ID_AA64ISAR1_EL1) 1019d6d860c7SAndrew Turner #define ID_AA64ISAR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64ISAR1_EL1) 1020de013099SAndrew Turner #define ID_AA64ISAR1_EL1_op0 3 1021de013099SAndrew Turner #define ID_AA64ISAR1_EL1_op1 0 1022de013099SAndrew Turner #define ID_AA64ISAR1_EL1_CRn 0 1023de013099SAndrew Turner #define ID_AA64ISAR1_EL1_CRm 6 1024de013099SAndrew Turner #define ID_AA64ISAR1_EL1_op2 1 10251a2e5c00SAndrew Turner #define ID_AA64ISAR1_DPB_SHIFT 0 1026590c3232SAndrew Turner #define ID_AA64ISAR1_DPB_WIDTH 4 1027f31c5955SAndrew Turner #define ID_AA64ISAR1_DPB_MASK (UL(0xf) << ID_AA64ISAR1_DPB_SHIFT) 102844e446a1SAndrew Turner #define ID_AA64ISAR1_DPB_VAL(x) ((x) & ID_AA64ISAR1_DPB_MASK) 1029f31c5955SAndrew Turner #define ID_AA64ISAR1_DPB_NONE (UL(0x0) << ID_AA64ISAR1_DPB_SHIFT) 103061949736SMitchell Horne #define ID_AA64ISAR1_DPB_DCCVAP (UL(0x1) << ID_AA64ISAR1_DPB_SHIFT) 103161949736SMitchell Horne #define ID_AA64ISAR1_DPB_DCCVADP (UL(0x2) << ID_AA64ISAR1_DPB_SHIFT) 1032ca289945SAndrew Turner #define ID_AA64ISAR1_APA_SHIFT 4 1033590c3232SAndrew Turner #define ID_AA64ISAR1_APA_WIDTH 4 1034f31c5955SAndrew Turner #define ID_AA64ISAR1_APA_MASK (UL(0xf) << ID_AA64ISAR1_APA_SHIFT) 103544e446a1SAndrew Turner #define ID_AA64ISAR1_APA_VAL(x) ((x) & ID_AA64ISAR1_APA_MASK) 1036f31c5955SAndrew Turner #define ID_AA64ISAR1_APA_NONE (UL(0x0) << ID_AA64ISAR1_APA_SHIFT) 1037a7b05eb1SAndrew Turner #define ID_AA64ISAR1_APA_PAC (UL(0x1) << ID_AA64ISAR1_APA_SHIFT) 1038a7b05eb1SAndrew Turner #define ID_AA64ISAR1_APA_EPAC (UL(0x2) << ID_AA64ISAR1_APA_SHIFT) 1039e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_EPAC2 (UL(0x3) << ID_AA64ISAR1_APA_SHIFT) 1040e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_FPAC (UL(0x4) << ID_AA64ISAR1_APA_SHIFT) 1041e3f70874SAndrew Turner #define ID_AA64ISAR1_APA_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR1_APA_SHIFT) 1042ca289945SAndrew Turner #define ID_AA64ISAR1_API_SHIFT 8 1043590c3232SAndrew Turner #define ID_AA64ISAR1_API_WIDTH 4 1044f31c5955SAndrew Turner #define ID_AA64ISAR1_API_MASK (UL(0xf) << ID_AA64ISAR1_API_SHIFT) 104544e446a1SAndrew Turner #define ID_AA64ISAR1_API_VAL(x) ((x) & ID_AA64ISAR1_API_MASK) 1046f31c5955SAndrew Turner #define ID_AA64ISAR1_API_NONE (UL(0x0) << ID_AA64ISAR1_API_SHIFT) 1047a7b05eb1SAndrew Turner #define ID_AA64ISAR1_API_PAC (UL(0x1) << ID_AA64ISAR1_API_SHIFT) 1048a7b05eb1SAndrew Turner #define ID_AA64ISAR1_API_EPAC (UL(0x2) << ID_AA64ISAR1_API_SHIFT) 1049e3f70874SAndrew Turner #define ID_AA64ISAR1_API_EPAC2 (UL(0x3) << ID_AA64ISAR1_API_SHIFT) 1050e3f70874SAndrew Turner #define ID_AA64ISAR1_API_FPAC (UL(0x4) << ID_AA64ISAR1_API_SHIFT) 1051e3f70874SAndrew Turner #define ID_AA64ISAR1_API_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR1_API_SHIFT) 1052ca289945SAndrew Turner #define ID_AA64ISAR1_JSCVT_SHIFT 12 1053590c3232SAndrew Turner #define ID_AA64ISAR1_JSCVT_WIDTH 4 1054f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_MASK (UL(0xf) << ID_AA64ISAR1_JSCVT_SHIFT) 105544e446a1SAndrew Turner #define ID_AA64ISAR1_JSCVT_VAL(x) ((x) & ID_AA64ISAR1_JSCVT_MASK) 1056f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_NONE (UL(0x0) << ID_AA64ISAR1_JSCVT_SHIFT) 1057f31c5955SAndrew Turner #define ID_AA64ISAR1_JSCVT_IMPL (UL(0x1) << ID_AA64ISAR1_JSCVT_SHIFT) 1058ca289945SAndrew Turner #define ID_AA64ISAR1_FCMA_SHIFT 16 1059590c3232SAndrew Turner #define ID_AA64ISAR1_FCMA_WIDTH 4 1060f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_MASK (UL(0xf) << ID_AA64ISAR1_FCMA_SHIFT) 106144e446a1SAndrew Turner #define ID_AA64ISAR1_FCMA_VAL(x) ((x) & ID_AA64ISAR1_FCMA_MASK) 1062f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_NONE (UL(0x0) << ID_AA64ISAR1_FCMA_SHIFT) 1063f31c5955SAndrew Turner #define ID_AA64ISAR1_FCMA_IMPL (UL(0x1) << ID_AA64ISAR1_FCMA_SHIFT) 1064ca289945SAndrew Turner #define ID_AA64ISAR1_LRCPC_SHIFT 20 1065590c3232SAndrew Turner #define ID_AA64ISAR1_LRCPC_WIDTH 4 1066f31c5955SAndrew Turner #define ID_AA64ISAR1_LRCPC_MASK (UL(0xf) << ID_AA64ISAR1_LRCPC_SHIFT) 106744e446a1SAndrew Turner #define ID_AA64ISAR1_LRCPC_VAL(x) ((x) & ID_AA64ISAR1_LRCPC_MASK) 1068f31c5955SAndrew Turner #define ID_AA64ISAR1_LRCPC_NONE (UL(0x0) << ID_AA64ISAR1_LRCPC_SHIFT) 106961949736SMitchell Horne #define ID_AA64ISAR1_LRCPC_RCPC_8_3 (UL(0x1) << ID_AA64ISAR1_LRCPC_SHIFT) 107061949736SMitchell Horne #define ID_AA64ISAR1_LRCPC_RCPC_8_4 (UL(0x2) << ID_AA64ISAR1_LRCPC_SHIFT) 1071ca289945SAndrew Turner #define ID_AA64ISAR1_GPA_SHIFT 24 1072590c3232SAndrew Turner #define ID_AA64ISAR1_GPA_WIDTH 4 1073f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_MASK (UL(0xf) << ID_AA64ISAR1_GPA_SHIFT) 107444e446a1SAndrew Turner #define ID_AA64ISAR1_GPA_VAL(x) ((x) & ID_AA64ISAR1_GPA_MASK) 1075f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_NONE (UL(0x0) << ID_AA64ISAR1_GPA_SHIFT) 1076f31c5955SAndrew Turner #define ID_AA64ISAR1_GPA_IMPL (UL(0x1) << ID_AA64ISAR1_GPA_SHIFT) 1077ca289945SAndrew Turner #define ID_AA64ISAR1_GPI_SHIFT 28 1078590c3232SAndrew Turner #define ID_AA64ISAR1_GPI_WIDTH 4 1079f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_MASK (UL(0xf) << ID_AA64ISAR1_GPI_SHIFT) 108044e446a1SAndrew Turner #define ID_AA64ISAR1_GPI_VAL(x) ((x) & ID_AA64ISAR1_GPI_MASK) 1081f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_NONE (UL(0x0) << ID_AA64ISAR1_GPI_SHIFT) 1082f31c5955SAndrew Turner #define ID_AA64ISAR1_GPI_IMPL (UL(0x1) << ID_AA64ISAR1_GPI_SHIFT) 108361949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_SHIFT 32 1084590c3232SAndrew Turner #define ID_AA64ISAR1_FRINTTS_WIDTH 4 108561949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_MASK (UL(0xf) << ID_AA64ISAR1_FRINTTS_SHIFT) 108661949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_VAL(x) ((x) & ID_AA64ISAR1_FRINTTS_MASK) 108761949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_NONE (UL(0x0) << ID_AA64ISAR1_FRINTTS_SHIFT) 108861949736SMitchell Horne #define ID_AA64ISAR1_FRINTTS_IMPL (UL(0x1) << ID_AA64ISAR1_FRINTTS_SHIFT) 108961949736SMitchell Horne #define ID_AA64ISAR1_SB_SHIFT 36 1090590c3232SAndrew Turner #define ID_AA64ISAR1_SB_WIDTH 4 109161949736SMitchell Horne #define ID_AA64ISAR1_SB_MASK (UL(0xf) << ID_AA64ISAR1_SB_SHIFT) 109261949736SMitchell Horne #define ID_AA64ISAR1_SB_VAL(x) ((x) & ID_AA64ISAR1_SB_MASK) 109361949736SMitchell Horne #define ID_AA64ISAR1_SB_NONE (UL(0x0) << ID_AA64ISAR1_SB_SHIFT) 109461949736SMitchell Horne #define ID_AA64ISAR1_SB_IMPL (UL(0x1) << ID_AA64ISAR1_SB_SHIFT) 109561949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_SHIFT 40 1096590c3232SAndrew Turner #define ID_AA64ISAR1_SPECRES_WIDTH 4 109761949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_MASK (UL(0xf) << ID_AA64ISAR1_SPECRES_SHIFT) 109861949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_VAL(x) ((x) & ID_AA64ISAR1_SPECRES_MASK) 109961949736SMitchell Horne #define ID_AA64ISAR1_SPECRES_NONE (UL(0x0) << ID_AA64ISAR1_SPECRES_SHIFT) 1100*4daaee44SHarry Moulton #define ID_AA64ISAR1_SPECRES_8_5 (UL(0x1) << ID_AA64ISAR1_SPECRES_SHIFT) 1101*4daaee44SHarry Moulton #define ID_AA64ISAR1_SPECRES_8_9 (UL(0x2) << ID_AA64ISAR1_SPECRES_SHIFT) 110261949736SMitchell Horne #define ID_AA64ISAR1_BF16_SHIFT 44 1103590c3232SAndrew Turner #define ID_AA64ISAR1_BF16_WIDTH 4 110461949736SMitchell Horne #define ID_AA64ISAR1_BF16_MASK (UL(0xf) << ID_AA64ISAR1_BF16_SHIFT) 110561949736SMitchell Horne #define ID_AA64ISAR1_BF16_VAL(x) ((x) & ID_AA64ISAR1_BF16_MASK) 110661949736SMitchell Horne #define ID_AA64ISAR1_BF16_NONE (UL(0x0) << ID_AA64ISAR1_BF16_SHIFT) 110761949736SMitchell Horne #define ID_AA64ISAR1_BF16_IMPL (UL(0x1) << ID_AA64ISAR1_BF16_SHIFT) 1108de013099SAndrew Turner #define ID_AA64ISAR1_BF16_EBF (UL(0x2) << ID_AA64ISAR1_BF16_SHIFT) 110961949736SMitchell Horne #define ID_AA64ISAR1_DGH_SHIFT 48 1110590c3232SAndrew Turner #define ID_AA64ISAR1_DGH_WIDTH 4 111161949736SMitchell Horne #define ID_AA64ISAR1_DGH_MASK (UL(0xf) << ID_AA64ISAR1_DGH_SHIFT) 111261949736SMitchell Horne #define ID_AA64ISAR1_DGH_VAL(x) ((x) & ID_AA64ISAR1_DGH_MASK) 111361949736SMitchell Horne #define ID_AA64ISAR1_DGH_NONE (UL(0x0) << ID_AA64ISAR1_DGH_SHIFT) 111461949736SMitchell Horne #define ID_AA64ISAR1_DGH_IMPL (UL(0x1) << ID_AA64ISAR1_DGH_SHIFT) 111561949736SMitchell Horne #define ID_AA64ISAR1_I8MM_SHIFT 52 1116590c3232SAndrew Turner #define ID_AA64ISAR1_I8MM_WIDTH 4 111761949736SMitchell Horne #define ID_AA64ISAR1_I8MM_MASK (UL(0xf) << ID_AA64ISAR1_I8MM_SHIFT) 111861949736SMitchell Horne #define ID_AA64ISAR1_I8MM_VAL(x) ((x) & ID_AA64ISAR1_I8MM_MASK) 111961949736SMitchell Horne #define ID_AA64ISAR1_I8MM_NONE (UL(0x0) << ID_AA64ISAR1_I8MM_SHIFT) 112061949736SMitchell Horne #define ID_AA64ISAR1_I8MM_IMPL (UL(0x1) << ID_AA64ISAR1_I8MM_SHIFT) 1121de013099SAndrew Turner #define ID_AA64ISAR1_XS_SHIFT 56 1122590c3232SAndrew Turner #define ID_AA64ISAR1_XS_WIDTH 4 1123de013099SAndrew Turner #define ID_AA64ISAR1_XS_MASK (UL(0xf) << ID_AA64ISAR1_XS_SHIFT) 1124de013099SAndrew Turner #define ID_AA64ISAR1_XS_VAL(x) ((x) & ID_AA64ISAR1_XS_MASK) 1125de013099SAndrew Turner #define ID_AA64ISAR1_XS_NONE (UL(0x0) << ID_AA64ISAR1_XS_SHIFT) 1126de013099SAndrew Turner #define ID_AA64ISAR1_XS_IMPL (UL(0x1) << ID_AA64ISAR1_XS_SHIFT) 1127de013099SAndrew Turner #define ID_AA64ISAR1_LS64_SHIFT 60 1128590c3232SAndrew Turner #define ID_AA64ISAR1_LS64_WIDTH 4 1129de013099SAndrew Turner #define ID_AA64ISAR1_LS64_MASK (UL(0xf) << ID_AA64ISAR1_LS64_SHIFT) 1130de013099SAndrew Turner #define ID_AA64ISAR1_LS64_VAL(x) ((x) & ID_AA64ISAR1_LS64_MASK) 1131de013099SAndrew Turner #define ID_AA64ISAR1_LS64_NONE (UL(0x0) << ID_AA64ISAR1_LS64_SHIFT) 1132de013099SAndrew Turner #define ID_AA64ISAR1_LS64_IMPL (UL(0x1) << ID_AA64ISAR1_LS64_SHIFT) 1133de013099SAndrew Turner #define ID_AA64ISAR1_LS64_V (UL(0x2) << ID_AA64ISAR1_LS64_SHIFT) 1134de013099SAndrew Turner #define ID_AA64ISAR1_LS64_ACCDATA (UL(0x3) << ID_AA64ISAR1_LS64_SHIFT) 1135f45dc694SAndrew Turner 1136a8fac0ceSAndrew Turner /* ID_AA64ISAR2_EL1 */ 1137a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1 MRS_REG(ID_AA64ISAR2_EL1) 1138d6d860c7SAndrew Turner #define ID_AA64ISAR2_EL1_REG MRS_REG_ALT_NAME(ID_AA64ISAR2_EL1) 1139a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op0 3 1140a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op1 0 1141a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_CRn 0 1142a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_CRm 6 1143a8fac0ceSAndrew Turner #define ID_AA64ISAR2_EL1_op2 2 1144a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_SHIFT 0 1145590c3232SAndrew Turner #define ID_AA64ISAR2_WFxT_WIDTH 4 1146a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_MASK (UL(0xf) << ID_AA64ISAR2_WFxT_SHIFT) 1147a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_VAL(x) ((x) & ID_AA64ISAR2_WFxT_MASK) 1148a8fac0ceSAndrew Turner #define ID_AA64ISAR2_WFxT_NONE (UL(0x0) << ID_AA64ISAR2_WFxT_SHIFT) 11494e3831c6SHarry Moulton #define ID_AA64ISAR2_WFxT_IMPL (UL(0x2) << ID_AA64ISAR2_WFxT_SHIFT) 1150a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_SHIFT 4 1151590c3232SAndrew Turner #define ID_AA64ISAR2_RPRES_WIDTH 4 1152a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_MASK (UL(0xf) << ID_AA64ISAR2_RPRES_SHIFT) 1153a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_VAL(x) ((x) & ID_AA64ISAR2_RPRES_MASK) 1154a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_NONE (UL(0x0) << ID_AA64ISAR2_RPRES_SHIFT) 1155a8fac0ceSAndrew Turner #define ID_AA64ISAR2_RPRES_IMPL (UL(0x1) << ID_AA64ISAR2_RPRES_SHIFT) 1156a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_SHIFT 8 1157590c3232SAndrew Turner #define ID_AA64ISAR2_GPA3_WIDTH 4 1158a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_MASK (UL(0xf) << ID_AA64ISAR2_GPA3_SHIFT) 1159a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_VAL(x) ((x) & ID_AA64ISAR2_GPA3_MASK) 1160a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_NONE (UL(0x0) << ID_AA64ISAR2_GPA3_SHIFT) 1161a8fac0ceSAndrew Turner #define ID_AA64ISAR2_GPA3_IMPL (UL(0x1) << ID_AA64ISAR2_GPA3_SHIFT) 1162a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_SHIFT 12 1163590c3232SAndrew Turner #define ID_AA64ISAR2_APA3_WIDTH 4 1164a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_MASK (UL(0xf) << ID_AA64ISAR2_APA3_SHIFT) 1165a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_VAL(x) ((x) & ID_AA64ISAR2_APA3_MASK) 1166a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_NONE (UL(0x0) << ID_AA64ISAR2_APA3_SHIFT) 1167a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_PAC (UL(0x1) << ID_AA64ISAR2_APA3_SHIFT) 1168a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_EPAC (UL(0x2) << ID_AA64ISAR2_APA3_SHIFT) 1169a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_EPAC2 (UL(0x3) << ID_AA64ISAR2_APA3_SHIFT) 1170a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_FPAC (UL(0x4) << ID_AA64ISAR2_APA3_SHIFT) 1171a8fac0ceSAndrew Turner #define ID_AA64ISAR2_APA3_FPAC_COMBINED (UL(0x5) << ID_AA64ISAR2_APA3_SHIFT) 1172a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_SHIFT 16 1173590c3232SAndrew Turner #define ID_AA64ISAR2_MOPS_WIDTH 4 1174a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_MASK (UL(0xf) << ID_AA64ISAR2_MOPS_SHIFT) 1175a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_VAL(x) ((x) & ID_AA64ISAR2_MOPS_MASK) 1176a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_NONE (UL(0x0) << ID_AA64ISAR2_MOPS_SHIFT) 1177a8fac0ceSAndrew Turner #define ID_AA64ISAR2_MOPS_IMPL (UL(0x1) << ID_AA64ISAR2_MOPS_SHIFT) 1178a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_SHIFT 20 1179590c3232SAndrew Turner #define ID_AA64ISAR2_BC_WIDTH 4 1180a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_MASK (UL(0xf) << ID_AA64ISAR2_BC_SHIFT) 1181a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_VAL(x) ((x) & ID_AA64ISAR2_BC_MASK) 1182a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_NONE (UL(0x0) << ID_AA64ISAR2_BC_SHIFT) 1183a8fac0ceSAndrew Turner #define ID_AA64ISAR2_BC_IMPL (UL(0x1) << ID_AA64ISAR2_BC_SHIFT) 1184*4daaee44SHarry Moulton #define ID_AA64ISAR2_PAC_frac_SHIFT 24 1185590c3232SAndrew Turner #define ID_AA64ISAR2_PAC_frac_WIDTH 4 1186a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_MASK (UL(0xf) << ID_AA64ISAR2_PAC_frac_SHIFT) 1187a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_VAL(x) ((x) & ID_AA64ISAR2_PAC_frac_MASK) 1188a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_NONE (UL(0x0) << ID_AA64ISAR2_PAC_frac_SHIFT) 1189a8fac0ceSAndrew Turner #define ID_AA64ISAR2_PAC_frac_IMPL (UL(0x1) << ID_AA64ISAR2_PAC_frac_SHIFT) 1190*4daaee44SHarry Moulton #define ID_AA64ISAR2_CLRBHB_SHIFT 28 1191*4daaee44SHarry Moulton #define ID_AA64ISAR2_CLRBHB_WIDTH 4 1192*4daaee44SHarry Moulton #define ID_AA64ISAR2_CLRBHB_MASK (UL(0xf) << ID_AA64ISAR2_CLRBHB_SHIFT) 1193*4daaee44SHarry Moulton #define ID_AA64ISAR2_CLRBHB_VAL(x) ((x) & ID_AA64ISAR2_CLRBHB_MASK) 1194*4daaee44SHarry Moulton #define ID_AA64ISAR2_CLRBHB_NONE (UL(0x0) << ID_AA64ISAR2_CLRBHB_SHIFT) 1195*4daaee44SHarry Moulton #define ID_AA64ISAR2_CLRBHB_IMPL (UL(0x1) << ID_AA64ISAR2_CLRBHB_SHIFT) 1196*4daaee44SHarry Moulton #define ID_AA64ISAR2_PRFMSLC_SHIFT 40 1197*4daaee44SHarry Moulton #define ID_AA64ISAR2_PRFMSLC_WIDTH 4 1198*4daaee44SHarry Moulton #define ID_AA64ISAR2_PRFMSLC_MASK (UL(0xf) << ID_AA64ISAR2_PRFMSLC_SHIFT) 1199*4daaee44SHarry Moulton #define ID_AA64ISAR2_PRFMSLC_VAL(x) ((x) & ID_AA64ISAR2_PRFMSLC_MASK) 1200*4daaee44SHarry Moulton #define ID_AA64ISAR2_PRFMSLC_NONE (UL(0x0) << ID_AA64ISAR2_PRFMSLC_SHIFT) 1201*4daaee44SHarry Moulton #define ID_AA64ISAR2_PRFMSLC_IMPL (UL(0x1) << ID_AA64ISAR2_PRFMSLC_SHIFT) 1202*4daaee44SHarry Moulton #define ID_AA64ISAR2_RPRFM_SHIFT 48 1203*4daaee44SHarry Moulton #define ID_AA64ISAR2_RPRFM_WIDTH 4 1204*4daaee44SHarry Moulton #define ID_AA64ISAR2_RPRFM_MASK (UL(0xf) << ID_AA64ISAR2_RPRFM_SHIFT) 1205*4daaee44SHarry Moulton #define ID_AA64ISAR2_RPRFM_VAL(x) ((x) & ID_AA64ISAR2_RPRFM_MASK) 1206*4daaee44SHarry Moulton #define ID_AA64ISAR2_RPRFM_NONE (UL(0x0) << ID_AA64ISAR2_RPRFM_SHIFT) 1207*4daaee44SHarry Moulton #define ID_AA64ISAR2_RPRFM_IMPL (UL(0x1) << ID_AA64ISAR2_RPRFM_SHIFT) 1208*4daaee44SHarry Moulton #define ID_AA64ISAR2_CSSC_SHIFT 52 1209*4daaee44SHarry Moulton #define ID_AA64ISAR2_CSSC_WIDTH 4 1210*4daaee44SHarry Moulton #define ID_AA64ISAR2_CSSC_MASK (UL(0xf) << ID_AA64ISAR2_CSSC_SHIFT) 1211*4daaee44SHarry Moulton #define ID_AA64ISAR2_CSSC_VAL(x) ((x) & ID_AA64ISAR2_CSSC_MASK) 1212*4daaee44SHarry Moulton #define ID_AA64ISAR2_CSSC_NONE (UL(0x0) << ID_AA64ISAR2_CSSC_SHIFT) 1213*4daaee44SHarry Moulton #define ID_AA64ISAR2_CSSC_IMPL (UL(0x1) << ID_AA64ISAR2_CSSC_SHIFT) 1214*4daaee44SHarry Moulton #define ID_AA64ISAR2_ATS1A_SHIFT 60 1215*4daaee44SHarry Moulton #define ID_AA64ISAR2_ATS1A_WIDTH 4 1216*4daaee44SHarry Moulton #define ID_AA64ISAR2_ATS1A_MASK (UL(0xf) << ID_AA64ISAR2_ATS1A_SHIFT) 1217*4daaee44SHarry Moulton #define ID_AA64ISAR2_ATS1A_VAL(x) ((x) & ID_AA64ISAR2_ATS1A_MASK) 1218*4daaee44SHarry Moulton #define ID_AA64ISAR2_ATS1A_NONE (UL(0x0) << ID_AA64ISAR2_ATS1A_SHIFT) 1219*4daaee44SHarry Moulton #define ID_AA64ISAR2_ATS1A_IMPL (UL(0x1) << ID_AA64ISAR2_ATS1A_SHIFT) 1220a8fac0ceSAndrew Turner 12215f0a5fefSAndrew Turner /* ID_AA64MMFR0_EL1 */ 122210f6680fSAndrew Turner #define ID_AA64MMFR0_EL1 MRS_REG(ID_AA64MMFR0_EL1) 1223d6d860c7SAndrew Turner #define ID_AA64MMFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR0_EL1) 1224b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_op0 3 1225b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_op1 0 1226b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_CRn 0 1227b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_CRm 7 1228b21402d0SAndrew Turner #define ID_AA64MMFR0_EL1_op2 0 1229f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_PARange_SHIFT 0 1230590c3232SAndrew Turner #define ID_AA64MMFR0_PARange_WIDTH 4 1231f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_MASK (UL(0xf) << ID_AA64MMFR0_PARange_SHIFT) 123244e446a1SAndrew Turner #define ID_AA64MMFR0_PARange_VAL(x) ((x) & ID_AA64MMFR0_PARange_MASK) 1233f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4G (UL(0x0) << ID_AA64MMFR0_PARange_SHIFT) 1234f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_64G (UL(0x1) << ID_AA64MMFR0_PARange_SHIFT) 1235f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_1T (UL(0x2) << ID_AA64MMFR0_PARange_SHIFT) 1236f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4T (UL(0x3) << ID_AA64MMFR0_PARange_SHIFT) 1237f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_16T (UL(0x4) << ID_AA64MMFR0_PARange_SHIFT) 1238f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_256T (UL(0x5) << ID_AA64MMFR0_PARange_SHIFT) 1239f31c5955SAndrew Turner #define ID_AA64MMFR0_PARange_4P (UL(0x6) << ID_AA64MMFR0_PARange_SHIFT) 1240f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_ASIDBits_SHIFT 4 1241590c3232SAndrew Turner #define ID_AA64MMFR0_ASIDBits_WIDTH 4 1242f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_MASK (UL(0xf) << ID_AA64MMFR0_ASIDBits_SHIFT) 124344e446a1SAndrew Turner #define ID_AA64MMFR0_ASIDBits_VAL(x) ((x) & ID_AA64MMFR0_ASIDBits_MASK) 1244f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_8 (UL(0x0) << ID_AA64MMFR0_ASIDBits_SHIFT) 1245f31c5955SAndrew Turner #define ID_AA64MMFR0_ASIDBits_16 (UL(0x2) << ID_AA64MMFR0_ASIDBits_SHIFT) 1246f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_BigEnd_SHIFT 8 1247590c3232SAndrew Turner #define ID_AA64MMFR0_BigEnd_WIDTH 4 1248f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_MASK (UL(0xf) << ID_AA64MMFR0_BigEnd_SHIFT) 124944e446a1SAndrew Turner #define ID_AA64MMFR0_BigEnd_VAL(x) ((x) & ID_AA64MMFR0_BigEnd_MASK) 1250f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_FIXED (UL(0x0) << ID_AA64MMFR0_BigEnd_SHIFT) 1251f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEnd_MIXED (UL(0x1) << ID_AA64MMFR0_BigEnd_SHIFT) 1252f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_SNSMem_SHIFT 12 1253590c3232SAndrew Turner #define ID_AA64MMFR0_SNSMem_WIDTH 4 1254f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_MASK (UL(0xf) << ID_AA64MMFR0_SNSMem_SHIFT) 125544e446a1SAndrew Turner #define ID_AA64MMFR0_SNSMem_VAL(x) ((x) & ID_AA64MMFR0_SNSMem_MASK) 1256f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_NONE (UL(0x0) << ID_AA64MMFR0_SNSMem_SHIFT) 1257f31c5955SAndrew Turner #define ID_AA64MMFR0_SNSMem_DISTINCT (UL(0x1) << ID_AA64MMFR0_SNSMem_SHIFT) 1258f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_SHIFT 16 1259590c3232SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_WIDTH 4 1260f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_MASK (UL(0xf) << ID_AA64MMFR0_BigEndEL0_SHIFT) 126144e446a1SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_VAL(x) ((x) & ID_AA64MMFR0_BigEndEL0_MASK) 1262f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_FIXED (UL(0x0) << ID_AA64MMFR0_BigEndEL0_SHIFT) 1263f31c5955SAndrew Turner #define ID_AA64MMFR0_BigEndEL0_MIXED (UL(0x1) << ID_AA64MMFR0_BigEndEL0_SHIFT) 1264f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran16_SHIFT 20 1265590c3232SAndrew Turner #define ID_AA64MMFR0_TGran16_WIDTH 4 1266f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_MASK (UL(0xf) << ID_AA64MMFR0_TGran16_SHIFT) 126744e446a1SAndrew Turner #define ID_AA64MMFR0_TGran16_VAL(x) ((x) & ID_AA64MMFR0_TGran16_MASK) 1268f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_NONE (UL(0x0) << ID_AA64MMFR0_TGran16_SHIFT) 1269f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran16_IMPL (UL(0x1) << ID_AA64MMFR0_TGran16_SHIFT) 1270b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran16_LPA2 (UL(0x2) << ID_AA64MMFR0_TGran16_SHIFT) 1271f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran64_SHIFT 24 1272590c3232SAndrew Turner #define ID_AA64MMFR0_TGran64_WIDTH 4 1273f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_MASK (UL(0xf) << ID_AA64MMFR0_TGran64_SHIFT) 127444e446a1SAndrew Turner #define ID_AA64MMFR0_TGran64_VAL(x) ((x) & ID_AA64MMFR0_TGran64_MASK) 1275f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_IMPL (UL(0x0) << ID_AA64MMFR0_TGran64_SHIFT) 1276f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran64_NONE (UL(0xf) << ID_AA64MMFR0_TGran64_SHIFT) 1277f1fbf9c3SAndrew Turner #define ID_AA64MMFR0_TGran4_SHIFT 28 1278590c3232SAndrew Turner #define ID_AA64MMFR0_TGran4_WIDTH 4 1279f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_MASK (UL(0xf) << ID_AA64MMFR0_TGran4_SHIFT) 128044e446a1SAndrew Turner #define ID_AA64MMFR0_TGran4_VAL(x) ((x) & ID_AA64MMFR0_TGran4_MASK) 1281f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_IMPL (UL(0x0) << ID_AA64MMFR0_TGran4_SHIFT) 1282b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran4_LPA2 (UL(0x1) << ID_AA64MMFR0_TGran4_SHIFT) 1283f31c5955SAndrew Turner #define ID_AA64MMFR0_TGran4_NONE (UL(0xf) << ID_AA64MMFR0_TGran4_SHIFT) 1284a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_SHIFT 32 1285590c3232SAndrew Turner #define ID_AA64MMFR0_TGran16_2_WIDTH 4 1286a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran16_2_SHIFT) 1287a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_VAL(x) ((x) & ID_AA64MMFR0_TGran16_2_MASK) 1288a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_TGran16 (UL(0x0) << ID_AA64MMFR0_TGran16_2_SHIFT) 1289a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran16_2_SHIFT) 1290a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran16_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran16_2_SHIFT) 1291b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran16_2_LPA2 (UL(0x3) << ID_AA64MMFR0_TGran16_2_SHIFT) 1292a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_SHIFT 36 1293590c3232SAndrew Turner #define ID_AA64MMFR0_TGran64_2_WIDTH 4 1294a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran64_2_SHIFT) 1295a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_VAL(x) ((x) & ID_AA64MMFR0_TGran64_2_MASK) 1296a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_TGran64 (UL(0x0) << ID_AA64MMFR0_TGran64_2_SHIFT) 1297a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran64_2_SHIFT) 1298a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran64_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran64_2_SHIFT) 1299a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_SHIFT 40 1300590c3232SAndrew Turner #define ID_AA64MMFR0_TGran4_2_WIDTH 4 1301a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_MASK (UL(0xf) << ID_AA64MMFR0_TGran4_2_SHIFT) 1302a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_VAL(x) ((x) & ID_AA64MMFR0_TGran4_2_MASK) 1303a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_TGran4 (UL(0x0) << ID_AA64MMFR0_TGran4_2_SHIFT) 1304a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_NONE (UL(0x1) << ID_AA64MMFR0_TGran4_2_SHIFT) 1305a7b05eb1SAndrew Turner #define ID_AA64MMFR0_TGran4_2_IMPL (UL(0x2) << ID_AA64MMFR0_TGran4_2_SHIFT) 1306b21402d0SAndrew Turner #define ID_AA64MMFR0_TGran4_2_LPA2 (UL(0x3) << ID_AA64MMFR0_TGran4_2_SHIFT) 1307a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_SHIFT 44 1308590c3232SAndrew Turner #define ID_AA64MMFR0_ExS_WIDTH 4 1309a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_MASK (UL(0xf) << ID_AA64MMFR0_ExS_SHIFT) 1310a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_VAL(x) ((x) & ID_AA64MMFR0_ExS_MASK) 1311a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_ALL (UL(0x0) << ID_AA64MMFR0_ExS_SHIFT) 1312a7b05eb1SAndrew Turner #define ID_AA64MMFR0_ExS_IMPL (UL(0x1) << ID_AA64MMFR0_ExS_SHIFT) 1313b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_SHIFT 56 1314590c3232SAndrew Turner #define ID_AA64MMFR0_FGT_WIDTH 4 1315b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_MASK (UL(0xf) << ID_AA64MMFR0_FGT_SHIFT) 1316b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_VAL(x) ((x) & ID_AA64MMFR0_FGT_MASK) 1317b21402d0SAndrew Turner #define ID_AA64MMFR0_FGT_NONE (UL(0x0) << ID_AA64MMFR0_FGT_SHIFT) 1318*4daaee44SHarry Moulton #define ID_AA64MMFR0_FGT_8_6 (UL(0x1) << ID_AA64MMFR0_FGT_SHIFT) 1319*4daaee44SHarry Moulton #define ID_AA64MMFR0_FGT_8_9 (UL(0x2) << ID_AA64MMFR0_FGT_SHIFT) 1320b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_SHIFT 60 1321590c3232SAndrew Turner #define ID_AA64MMFR0_ECV_WIDTH 4 1322b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_MASK (UL(0xf) << ID_AA64MMFR0_ECV_SHIFT) 1323b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_VAL(x) ((x) & ID_AA64MMFR0_ECV_MASK) 1324b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_NONE (UL(0x0) << ID_AA64MMFR0_ECV_SHIFT) 1325b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_IMPL (UL(0x1) << ID_AA64MMFR0_ECV_SHIFT) 1326b21402d0SAndrew Turner #define ID_AA64MMFR0_ECV_CNTHCTL (UL(0x2) << ID_AA64MMFR0_ECV_SHIFT) 13275f0a5fefSAndrew Turner 13282bafd72fSAndrew Turner /* ID_AA64MMFR1_EL1 */ 132910f6680fSAndrew Turner #define ID_AA64MMFR1_EL1 MRS_REG(ID_AA64MMFR1_EL1) 1330d6d860c7SAndrew Turner #define ID_AA64MMFR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR1_EL1) 1331b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_op0 3 1332b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_op1 0 1333b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_CRn 0 1334b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_CRm 7 1335b21402d0SAndrew Turner #define ID_AA64MMFR1_EL1_op2 1 13362bafd72fSAndrew Turner #define ID_AA64MMFR1_HAFDBS_SHIFT 0 1337590c3232SAndrew Turner #define ID_AA64MMFR1_HAFDBS_WIDTH 4 1338f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_MASK (UL(0xf) << ID_AA64MMFR1_HAFDBS_SHIFT) 133944e446a1SAndrew Turner #define ID_AA64MMFR1_HAFDBS_VAL(x) ((x) & ID_AA64MMFR1_HAFDBS_MASK) 1340f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_NONE (UL(0x0) << ID_AA64MMFR1_HAFDBS_SHIFT) 1341f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_AF (UL(0x1) << ID_AA64MMFR1_HAFDBS_SHIFT) 1342f31c5955SAndrew Turner #define ID_AA64MMFR1_HAFDBS_AF_DBS (UL(0x2) << ID_AA64MMFR1_HAFDBS_SHIFT) 1343f1fbf9c3SAndrew Turner #define ID_AA64MMFR1_VMIDBits_SHIFT 4 1344590c3232SAndrew Turner #define ID_AA64MMFR1_VMIDBits_WIDTH 4 1345f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_MASK (UL(0xf) << ID_AA64MMFR1_VMIDBits_SHIFT) 134644e446a1SAndrew Turner #define ID_AA64MMFR1_VMIDBits_VAL(x) ((x) & ID_AA64MMFR1_VMIDBits_MASK) 1347f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_8 (UL(0x0) << ID_AA64MMFR1_VMIDBits_SHIFT) 1348f31c5955SAndrew Turner #define ID_AA64MMFR1_VMIDBits_16 (UL(0x2) << ID_AA64MMFR1_VMIDBits_SHIFT) 13492bafd72fSAndrew Turner #define ID_AA64MMFR1_VH_SHIFT 8 1350590c3232SAndrew Turner #define ID_AA64MMFR1_VH_WIDTH 4 1351f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_MASK (UL(0xf) << ID_AA64MMFR1_VH_SHIFT) 135244e446a1SAndrew Turner #define ID_AA64MMFR1_VH_VAL(x) ((x) & ID_AA64MMFR1_VH_MASK) 1353f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_NONE (UL(0x0) << ID_AA64MMFR1_VH_SHIFT) 1354f31c5955SAndrew Turner #define ID_AA64MMFR1_VH_IMPL (UL(0x1) << ID_AA64MMFR1_VH_SHIFT) 13552bafd72fSAndrew Turner #define ID_AA64MMFR1_HPDS_SHIFT 12 1356590c3232SAndrew Turner #define ID_AA64MMFR1_HPDS_WIDTH 4 1357f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_MASK (UL(0xf) << ID_AA64MMFR1_HPDS_SHIFT) 135844e446a1SAndrew Turner #define ID_AA64MMFR1_HPDS_VAL(x) ((x) & ID_AA64MMFR1_HPDS_MASK) 1359f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_NONE (UL(0x0) << ID_AA64MMFR1_HPDS_SHIFT) 1360f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_HPD (UL(0x1) << ID_AA64MMFR1_HPDS_SHIFT) 1361f31c5955SAndrew Turner #define ID_AA64MMFR1_HPDS_TTPBHA (UL(0x2) << ID_AA64MMFR1_HPDS_SHIFT) 13622bafd72fSAndrew Turner #define ID_AA64MMFR1_LO_SHIFT 16 1363590c3232SAndrew Turner #define ID_AA64MMFR1_LO_WIDTH 4 1364f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_MASK (UL(0xf) << ID_AA64MMFR1_LO_SHIFT) 136544e446a1SAndrew Turner #define ID_AA64MMFR1_LO_VAL(x) ((x) & ID_AA64MMFR1_LO_MASK) 1366f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_NONE (UL(0x0) << ID_AA64MMFR1_LO_SHIFT) 1367f31c5955SAndrew Turner #define ID_AA64MMFR1_LO_IMPL (UL(0x1) << ID_AA64MMFR1_LO_SHIFT) 13682bafd72fSAndrew Turner #define ID_AA64MMFR1_PAN_SHIFT 20 1369590c3232SAndrew Turner #define ID_AA64MMFR1_PAN_WIDTH 4 1370f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_MASK (UL(0xf) << ID_AA64MMFR1_PAN_SHIFT) 137144e446a1SAndrew Turner #define ID_AA64MMFR1_PAN_VAL(x) ((x) & ID_AA64MMFR1_PAN_MASK) 1372f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_NONE (UL(0x0) << ID_AA64MMFR1_PAN_SHIFT) 1373f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_IMPL (UL(0x1) << ID_AA64MMFR1_PAN_SHIFT) 1374f31c5955SAndrew Turner #define ID_AA64MMFR1_PAN_ATS1E1 (UL(0x2) << ID_AA64MMFR1_PAN_SHIFT) 1375*4daaee44SHarry Moulton #define ID_AA64MMFR1_PAN_EPAN (UL(0x3) << ID_AA64MMFR1_PAN_SHIFT) 1376f1fbf9c3SAndrew Turner #define ID_AA64MMFR1_SpecSEI_SHIFT 24 1377590c3232SAndrew Turner #define ID_AA64MMFR1_SpecSEI_WIDTH 4 1378f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_MASK (UL(0xf) << ID_AA64MMFR1_SpecSEI_SHIFT) 137944e446a1SAndrew Turner #define ID_AA64MMFR1_SpecSEI_VAL(x) ((x) & ID_AA64MMFR1_SpecSEI_MASK) 1380f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_NONE (UL(0x0) << ID_AA64MMFR1_SpecSEI_SHIFT) 1381f31c5955SAndrew Turner #define ID_AA64MMFR1_SpecSEI_IMPL (UL(0x1) << ID_AA64MMFR1_SpecSEI_SHIFT) 1382f45dc694SAndrew Turner #define ID_AA64MMFR1_XNX_SHIFT 28 1383590c3232SAndrew Turner #define ID_AA64MMFR1_XNX_WIDTH 4 1384f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_MASK (UL(0xf) << ID_AA64MMFR1_XNX_SHIFT) 138544e446a1SAndrew Turner #define ID_AA64MMFR1_XNX_VAL(x) ((x) & ID_AA64MMFR1_XNX_MASK) 1386f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_NONE (UL(0x0) << ID_AA64MMFR1_XNX_SHIFT) 1387f31c5955SAndrew Turner #define ID_AA64MMFR1_XNX_IMPL (UL(0x1) << ID_AA64MMFR1_XNX_SHIFT) 1388284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_SHIFT 32 1389590c3232SAndrew Turner #define ID_AA64MMFR1_TWED_WIDTH 4 1390284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_MASK (UL(0xf) << ID_AA64MMFR1_TWED_SHIFT) 1391284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_VAL(x) ((x) & ID_AA64MMFR1_TWED_MASK) 1392284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_NONE (UL(0x0) << ID_AA64MMFR1_TWED_SHIFT) 1393284f91deSAndrew Turner #define ID_AA64MMFR1_TWED_IMPL (UL(0x1) << ID_AA64MMFR1_TWED_SHIFT) 1394284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_SHIFT 36 1395590c3232SAndrew Turner #define ID_AA64MMFR1_ETS_WIDTH 4 1396284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_MASK (UL(0xf) << ID_AA64MMFR1_ETS_SHIFT) 1397284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_VAL(x) ((x) & ID_AA64MMFR1_ETS_MASK) 1398284f91deSAndrew Turner #define ID_AA64MMFR1_ETS_NONE (UL(0x0) << ID_AA64MMFR1_ETS_SHIFT) 1399*4daaee44SHarry Moulton #define ID_AA64MMFR1_ETS_NONE2 (UL(0x1) << ID_AA64MMFR1_ETS_SHIFT) 1400*4daaee44SHarry Moulton #define ID_AA64MMFR1_ETS_IMPL (UL(0x2) << ID_AA64MMFR1_ETS_SHIFT) 1401284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_SHIFT 40 1402590c3232SAndrew Turner #define ID_AA64MMFR1_HCX_WIDTH 4 1403284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_MASK (UL(0xf) << ID_AA64MMFR1_HCX_SHIFT) 1404284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_VAL(x) ((x) & ID_AA64MMFR1_HCX_MASK) 1405284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_NONE (UL(0x0) << ID_AA64MMFR1_HCX_SHIFT) 1406284f91deSAndrew Turner #define ID_AA64MMFR1_HCX_IMPL (UL(0x1) << ID_AA64MMFR1_HCX_SHIFT) 1407284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_SHIFT 44 1408590c3232SAndrew Turner #define ID_AA64MMFR1_AFP_WIDTH 4 1409284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_MASK (UL(0xf) << ID_AA64MMFR1_AFP_SHIFT) 1410284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_VAL(x) ((x) & ID_AA64MMFR1_AFP_MASK) 1411284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_NONE (UL(0x0) << ID_AA64MMFR1_AFP_SHIFT) 1412284f91deSAndrew Turner #define ID_AA64MMFR1_AFP_IMPL (UL(0x1) << ID_AA64MMFR1_AFP_SHIFT) 1413284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_SHIFT 48 1414590c3232SAndrew Turner #define ID_AA64MMFR1_nTLBPA_WIDTH 4 1415284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_MASK (UL(0xf) << ID_AA64MMFR1_nTLBPA_SHIFT) 1416284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_VAL(x) ((x) & ID_AA64MMFR1_nTLBPA_MASK) 1417284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_NONE (UL(0x0) << ID_AA64MMFR1_nTLBPA_SHIFT) 1418284f91deSAndrew Turner #define ID_AA64MMFR1_nTLBPA_IMPL (UL(0x1) << ID_AA64MMFR1_nTLBPA_SHIFT) 1419284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_SHIFT 52 1420590c3232SAndrew Turner #define ID_AA64MMFR1_TIDCP1_WIDTH 4 1421284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_MASK (UL(0xf) << ID_AA64MMFR1_TIDCP1_SHIFT) 1422284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_VAL(x) ((x) & ID_AA64MMFR1_TIDCP1_MASK) 1423284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_NONE (UL(0x0) << ID_AA64MMFR1_TIDCP1_SHIFT) 1424284f91deSAndrew Turner #define ID_AA64MMFR1_TIDCP1_IMPL (UL(0x1) << ID_AA64MMFR1_TIDCP1_SHIFT) 1425284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_SHIFT 56 1426590c3232SAndrew Turner #define ID_AA64MMFR1_CMOVW_WIDTH 4 1427284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_MASK (UL(0xf) << ID_AA64MMFR1_CMOVW_SHIFT) 1428284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_VAL(x) ((x) & ID_AA64MMFR1_CMOVW_MASK) 1429284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_NONE (UL(0x0) << ID_AA64MMFR1_CMOVW_SHIFT) 1430284f91deSAndrew Turner #define ID_AA64MMFR1_CMOVW_IMPL (UL(0x1) << ID_AA64MMFR1_CMOVW_SHIFT) 1431*4daaee44SHarry Moulton #define ID_AA64MMFR1_ECBHB_SHIFT 60 1432*4daaee44SHarry Moulton #define ID_AA64MMFR1_ECBHB_WIDTH 4 1433*4daaee44SHarry Moulton #define ID_AA64MMFR1_ECBHB_MASK (UL(0xf) << ID_AA64MMFR1_ECBHB_SHIFT) 1434*4daaee44SHarry Moulton #define ID_AA64MMFR1_ECBHB_VAL(x) ((x) & ID_AA64MMFR1_ECBHB_MASK) 1435*4daaee44SHarry Moulton #define ID_AA64MMFR1_ECBHB_NONE (UL(0x0) << ID_AA64MMFR1_ECBHB_SHIFT) 1436*4daaee44SHarry Moulton #define ID_AA64MMFR1_ECBHB_IMPL (UL(0x1) << ID_AA64MMFR1_ECBHB_SHIFT) 1437f45dc694SAndrew Turner 1438f45dc694SAndrew Turner /* ID_AA64MMFR2_EL1 */ 143910f6680fSAndrew Turner #define ID_AA64MMFR2_EL1 MRS_REG(ID_AA64MMFR2_EL1) 1440d6d860c7SAndrew Turner #define ID_AA64MMFR2_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR2_EL1) 14412134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_op0 3 14422134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_op1 0 14432134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_CRn 0 14442134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_CRm 7 14452134cfe7SAndrew Turner #define ID_AA64MMFR2_EL1_op2 2 1446f1fbf9c3SAndrew Turner #define ID_AA64MMFR2_CnP_SHIFT 0 1447590c3232SAndrew Turner #define ID_AA64MMFR2_CnP_WIDTH 4 1448f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_MASK (UL(0xf) << ID_AA64MMFR2_CnP_SHIFT) 144944e446a1SAndrew Turner #define ID_AA64MMFR2_CnP_VAL(x) ((x) & ID_AA64MMFR2_CnP_MASK) 1450f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_NONE (UL(0x0) << ID_AA64MMFR2_CnP_SHIFT) 1451f31c5955SAndrew Turner #define ID_AA64MMFR2_CnP_IMPL (UL(0x1) << ID_AA64MMFR2_CnP_SHIFT) 1452f45dc694SAndrew Turner #define ID_AA64MMFR2_UAO_SHIFT 4 1453590c3232SAndrew Turner #define ID_AA64MMFR2_UAO_WIDTH 4 1454f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_MASK (UL(0xf) << ID_AA64MMFR2_UAO_SHIFT) 145544e446a1SAndrew Turner #define ID_AA64MMFR2_UAO_VAL(x) ((x) & ID_AA64MMFR2_UAO_MASK) 1456f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_NONE (UL(0x0) << ID_AA64MMFR2_UAO_SHIFT) 1457f31c5955SAndrew Turner #define ID_AA64MMFR2_UAO_IMPL (UL(0x1) << ID_AA64MMFR2_UAO_SHIFT) 1458f45dc694SAndrew Turner #define ID_AA64MMFR2_LSM_SHIFT 8 1459590c3232SAndrew Turner #define ID_AA64MMFR2_LSM_WIDTH 4 1460f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_MASK (UL(0xf) << ID_AA64MMFR2_LSM_SHIFT) 146144e446a1SAndrew Turner #define ID_AA64MMFR2_LSM_VAL(x) ((x) & ID_AA64MMFR2_LSM_MASK) 1462f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_NONE (UL(0x0) << ID_AA64MMFR2_LSM_SHIFT) 1463f31c5955SAndrew Turner #define ID_AA64MMFR2_LSM_IMPL (UL(0x1) << ID_AA64MMFR2_LSM_SHIFT) 1464f45dc694SAndrew Turner #define ID_AA64MMFR2_IESB_SHIFT 12 1465590c3232SAndrew Turner #define ID_AA64MMFR2_IESB_WIDTH 4 1466f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_MASK (UL(0xf) << ID_AA64MMFR2_IESB_SHIFT) 146744e446a1SAndrew Turner #define ID_AA64MMFR2_IESB_VAL(x) ((x) & ID_AA64MMFR2_IESB_MASK) 1468f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_NONE (UL(0x0) << ID_AA64MMFR2_IESB_SHIFT) 1469f31c5955SAndrew Turner #define ID_AA64MMFR2_IESB_IMPL (UL(0x1) << ID_AA64MMFR2_IESB_SHIFT) 1470f1fbf9c3SAndrew Turner #define ID_AA64MMFR2_VARange_SHIFT 16 1471590c3232SAndrew Turner #define ID_AA64MMFR2_VARange_WIDTH 4 1472f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_MASK (UL(0xf) << ID_AA64MMFR2_VARange_SHIFT) 147344e446a1SAndrew Turner #define ID_AA64MMFR2_VARange_VAL(x) ((x) & ID_AA64MMFR2_VARange_MASK) 1474f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_48 (UL(0x0) << ID_AA64MMFR2_VARange_SHIFT) 1475f31c5955SAndrew Turner #define ID_AA64MMFR2_VARange_52 (UL(0x1) << ID_AA64MMFR2_VARange_SHIFT) 1476ca289945SAndrew Turner #define ID_AA64MMFR2_CCIDX_SHIFT 20 1477590c3232SAndrew Turner #define ID_AA64MMFR2_CCIDX_WIDTH 4 1478f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_MASK (UL(0xf) << ID_AA64MMFR2_CCIDX_SHIFT) 147944e446a1SAndrew Turner #define ID_AA64MMFR2_CCIDX_VAL(x) ((x) & ID_AA64MMFR2_CCIDX_MASK) 1480f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_32 (UL(0x0) << ID_AA64MMFR2_CCIDX_SHIFT) 1481f31c5955SAndrew Turner #define ID_AA64MMFR2_CCIDX_64 (UL(0x1) << ID_AA64MMFR2_CCIDX_SHIFT) 1482ca289945SAndrew Turner #define ID_AA64MMFR2_NV_SHIFT 24 1483590c3232SAndrew Turner #define ID_AA64MMFR2_NV_WIDTH 4 1484f31c5955SAndrew Turner #define ID_AA64MMFR2_NV_MASK (UL(0xf) << ID_AA64MMFR2_NV_SHIFT) 148544e446a1SAndrew Turner #define ID_AA64MMFR2_NV_VAL(x) ((x) & ID_AA64MMFR2_NV_MASK) 1486f31c5955SAndrew Turner #define ID_AA64MMFR2_NV_NONE (UL(0x0) << ID_AA64MMFR2_NV_SHIFT) 1487a7b05eb1SAndrew Turner #define ID_AA64MMFR2_NV_8_3 (UL(0x1) << ID_AA64MMFR2_NV_SHIFT) 1488a7b05eb1SAndrew Turner #define ID_AA64MMFR2_NV_8_4 (UL(0x2) << ID_AA64MMFR2_NV_SHIFT) 14890387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_SHIFT 28 1490590c3232SAndrew Turner #define ID_AA64MMFR2_ST_WIDTH 4 14910387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_MASK (UL(0xf) << ID_AA64MMFR2_ST_SHIFT) 14920387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_VAL(x) ((x) & ID_AA64MMFR2_ST_MASK) 14930387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_NONE (UL(0x0) << ID_AA64MMFR2_ST_SHIFT) 14940387f2aaSMitchell Horne #define ID_AA64MMFR2_ST_IMPL (UL(0x1) << ID_AA64MMFR2_ST_SHIFT) 14950387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_SHIFT 32 1496590c3232SAndrew Turner #define ID_AA64MMFR2_AT_WIDTH 4 14970387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_MASK (UL(0xf) << ID_AA64MMFR2_AT_SHIFT) 14980387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_VAL(x) ((x) & ID_AA64MMFR2_AT_MASK) 14990387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_NONE (UL(0x0) << ID_AA64MMFR2_AT_SHIFT) 15000387f2aaSMitchell Horne #define ID_AA64MMFR2_AT_IMPL (UL(0x1) << ID_AA64MMFR2_AT_SHIFT) 15010387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_SHIFT 36 1502590c3232SAndrew Turner #define ID_AA64MMFR2_IDS_WIDTH 4 15030387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_MASK (UL(0xf) << ID_AA64MMFR2_IDS_SHIFT) 15040387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_VAL(x) ((x) & ID_AA64MMFR2_IDS_MASK) 15050387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_NONE (UL(0x0) << ID_AA64MMFR2_IDS_SHIFT) 15060387f2aaSMitchell Horne #define ID_AA64MMFR2_IDS_IMPL (UL(0x1) << ID_AA64MMFR2_IDS_SHIFT) 15070387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_SHIFT 40 1508590c3232SAndrew Turner #define ID_AA64MMFR2_FWB_WIDTH 4 15090387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_MASK (UL(0xf) << ID_AA64MMFR2_FWB_SHIFT) 15100387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_VAL(x) ((x) & ID_AA64MMFR2_FWB_MASK) 15110387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_NONE (UL(0x0) << ID_AA64MMFR2_FWB_SHIFT) 15120387f2aaSMitchell Horne #define ID_AA64MMFR2_FWB_IMPL (UL(0x1) << ID_AA64MMFR2_FWB_SHIFT) 15130387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_SHIFT 48 1514590c3232SAndrew Turner #define ID_AA64MMFR2_TTL_WIDTH 4 15150387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_MASK (UL(0xf) << ID_AA64MMFR2_TTL_SHIFT) 15160387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_VAL(x) ((x) & ID_AA64MMFR2_TTL_MASK) 15170387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_NONE (UL(0x0) << ID_AA64MMFR2_TTL_SHIFT) 15180387f2aaSMitchell Horne #define ID_AA64MMFR2_TTL_IMPL (UL(0x1) << ID_AA64MMFR2_TTL_SHIFT) 15190387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_SHIFT 52 1520590c3232SAndrew Turner #define ID_AA64MMFR2_BBM_WIDTH 4 15210387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_MASK (UL(0xf) << ID_AA64MMFR2_BBM_SHIFT) 15220387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_VAL(x) ((x) & ID_AA64MMFR2_BBM_MASK) 15230387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL0 (UL(0x0) << ID_AA64MMFR2_BBM_SHIFT) 15240387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL1 (UL(0x1) << ID_AA64MMFR2_BBM_SHIFT) 15250387f2aaSMitchell Horne #define ID_AA64MMFR2_BBM_LEVEL2 (UL(0x2) << ID_AA64MMFR2_BBM_SHIFT) 15260387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_SHIFT 56 1527590c3232SAndrew Turner #define ID_AA64MMFR2_EVT_WIDTH 4 15280387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_MASK (UL(0xf) << ID_AA64MMFR2_EVT_SHIFT) 15290387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_VAL(x) ((x) & ID_AA64MMFR2_EVT_MASK) 15300387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_NONE (UL(0x0) << ID_AA64MMFR2_EVT_SHIFT) 15310387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_8_2 (UL(0x1) << ID_AA64MMFR2_EVT_SHIFT) 15320387f2aaSMitchell Horne #define ID_AA64MMFR2_EVT_8_5 (UL(0x2) << ID_AA64MMFR2_EVT_SHIFT) 15330387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_SHIFT 60 1534590c3232SAndrew Turner #define ID_AA64MMFR2_E0PD_WIDTH 4 15350387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_MASK (UL(0xf) << ID_AA64MMFR2_E0PD_SHIFT) 15360387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_VAL(x) ((x) & ID_AA64MMFR2_E0PD_MASK) 15370387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_NONE (UL(0x0) << ID_AA64MMFR2_E0PD_SHIFT) 15380387f2aaSMitchell Horne #define ID_AA64MMFR2_E0PD_IMPL (UL(0x1) << ID_AA64MMFR2_E0PD_SHIFT) 15392bafd72fSAndrew Turner 1540c6567914SAndrew Turner /* ID_AA64MMFR3_EL1 */ 1541c6567914SAndrew Turner #define ID_AA64MMFR3_EL1 MRS_REG(ID_AA64MMFR3_EL1) 1542d6d860c7SAndrew Turner #define ID_AA64MMFR3_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR3_EL1) 1543c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_op0 3 1544c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_op1 0 1545c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_CRn 0 1546c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_CRm 7 1547c6567914SAndrew Turner #define ID_AA64MMFR3_EL1_op2 3 1548c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_SHIFT 0 1549590c3232SAndrew Turner #define ID_AA64MMFR3_TCRX_WIDTH 4 1550c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_MASK (UL(0xf) << ID_AA64MMFR3_TCRX_SHIFT) 1551c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_VAL(x) ((x) & ID_AA64MMFR3_TCRX_MASK) 1552c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_NONE (UL(0x0) << ID_AA64MMFR3_TCRX_SHIFT) 1553c6567914SAndrew Turner #define ID_AA64MMFR3_TCRX_IMPL (UL(0x1) << ID_AA64MMFR3_TCRX_SHIFT) 1554c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_SHIFT 4 1555590c3232SAndrew Turner #define ID_AA64MMFR3_SCTLRX_WIDTH 4 1556c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_MASK (UL(0xf) << ID_AA64MMFR3_SCTLRX_SHIFT) 1557c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_VAL(x) ((x) & ID_AA64MMFR3_SCTLRX_MASK) 1558c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_NONE (UL(0x0) << ID_AA64MMFR3_SCTLRX_SHIFT) 1559c6567914SAndrew Turner #define ID_AA64MMFR3_SCTLRX_IMPL (UL(0x1) << ID_AA64MMFR3_SCTLRX_SHIFT) 1560*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1PIE_SHIFT 8 1561*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1PIE_WIDTH 4 1562*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1PIE_MASK (UL(0xf) << ID_AA64MMFR3_S1PIE_SHIFT) 1563*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1PIE_VAL(x) ((x) & ID_AA64MMFR3_S1PIE_MASK) 1564*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1PIE_NONE (UL(0x0) << ID_AA64MMFR3_S1PIE_SHIFT) 1565*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1PIE_IMPL (UL(0x1) << ID_AA64MMFR3_S1PIE_SHIFT) 1566*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2PIE_SHIFT 12 1567*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2PIE_WIDTH 4 1568*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2PIE_MASK (UL(0xf) << ID_AA64MMFR3_S2PIE_SHIFT) 1569*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2PIE_VAL(x) ((x) & ID_AA64MMFR3_S2PIE_MASK) 1570*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2PIE_NONE (UL(0x0) << ID_AA64MMFR3_S2PIE_SHIFT) 1571*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2PIE_IMPL (UL(0x1) << ID_AA64MMFR3_S2PIE_SHIFT) 1572*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1POE_SHIFT 16 1573*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1POE_WIDTH 4 1574*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1POE_MASK (UL(0xf) << ID_AA64MMFR3_S1POE_SHIFT) 1575*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1POE_VAL(x) ((x) & ID_AA64MMFR3_S1POE_MASK) 1576*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1POE_NONE (UL(0x0) << ID_AA64MMFR3_S1POE_SHIFT) 1577*4daaee44SHarry Moulton #define ID_AA64MMFR3_S1POE_IMPL (UL(0x1) << ID_AA64MMFR3_S1POE_SHIFT) 1578*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2POE_SHIFT 20 1579*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2POE_WIDTH 4 1580*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2POE_MASK (UL(0xf) << ID_AA64MMFR3_S2POE_SHIFT) 1581*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2POE_VAL(x) ((x) & ID_AA64MMFR3_S2POE_MASK) 1582*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2POE_NONE (UL(0x0) << ID_AA64MMFR3_S2POE_SHIFT) 1583*4daaee44SHarry Moulton #define ID_AA64MMFR3_S2POE_IMPL (UL(0x1) << ID_AA64MMFR3_S2POE_SHIFT) 1584*4daaee44SHarry Moulton #define ID_AA64MMFR3_AIE_SHIFT 24 1585*4daaee44SHarry Moulton #define ID_AA64MMFR3_AIE_WIDTH 4 1586*4daaee44SHarry Moulton #define ID_AA64MMFR3_AIE_MASK (UL(0xf) << ID_AA64MMFR3_AIE_SHIFT) 1587*4daaee44SHarry Moulton #define ID_AA64MMFR3_AIE_VAL(x) ((x) & ID_AA64MMFR3_AIE_MASK) 1588*4daaee44SHarry Moulton #define ID_AA64MMFR3_AIE_NONE (UL(0x0) << ID_AA64MMFR3_AIE_SHIFT) 1589*4daaee44SHarry Moulton #define ID_AA64MMFR3_AIE_IMPL (UL(0x1) << ID_AA64MMFR3_AIE_SHIFT) 1590c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_SHIFT 28 1591590c3232SAndrew Turner #define ID_AA64MMFR3_MEC_WIDTH 4 1592c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_MASK (UL(0xf) << ID_AA64MMFR3_MEC_SHIFT) 1593c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_VAL(x) ((x) & ID_AA64MMFR3_MEC_MASK) 1594c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_NONE (UL(0x0) << ID_AA64MMFR3_MEC_SHIFT) 1595c6567914SAndrew Turner #define ID_AA64MMFR3_MEC_IMPL (UL(0x1) << ID_AA64MMFR3_MEC_SHIFT) 1596*4daaee44SHarry Moulton #define ID_AA64MMFR3_SNERR_SHIFT 40 1597*4daaee44SHarry Moulton #define ID_AA64MMFR3_SNERR_WIDTH 4 1598*4daaee44SHarry Moulton #define ID_AA64MMFR3_SNERR_MASK (UL(0xf) << ID_AA64MMFR3_SNERR_SHIFT) 1599*4daaee44SHarry Moulton #define ID_AA64MMFR3_SNERR_VAL(x) ((x) & ID_AA64MMFR3_SNERR_MASK) 1600*4daaee44SHarry Moulton #define ID_AA64MMFR3_SNERR_NONE (UL(0x0) << ID_AA64MMFR3_SNERR_SHIFT) 1601*4daaee44SHarry Moulton #define ID_AA64MMFR3_SNERR_ALL (UL(0x1) << ID_AA64MMFR3_SNERR_SHIFT) 1602*4daaee44SHarry Moulton #define ID_AA64MMFR3_ANERR_SHIFT 44 1603*4daaee44SHarry Moulton #define ID_AA64MMFR3_ANERR_WIDTH 4 1604*4daaee44SHarry Moulton #define ID_AA64MMFR3_ANERR_MASK (UL(0xf) << ID_AA64MMFR3_ANERR_SHIFT) 1605*4daaee44SHarry Moulton #define ID_AA64MMFR3_ANERR_VAL(x) ((x) & ID_AA64MMFR3_ANERR_MASK) 1606*4daaee44SHarry Moulton #define ID_AA64MMFR3_ANERR_NONE (UL(0x0) << ID_AA64MMFR3_ANERR_SHIFT) 1607*4daaee44SHarry Moulton #define ID_AA64MMFR3_ANERR_SOME (UL(0x1) << ID_AA64MMFR3_ANERR_SHIFT) 1608*4daaee44SHarry Moulton #define ID_AA64MMFR3_SDERR_SHIFT 52 1609*4daaee44SHarry Moulton #define ID_AA64MMFR3_SDERR_WIDTH 4 1610*4daaee44SHarry Moulton #define ID_AA64MMFR3_SDERR_MASK (UL(0xf) << ID_AA64MMFR3_SDERR_SHIFT) 1611*4daaee44SHarry Moulton #define ID_AA64MMFR3_SDERR_VAL(x) ((x) & ID_AA64MMFR3_SDERR_MASK) 1612*4daaee44SHarry Moulton #define ID_AA64MMFR3_SDERR_NONE (UL(0x0) << ID_AA64MMFR3_SDERR_SHIFT) 1613*4daaee44SHarry Moulton #define ID_AA64MMFR3_SDERR_ALL (UL(0x1) << ID_AA64MMFR3_SDERR_SHIFT) 1614*4daaee44SHarry Moulton #define ID_AA64MMFR3_ADERR_SHIFT 56 1615*4daaee44SHarry Moulton #define ID_AA64MMFR3_ADERR_WIDTH 4 1616*4daaee44SHarry Moulton #define ID_AA64MMFR3_ADERR_MASK (UL(0xf) << ID_AA64MMFR3_ADERR_SHIFT) 1617*4daaee44SHarry Moulton #define ID_AA64MMFR3_ADERR_VAL(x) ((x) & ID_AA64MMFR3_ADERR_MASK) 1618*4daaee44SHarry Moulton #define ID_AA64MMFR3_ADERR_NONE (UL(0x0) << ID_AA64MMFR3_ADERR_SHIFT) 1619*4daaee44SHarry Moulton #define ID_AA64MMFR3_ADERR_SOME (UL(0x1) << ID_AA64MMFR3_ADERR_SHIFT) 1620c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_SHIFT 60 1621590c3232SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_WIDTH 4 1622c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_MASK (UL(0xf) << ID_AA64MMFR3_Spec_FPACC_SHIFT) 1623c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_VAL(x) ((x) & ID_AA64MMFR3_Spec_FPACC_MASK) 1624c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_NONE (UL(0x0) << ID_AA64MMFR3_Spec_FPACC_SHIFT) 1625c6567914SAndrew Turner #define ID_AA64MMFR3_Spec_FPACC_IMPL (UL(0x1) << ID_AA64MMFR3_Spec_FPACC_SHIFT) 1626c6567914SAndrew Turner 162722235b63SAndrew Turner /* ID_AA64MMFR4_EL1 */ 162822235b63SAndrew Turner #define ID_AA64MMFR4_EL1 MRS_REG(ID_AA64MMFR4_EL1) 1629d6d860c7SAndrew Turner #define ID_AA64MMFR4_EL1_REG MRS_REG_ALT_NAME(ID_AA64MMFR4_EL1) 163022235b63SAndrew Turner #define ID_AA64MMFR4_EL1_op0 3 163122235b63SAndrew Turner #define ID_AA64MMFR4_EL1_op1 0 163222235b63SAndrew Turner #define ID_AA64MMFR4_EL1_CRn 0 163322235b63SAndrew Turner #define ID_AA64MMFR4_EL1_CRm 7 163422235b63SAndrew Turner #define ID_AA64MMFR4_EL1_op2 4 163522235b63SAndrew Turner 1636e5acd89cSAndrew Turner /* ID_AA64PFR0_EL1 */ 163710f6680fSAndrew Turner #define ID_AA64PFR0_EL1 MRS_REG(ID_AA64PFR0_EL1) 1638d6d860c7SAndrew Turner #define ID_AA64PFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64PFR0_EL1) 16390766dde9SAndrew Turner #define ID_AA64PFR0_EL1_op0 3 16400766dde9SAndrew Turner #define ID_AA64PFR0_EL1_op1 0 16410766dde9SAndrew Turner #define ID_AA64PFR0_EL1_CRn 0 16420766dde9SAndrew Turner #define ID_AA64PFR0_EL1_CRm 4 16430766dde9SAndrew Turner #define ID_AA64PFR0_EL1_op2 0 16445f0a5fefSAndrew Turner #define ID_AA64PFR0_EL0_SHIFT 0 1645590c3232SAndrew Turner #define ID_AA64PFR0_EL0_WIDTH 4 1646f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_MASK (UL(0xf) << ID_AA64PFR0_EL0_SHIFT) 164744e446a1SAndrew Turner #define ID_AA64PFR0_EL0_VAL(x) ((x) & ID_AA64PFR0_EL0_MASK) 1648f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_64 (UL(0x1) << ID_AA64PFR0_EL0_SHIFT) 1649f31c5955SAndrew Turner #define ID_AA64PFR0_EL0_64_32 (UL(0x2) << ID_AA64PFR0_EL0_SHIFT) 16505f0a5fefSAndrew Turner #define ID_AA64PFR0_EL1_SHIFT 4 1651590c3232SAndrew Turner #define ID_AA64PFR0_EL1_WIDTH 4 1652f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_MASK (UL(0xf) << ID_AA64PFR0_EL1_SHIFT) 165344e446a1SAndrew Turner #define ID_AA64PFR0_EL1_VAL(x) ((x) & ID_AA64PFR0_EL1_MASK) 1654f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_64 (UL(0x1) << ID_AA64PFR0_EL1_SHIFT) 1655f31c5955SAndrew Turner #define ID_AA64PFR0_EL1_64_32 (UL(0x2) << ID_AA64PFR0_EL1_SHIFT) 16565f0a5fefSAndrew Turner #define ID_AA64PFR0_EL2_SHIFT 8 1657590c3232SAndrew Turner #define ID_AA64PFR0_EL2_WIDTH 4 1658f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_MASK (UL(0xf) << ID_AA64PFR0_EL2_SHIFT) 165944e446a1SAndrew Turner #define ID_AA64PFR0_EL2_VAL(x) ((x) & ID_AA64PFR0_EL2_MASK) 1660f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_NONE (UL(0x0) << ID_AA64PFR0_EL2_SHIFT) 1661f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_64 (UL(0x1) << ID_AA64PFR0_EL2_SHIFT) 1662f31c5955SAndrew Turner #define ID_AA64PFR0_EL2_64_32 (UL(0x2) << ID_AA64PFR0_EL2_SHIFT) 16635f0a5fefSAndrew Turner #define ID_AA64PFR0_EL3_SHIFT 12 1664590c3232SAndrew Turner #define ID_AA64PFR0_EL3_WIDTH 4 1665f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_MASK (UL(0xf) << ID_AA64PFR0_EL3_SHIFT) 166644e446a1SAndrew Turner #define ID_AA64PFR0_EL3_VAL(x) ((x) & ID_AA64PFR0_EL3_MASK) 1667f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_NONE (UL(0x0) << ID_AA64PFR0_EL3_SHIFT) 1668f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_64 (UL(0x1) << ID_AA64PFR0_EL3_SHIFT) 1669f31c5955SAndrew Turner #define ID_AA64PFR0_EL3_64_32 (UL(0x2) << ID_AA64PFR0_EL3_SHIFT) 16705f0a5fefSAndrew Turner #define ID_AA64PFR0_FP_SHIFT 16 1671590c3232SAndrew Turner #define ID_AA64PFR0_FP_WIDTH 4 1672f31c5955SAndrew Turner #define ID_AA64PFR0_FP_MASK (UL(0xf) << ID_AA64PFR0_FP_SHIFT) 167344e446a1SAndrew Turner #define ID_AA64PFR0_FP_VAL(x) ((x) & ID_AA64PFR0_FP_MASK) 1674f31c5955SAndrew Turner #define ID_AA64PFR0_FP_IMPL (UL(0x0) << ID_AA64PFR0_FP_SHIFT) 1675f31c5955SAndrew Turner #define ID_AA64PFR0_FP_HP (UL(0x1) << ID_AA64PFR0_FP_SHIFT) 1676f31c5955SAndrew Turner #define ID_AA64PFR0_FP_NONE (UL(0xf) << ID_AA64PFR0_FP_SHIFT) 1677f1fbf9c3SAndrew Turner #define ID_AA64PFR0_AdvSIMD_SHIFT 20 1678590c3232SAndrew Turner #define ID_AA64PFR0_AdvSIMD_WIDTH 4 1679f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_MASK (UL(0xf) << ID_AA64PFR0_AdvSIMD_SHIFT) 168044e446a1SAndrew Turner #define ID_AA64PFR0_AdvSIMD_VAL(x) ((x) & ID_AA64PFR0_AdvSIMD_MASK) 1681f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_IMPL (UL(0x0) << ID_AA64PFR0_AdvSIMD_SHIFT) 1682f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_HP (UL(0x1) << ID_AA64PFR0_AdvSIMD_SHIFT) 1683f31c5955SAndrew Turner #define ID_AA64PFR0_AdvSIMD_NONE (UL(0xf) << ID_AA64PFR0_AdvSIMD_SHIFT) 16845f0a5fefSAndrew Turner #define ID_AA64PFR0_GIC_BITS 0x4 /* Number of bits in GIC field */ 16855f0a5fefSAndrew Turner #define ID_AA64PFR0_GIC_SHIFT 24 1686590c3232SAndrew Turner #define ID_AA64PFR0_GIC_WIDTH 4 1687f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_MASK (UL(0xf) << ID_AA64PFR0_GIC_SHIFT) 168844e446a1SAndrew Turner #define ID_AA64PFR0_GIC_VAL(x) ((x) & ID_AA64PFR0_GIC_MASK) 1689f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_NONE (UL(0x0) << ID_AA64PFR0_GIC_SHIFT) 1690f31c5955SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_EN (UL(0x1) << ID_AA64PFR0_GIC_SHIFT) 1691477204e7SAndrew Turner #define ID_AA64PFR0_GIC_CPUIF_4_1 (UL(0x3) << ID_AA64PFR0_GIC_SHIFT) 1692f45dc694SAndrew Turner #define ID_AA64PFR0_RAS_SHIFT 28 1693590c3232SAndrew Turner #define ID_AA64PFR0_RAS_WIDTH 4 1694f31c5955SAndrew Turner #define ID_AA64PFR0_RAS_MASK (UL(0xf) << ID_AA64PFR0_RAS_SHIFT) 169544e446a1SAndrew Turner #define ID_AA64PFR0_RAS_VAL(x) ((x) & ID_AA64PFR0_RAS_MASK) 1696f31c5955SAndrew Turner #define ID_AA64PFR0_RAS_NONE (UL(0x0) << ID_AA64PFR0_RAS_SHIFT) 1697a7b05eb1SAndrew Turner #define ID_AA64PFR0_RAS_IMPL (UL(0x1) << ID_AA64PFR0_RAS_SHIFT) 1698a7b05eb1SAndrew Turner #define ID_AA64PFR0_RAS_8_4 (UL(0x2) << ID_AA64PFR0_RAS_SHIFT) 1699*4daaee44SHarry Moulton #define ID_AA64PFR0_RAS_8_9 (UL(0x3) << ID_AA64PFR0_RAS_SHIFT) 1700f9fc9faaSAndrew Turner #define ID_AA64PFR0_SVE_SHIFT 32 1701590c3232SAndrew Turner #define ID_AA64PFR0_SVE_WIDTH 4 1702f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_MASK (UL(0xf) << ID_AA64PFR0_SVE_SHIFT) 170344e446a1SAndrew Turner #define ID_AA64PFR0_SVE_VAL(x) ((x) & ID_AA64PFR0_SVE_MASK) 1704f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_NONE (UL(0x0) << ID_AA64PFR0_SVE_SHIFT) 1705f31c5955SAndrew Turner #define ID_AA64PFR0_SVE_IMPL (UL(0x1) << ID_AA64PFR0_SVE_SHIFT) 1706b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_SHIFT 36 1707590c3232SAndrew Turner #define ID_AA64PFR0_SEL2_WIDTH 4 1708b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_MASK (UL(0xf) << ID_AA64PFR0_SEL2_SHIFT) 1709b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_VAL(x) ((x) & ID_AA64PFR0_SEL2_MASK) 1710b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_NONE (UL(0x0) << ID_AA64PFR0_SEL2_SHIFT) 1711b6cf94aeSMark Johnston #define ID_AA64PFR0_SEL2_IMPL (UL(0x1) << ID_AA64PFR0_SEL2_SHIFT) 1712b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_SHIFT 40 1713590c3232SAndrew Turner #define ID_AA64PFR0_MPAM_WIDTH 4 1714b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_MASK (UL(0xf) << ID_AA64PFR0_MPAM_SHIFT) 1715b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_VAL(x) ((x) & ID_AA64PFR0_MPAM_MASK) 1716b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_NONE (UL(0x0) << ID_AA64PFR0_MPAM_SHIFT) 1717b6cf94aeSMark Johnston #define ID_AA64PFR0_MPAM_IMPL (UL(0x1) << ID_AA64PFR0_MPAM_SHIFT) 1718b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_SHIFT 44 1719590c3232SAndrew Turner #define ID_AA64PFR0_AMU_WIDTH 4 1720b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_MASK (UL(0xf) << ID_AA64PFR0_AMU_SHIFT) 1721b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_VAL(x) ((x) & ID_AA64PFR0_AMU_MASK) 1722b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_NONE (UL(0x0) << ID_AA64PFR0_AMU_SHIFT) 1723b6cf94aeSMark Johnston #define ID_AA64PFR0_AMU_V1 (UL(0x1) << ID_AA64PFR0_AMU_SHIFT) 17240766dde9SAndrew Turner #define ID_AA64PFR0_AMU_V1_1 (UL(0x2) << ID_AA64PFR0_AMU_SHIFT) 1725b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_SHIFT 48 1726590c3232SAndrew Turner #define ID_AA64PFR0_DIT_WIDTH 4 1727b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_MASK (UL(0xf) << ID_AA64PFR0_DIT_SHIFT) 1728b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_VAL(x) ((x) & ID_AA64PFR0_DIT_MASK) 1729b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_NONE (UL(0x0) << ID_AA64PFR0_DIT_SHIFT) 1730b6cf94aeSMark Johnston #define ID_AA64PFR0_DIT_PSTATE (UL(0x1) << ID_AA64PFR0_DIT_SHIFT) 17310766dde9SAndrew Turner #define ID_AA64PFR0_RME_SHIFT 52 1732590c3232SAndrew Turner #define ID_AA64PFR0_RME_WIDTH 4 17330766dde9SAndrew Turner #define ID_AA64PFR0_RME_MASK (UL(0xf) << ID_AA64PFR0_RME_SHIFT) 17340766dde9SAndrew Turner #define ID_AA64PFR0_RME_VAL(x) ((x) & ID_AA64PFR0_RME_MASK) 17350766dde9SAndrew Turner #define ID_AA64PFR0_RME_NONE (UL(0x0) << ID_AA64PFR0_RME_SHIFT) 17360766dde9SAndrew Turner #define ID_AA64PFR0_RME_IMPL (UL(0x1) << ID_AA64PFR0_RME_SHIFT) 1737b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_SHIFT 56 1738590c3232SAndrew Turner #define ID_AA64PFR0_CSV2_WIDTH 4 1739b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_MASK (UL(0xf) << ID_AA64PFR0_CSV2_SHIFT) 1740b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_VAL(x) ((x) & ID_AA64PFR0_CSV2_MASK) 1741b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_NONE (UL(0x0) << ID_AA64PFR0_CSV2_SHIFT) 1742b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV2_SHIFT) 1743b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV2_SCXTNUM (UL(0x2) << ID_AA64PFR0_CSV2_SHIFT) 17440766dde9SAndrew Turner #define ID_AA64PFR0_CSV2_3 (UL(0x3) << ID_AA64PFR0_CSV2_SHIFT) 1745b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_SHIFT 60 1746590c3232SAndrew Turner #define ID_AA64PFR0_CSV3_WIDTH 4 1747b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_MASK (UL(0xf) << ID_AA64PFR0_CSV3_SHIFT) 1748b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_VAL(x) ((x) & ID_AA64PFR0_CSV3_MASK) 1749b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_NONE (UL(0x0) << ID_AA64PFR0_CSV3_SHIFT) 1750b6cf94aeSMark Johnston #define ID_AA64PFR0_CSV3_ISOLATED (UL(0x1) << ID_AA64PFR0_CSV3_SHIFT) 1751b6cf94aeSMark Johnston 1752b6cf94aeSMark Johnston /* ID_AA64PFR1_EL1 */ 175310f6680fSAndrew Turner #define ID_AA64PFR1_EL1 MRS_REG(ID_AA64PFR1_EL1) 1754d6d860c7SAndrew Turner #define ID_AA64PFR1_EL1_REG MRS_REG_ALT_NAME(ID_AA64PFR1_EL1) 17558c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_op0 3 17568c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_op1 0 17578c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_CRn 0 17588c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_CRm 4 17598c111e5bSAndrew Turner #define ID_AA64PFR1_EL1_op2 1 1760b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_SHIFT 0 1761590c3232SAndrew Turner #define ID_AA64PFR1_BT_WIDTH 4 1762b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_MASK (UL(0xf) << ID_AA64PFR1_BT_SHIFT) 1763b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_VAL(x) ((x) & ID_AA64PFR1_BT_MASK) 1764b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_NONE (UL(0x0) << ID_AA64PFR1_BT_SHIFT) 1765b6cf94aeSMark Johnston #define ID_AA64PFR1_BT_IMPL (UL(0x1) << ID_AA64PFR1_BT_SHIFT) 1766b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_SHIFT 4 1767590c3232SAndrew Turner #define ID_AA64PFR1_SSBS_WIDTH 4 1768b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_MASK (UL(0xf) << ID_AA64PFR1_SSBS_SHIFT) 1769b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_VAL(x) ((x) & ID_AA64PFR1_SSBS_MASK) 1770b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_NONE (UL(0x0) << ID_AA64PFR1_SSBS_SHIFT) 1771b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_PSTATE (UL(0x1) << ID_AA64PFR1_SSBS_SHIFT) 1772b6cf94aeSMark Johnston #define ID_AA64PFR1_SSBS_PSTATE_MSR (UL(0x2) << ID_AA64PFR1_SSBS_SHIFT) 1773b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_SHIFT 8 1774590c3232SAndrew Turner #define ID_AA64PFR1_MTE_WIDTH 4 1775b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_MASK (UL(0xf) << ID_AA64PFR1_MTE_SHIFT) 1776b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_VAL(x) ((x) & ID_AA64PFR1_MTE_MASK) 1777b6cf94aeSMark Johnston #define ID_AA64PFR1_MTE_NONE (UL(0x0) << ID_AA64PFR1_MTE_SHIFT) 17788c111e5bSAndrew Turner #define ID_AA64PFR1_MTE_MTE (UL(0x1) << ID_AA64PFR1_MTE_SHIFT) 17798c111e5bSAndrew Turner #define ID_AA64PFR1_MTE_MTE2 (UL(0x2) << ID_AA64PFR1_MTE_SHIFT) 17808c111e5bSAndrew Turner #define ID_AA64PFR1_MTE_MTE3 (UL(0x3) << ID_AA64PFR1_MTE_SHIFT) 1781b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_SHIFT 12 1782590c3232SAndrew Turner #define ID_AA64PFR1_RAS_frac_WIDTH 4 1783b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_MASK (UL(0xf) << ID_AA64PFR1_RAS_frac_SHIFT) 1784b6cf94aeSMark Johnston #define ID_AA64PFR1_RAS_frac_VAL(x) ((x) & ID_AA64PFR1_RAS_frac_MASK) 17858c111e5bSAndrew Turner #define ID_AA64PFR1_RAS_frac_p0 (UL(0x0) << ID_AA64PFR1_RAS_frac_SHIFT) 17868c111e5bSAndrew Turner #define ID_AA64PFR1_RAS_frac_p1 (UL(0x1) << ID_AA64PFR1_RAS_frac_SHIFT) 17878c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_SHIFT 16 1788590c3232SAndrew Turner #define ID_AA64PFR1_MPAM_frac_WIDTH 4 17898c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_MASK (UL(0xf) << ID_AA64PFR1_MPAM_frac_SHIFT) 17908c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_VAL(x) ((x) & ID_AA64PFR1_MPAM_frac_MASK) 17918c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_p0 (UL(0x0) << ID_AA64PFR1_MPAM_frac_SHIFT) 17928c111e5bSAndrew Turner #define ID_AA64PFR1_MPAM_frac_p1 (UL(0x1) << ID_AA64PFR1_MPAM_frac_SHIFT) 17938c111e5bSAndrew Turner #define ID_AA64PFR1_SME_SHIFT 24 1794590c3232SAndrew Turner #define ID_AA64PFR1_SME_WIDTH 4 17958c111e5bSAndrew Turner #define ID_AA64PFR1_SME_MASK (UL(0xf) << ID_AA64PFR1_SME_SHIFT) 17968c111e5bSAndrew Turner #define ID_AA64PFR1_SME_VAL(x) ((x) & ID_AA64PFR1_SME_MASK) 17978c111e5bSAndrew Turner #define ID_AA64PFR1_SME_NONE (UL(0x0) << ID_AA64PFR1_SME_SHIFT) 17988c111e5bSAndrew Turner #define ID_AA64PFR1_SME_SME (UL(0x1) << ID_AA64PFR1_SME_SHIFT) 17998c111e5bSAndrew Turner #define ID_AA64PFR1_SME_SME2 (UL(0x2) << ID_AA64PFR1_SME_SHIFT) 18008c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_SHIFT 28 1801590c3232SAndrew Turner #define ID_AA64PFR1_RNDR_trap_WIDTH 4 18028c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_MASK (UL(0xf) << ID_AA64PFR1_RNDR_trap_SHIFT) 18038c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_VAL(x) ((x) & ID_AA64PFR1_RNDR_trap_MASK) 18048c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_NONE (UL(0x0) << ID_AA64PFR1_RNDR_trap_SHIFT) 18058c111e5bSAndrew Turner #define ID_AA64PFR1_RNDR_trap_IMPL (UL(0x1) << ID_AA64PFR1_RNDR_trap_SHIFT) 18068c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_SHIFT 32 1807590c3232SAndrew Turner #define ID_AA64PFR1_CSV2_frac_WIDTH 4 18088c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_MASK (UL(0xf) << ID_AA64PFR1_CSV2_frac_SHIFT) 18098c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_VAL(x) ((x) & ID_AA64PFR1_CSV2_frac_MASK) 18108c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_p0 (UL(0x0) << ID_AA64PFR1_CSV2_frac_SHIFT) 18118c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_p1 (UL(0x1) << ID_AA64PFR1_CSV2_frac_SHIFT) 18128c111e5bSAndrew Turner #define ID_AA64PFR1_CSV2_frac_p2 (UL(0x2) << ID_AA64PFR1_CSV2_frac_SHIFT) 18138c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_SHIFT 36 1814590c3232SAndrew Turner #define ID_AA64PFR1_NMI_WIDTH 4 18158c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_MASK (UL(0xf) << ID_AA64PFR1_NMI_SHIFT) 18168c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_VAL(x) ((x) & ID_AA64PFR1_NMI_MASK) 18178c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_NONE (UL(0x0) << ID_AA64PFR1_NMI_SHIFT) 18188c111e5bSAndrew Turner #define ID_AA64PFR1_NMI_IMPL (UL(0x1) << ID_AA64PFR1_NMI_SHIFT) 1819*4daaee44SHarry Moulton #define ID_AA64PFR1_MTE_frac_SHIFT 40 1820*4daaee44SHarry Moulton #define ID_AA64PFR1_MTE_frac_WIDTH 4 1821*4daaee44SHarry Moulton #define ID_AA64PFR1_MTE_frac_MASK (UL(0xf) << ID_AA64PFR1_MTE_frac_SHIFT) 1822*4daaee44SHarry Moulton #define ID_AA64PFR1_MTE_frac_VAL(x) ((x) & ID_AA64PFR1_MTE_frac_MASK) 1823*4daaee44SHarry Moulton #define ID_AA64PFR1_MTE_frac_IMPL (UL(0x0) << ID_AA64PFR1_MTE_frac_SHIFT) 1824*4daaee44SHarry Moulton #define ID_AA64PFR1_MTE_frac_NONE (UL(0xf) << ID_AA64PFR1_MTE_frac_SHIFT) 1825*4daaee44SHarry Moulton #define ID_AA64PFR1_THE_SHIFT 48 1826*4daaee44SHarry Moulton #define ID_AA64PFR1_THE_WIDTH 4 1827*4daaee44SHarry Moulton #define ID_AA64PFR1_THE_MASK (UL(0xf) << ID_AA64PFR1_THE_SHIFT) 1828*4daaee44SHarry Moulton #define ID_AA64PFR1_THE_VAL(x) ((x) & ID_AA64PFR1_THE_MASK) 1829*4daaee44SHarry Moulton #define ID_AA64PFR1_THE_NONE (UL(0x0) << ID_AA64PFR1_THE_SHIFT) 1830*4daaee44SHarry Moulton #define ID_AA64PFR1_THE_IMPL (UL(0x1) << ID_AA64PFR1_THE_SHIFT) 1831*4daaee44SHarry Moulton #define ID_AA64PFR1_MTEX_SHIFT 52 1832*4daaee44SHarry Moulton #define ID_AA64PFR1_MTEX_WIDTH 4 1833*4daaee44SHarry Moulton #define ID_AA64PFR1_MTEX_MASK (UL(0xf) << ID_AA64PFR1_MTEX_SHIFT) 1834*4daaee44SHarry Moulton #define ID_AA64PFR1_MTEX_VAL(x) ((x) & ID_AA64PFR1_MTEX_MASK) 1835*4daaee44SHarry Moulton #define ID_AA64PFR1_MTEX_NONE (UL(0x0) << ID_AA64PFR1_MTEX_SHIFT) 1836*4daaee44SHarry Moulton #define ID_AA64PFR1_MTEX_IMPL (UL(0x1) << ID_AA64PFR1_MTEX_SHIFT) 1837*4daaee44SHarry Moulton #define ID_AA64PFR1_DF2_SHIFT 56 1838*4daaee44SHarry Moulton #define ID_AA64PFR1_DF2_WIDTH 4 1839*4daaee44SHarry Moulton #define ID_AA64PFR1_DF2_MASK (UL(0xf) << ID_AA64PFR1_DF2_SHIFT) 1840*4daaee44SHarry Moulton #define ID_AA64PFR1_DF2_VAL(x) ((x) & ID_AA64PFR1_DF2_MASK) 1841*4daaee44SHarry Moulton #define ID_AA64PFR1_DF2_NONE (UL(0x0) << ID_AA64PFR1_DF2_SHIFT) 1842*4daaee44SHarry Moulton #define ID_AA64PFR1_DF2_IMPL (UL(0x1) << ID_AA64PFR1_DF2_SHIFT) 1843*4daaee44SHarry Moulton #define ID_AA64PFR1_PFAR_SHIFT 60 1844*4daaee44SHarry Moulton #define ID_AA64PFR1_PFAR_WIDTH 4 1845*4daaee44SHarry Moulton #define ID_AA64PFR1_PFAR_MASK (UL(0xf) << ID_AA64PFR1_PFAR_SHIFT) 1846*4daaee44SHarry Moulton #define ID_AA64PFR1_PFAR_VAL(x) ((x) & ID_AA64PFR1_PFAR_MASK) 1847*4daaee44SHarry Moulton #define ID_AA64PFR1_PFAR_NONE (UL(0x0) << ID_AA64PFR1_PFAR_SHIFT) 1848*4daaee44SHarry Moulton #define ID_AA64PFR1_PFAR_IMPL (UL(0x1) << ID_AA64PFR1_PFAR_SHIFT) 1849e5acd89cSAndrew Turner 185053e1af5aSAndrew Turner /* ID_AA64PFR2_EL1 */ 185153e1af5aSAndrew Turner #define ID_AA64PFR2_EL1 MRS_REG(ID_AA64PFR2_EL1) 1852d6d860c7SAndrew Turner #define ID_AA64PFR2_EL1_REG MRS_REG_ALT_NAME(ID_AA64PFR2_EL1) 185353e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_op0 3 185453e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_op1 0 185553e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_CRn 0 185653e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_CRm 4 185753e1af5aSAndrew Turner #define ID_AA64PFR2_EL1_op2 2 185853e1af5aSAndrew Turner 1859cb91f112SAndrew Turner /* ID_AA64ZFR0_EL1 */ 1860cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1 MRS_REG(ID_AA64ZFR0_EL1) 1861cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_REG MRS_REG_ALT_NAME(ID_AA64ZFR0_EL1) 1862cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op0 3 1863cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op1 0 1864cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_CRn 0 1865cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_CRm 4 1866cb91f112SAndrew Turner #define ID_AA64ZFR0_EL1_op2 4 1867cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SHIFT 0 1868590c3232SAndrew Turner #define ID_AA64ZFR0_SVEver_WIDTH 4 1869cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_MASK (UL(0xf) << ID_AA64ZFR0_SVEver_SHIFT) 1870*4daaee44SHarry Moulton #define ID_AA64ZFR0_SVEver_VAL(x) ((x) & ID_AA64ZFR0_SVEver_MASK) 1871cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE1 (UL(0x0) << ID_AA64ZFR0_SVEver_SHIFT) 1872cb91f112SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE2 (UL(0x1) << ID_AA64ZFR0_SVEver_SHIFT) 1873205c1007SAndrew Turner #define ID_AA64ZFR0_SVEver_SVE2P1 (UL(0x2) << ID_AA64ZFR0_SVEver_SHIFT) 1874cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_SHIFT 4 1875590c3232SAndrew Turner #define ID_AA64ZFR0_AES_WIDTH 4 1876cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_MASK (UL(0xf) << ID_AA64ZFR0_AES_SHIFT) 1877*4daaee44SHarry Moulton #define ID_AA64ZFR0_AES_VAL(x) ((x) & ID_AA64ZFR0_AES_MASK) 1878cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_NONE (UL(0x0) << ID_AA64ZFR0_AES_SHIFT) 1879cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_BASE (UL(0x1) << ID_AA64ZFR0_AES_SHIFT) 1880cb91f112SAndrew Turner #define ID_AA64ZFR0_AES_PMULL (UL(0x2) << ID_AA64ZFR0_AES_SHIFT) 1881cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_SHIFT 16 1882590c3232SAndrew Turner #define ID_AA64ZFR0_BitPerm_WIDTH 4 1883cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_MASK (UL(0xf) << ID_AA64ZFR0_BitPerm_SHIFT) 1884*4daaee44SHarry Moulton #define ID_AA64ZFR0_BitPerm_VAL(x) ((x) & ID_AA64ZFR0_BitPerm_MASK) 1885cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_NONE (UL(0x0) << ID_AA64ZFR0_BitPerm_SHIFT) 1886cb91f112SAndrew Turner #define ID_AA64ZFR0_BitPerm_IMPL (UL(0x1) << ID_AA64ZFR0_BitPerm_SHIFT) 1887cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_SHIFT 20 1888590c3232SAndrew Turner #define ID_AA64ZFR0_BF16_WIDTH 4 1889cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_MASK (UL(0xf) << ID_AA64ZFR0_BF16_SHIFT) 1890*4daaee44SHarry Moulton #define ID_AA64ZFR0_BF16_VAL(x) ((x) & ID_AA64ZFR0_BF16_MASK) 1891cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_NONE (UL(0x0) << ID_AA64ZFR0_BF16_SHIFT) 1892cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_BASE (UL(0x1) << ID_AA64ZFR0_BF16_SHIFT) 1893cb91f112SAndrew Turner #define ID_AA64ZFR0_BF16_EBF (UL(0x1) << ID_AA64ZFR0_BF16_SHIFT) 1894cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_SHIFT 32 1895590c3232SAndrew Turner #define ID_AA64ZFR0_SHA3_WIDTH 4 1896cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_MASK (UL(0xf) << ID_AA64ZFR0_SHA3_SHIFT) 1897*4daaee44SHarry Moulton #define ID_AA64ZFR0_SHA3_VAL(x) ((x) & ID_AA64ZFR0_SHA3_MASK) 1898cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_NONE (UL(0x0) << ID_AA64ZFR0_SHA3_SHIFT) 1899cb91f112SAndrew Turner #define ID_AA64ZFR0_SHA3_IMPL (UL(0x1) << ID_AA64ZFR0_SHA3_SHIFT) 1900cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_SHIFT 40 1901590c3232SAndrew Turner #define ID_AA64ZFR0_SM4_WIDTH 4 1902cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_MASK (UL(0xf) << ID_AA64ZFR0_SM4_SHIFT) 1903*4daaee44SHarry Moulton #define ID_AA64ZFR0_SM4_VAL(x) ((x) & ID_AA64ZFR0_SM4_MASK) 1904cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_NONE (UL(0x0) << ID_AA64ZFR0_SM4_SHIFT) 1905cb91f112SAndrew Turner #define ID_AA64ZFR0_SM4_IMPL (UL(0x1) << ID_AA64ZFR0_SM4_SHIFT) 1906cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_SHIFT 44 1907590c3232SAndrew Turner #define ID_AA64ZFR0_I8MM_WIDTH 4 1908cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_MASK (UL(0xf) << ID_AA64ZFR0_I8MM_SHIFT) 1909*4daaee44SHarry Moulton #define ID_AA64ZFR0_I8MM_VAL(x) ((x) & ID_AA64ZFR0_I8MM_MASK) 1910cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_NONE (UL(0x0) << ID_AA64ZFR0_I8MM_SHIFT) 1911cb91f112SAndrew Turner #define ID_AA64ZFR0_I8MM_IMPL (UL(0x1) << ID_AA64ZFR0_I8MM_SHIFT) 1912cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_SHIFT 52 1913590c3232SAndrew Turner #define ID_AA64ZFR0_F32MM_WIDTH 4 1914cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_MASK (UL(0xf) << ID_AA64ZFR0_F32MM_SHIFT) 1915*4daaee44SHarry Moulton #define ID_AA64ZFR0_F32MM_VAL(x) ((x) & ID_AA64ZFR0_F32MM_MASK) 1916cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_NONE (UL(0x0) << ID_AA64ZFR0_F32MM_SHIFT) 1917cb91f112SAndrew Turner #define ID_AA64ZFR0_F32MM_IMPL (UL(0x1) << ID_AA64ZFR0_F32MM_SHIFT) 1918cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_SHIFT 56 1919590c3232SAndrew Turner #define ID_AA64ZFR0_F64MM_WIDTH 4 1920cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_MASK (UL(0xf) << ID_AA64ZFR0_F64MM_SHIFT) 1921*4daaee44SHarry Moulton #define ID_AA64ZFR0_F64MM_VAL(x) ((x) & ID_AA64ZFR0_F64MM_MASK) 1922cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_NONE (UL(0x0) << ID_AA64ZFR0_F64MM_SHIFT) 1923cb91f112SAndrew Turner #define ID_AA64ZFR0_F64MM_IMPL (UL(0x1) << ID_AA64ZFR0_F64MM_SHIFT) 1924cb91f112SAndrew Turner 1925bbe80bffSPeter Grehan /* ID_ISAR5_EL1 */ 192610f6680fSAndrew Turner #define ID_ISAR5_EL1 MRS_REG(ID_ISAR5_EL1) 192710f6680fSAndrew Turner #define ID_ISAR5_EL1_op0 0x3 192810f6680fSAndrew Turner #define ID_ISAR5_EL1_op1 0x0 192910f6680fSAndrew Turner #define ID_ISAR5_EL1_CRn 0x0 193010f6680fSAndrew Turner #define ID_ISAR5_EL1_CRm 0x2 193110f6680fSAndrew Turner #define ID_ISAR5_EL1_op2 0x5 1932bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_SHIFT 0 1933590c3232SAndrew Turner #define ID_ISAR5_SEVL_WIDTH 4 1934bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_MASK (UL(0xf) << ID_ISAR5_SEVL_SHIFT) 1935bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_VAL(x) ((x) & ID_ISAR5_SEVL_MASK) 1936bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_NOP (UL(0x0) << ID_ISAR5_SEVL_SHIFT) 1937bbe80bffSPeter Grehan #define ID_ISAR5_SEVL_IMPL (UL(0x1) << ID_ISAR5_SEVL_SHIFT) 1938bbe80bffSPeter Grehan #define ID_ISAR5_AES_SHIFT 4 1939590c3232SAndrew Turner #define ID_ISAR5_AES_WIDTH 4 1940bbe80bffSPeter Grehan #define ID_ISAR5_AES_MASK (UL(0xf) << ID_ISAR5_AES_SHIFT) 1941bbe80bffSPeter Grehan #define ID_ISAR5_AES_VAL(x) ((x) & ID_ISAR5_AES_MASK) 1942bbe80bffSPeter Grehan #define ID_ISAR5_AES_NONE (UL(0x0) << ID_ISAR5_AES_SHIFT) 1943bbe80bffSPeter Grehan #define ID_ISAR5_AES_BASE (UL(0x1) << ID_ISAR5_AES_SHIFT) 1944bbe80bffSPeter Grehan #define ID_ISAR5_AES_VMULL (UL(0x2) << ID_ISAR5_AES_SHIFT) 1945bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_SHIFT 8 1946590c3232SAndrew Turner #define ID_ISAR5_SHA1_WIDTH 4 1947bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_MASK (UL(0xf) << ID_ISAR5_SHA1_SHIFT) 1948bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_VAL(x) ((x) & ID_ISAR5_SHA1_MASK) 1949bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_NONE (UL(0x0) << ID_ISAR5_SHA1_SHIFT) 1950bbe80bffSPeter Grehan #define ID_ISAR5_SHA1_IMPL (UL(0x1) << ID_ISAR5_SHA1_SHIFT) 1951bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_SHIFT 12 1952590c3232SAndrew Turner #define ID_ISAR5_SHA2_WIDTH 4 1953bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_MASK (UL(0xf) << ID_ISAR5_SHA2_SHIFT) 1954bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_VAL(x) ((x) & ID_ISAR5_SHA2_MASK) 1955bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_NONE (UL(0x0) << ID_ISAR5_SHA2_SHIFT) 1956bbe80bffSPeter Grehan #define ID_ISAR5_SHA2_IMPL (UL(0x1) << ID_ISAR5_SHA2_SHIFT) 1957bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_SHIFT 16 1958590c3232SAndrew Turner #define ID_ISAR5_CRC32_WIDTH 4 1959bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_MASK (UL(0xf) << ID_ISAR5_CRC32_SHIFT) 1960bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_VAL(x) ((x) & ID_ISAR5_CRC32_MASK) 1961bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_NONE (UL(0x0) << ID_ISAR5_CRC32_SHIFT) 1962bbe80bffSPeter Grehan #define ID_ISAR5_CRC32_IMPL (UL(0x1) << ID_ISAR5_CRC32_SHIFT) 1963bbe80bffSPeter Grehan #define ID_ISAR5_RDM_SHIFT 24 1964590c3232SAndrew Turner #define ID_ISAR5_RDM_WIDTH 4 1965bbe80bffSPeter Grehan #define ID_ISAR5_RDM_MASK (UL(0xf) << ID_ISAR5_RDM_SHIFT) 1966bbe80bffSPeter Grehan #define ID_ISAR5_RDM_VAL(x) ((x) & ID_ISAR5_RDM_MASK) 1967bbe80bffSPeter Grehan #define ID_ISAR5_RDM_NONE (UL(0x0) << ID_ISAR5_RDM_SHIFT) 1968bbe80bffSPeter Grehan #define ID_ISAR5_RDM_IMPL (UL(0x1) << ID_ISAR5_RDM_SHIFT) 1969bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_SHIFT 28 1970590c3232SAndrew Turner #define ID_ISAR5_VCMA_WIDTH 4 1971bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_MASK (UL(0xf) << ID_ISAR5_VCMA_SHIFT) 1972bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_VAL(x) ((x) & ID_ISAR5_VCMA_MASK) 1973bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_NONE (UL(0x0) << ID_ISAR5_VCMA_SHIFT) 1974bbe80bffSPeter Grehan #define ID_ISAR5_VCMA_IMPL (UL(0x1) << ID_ISAR5_VCMA_SHIFT) 1975bbe80bffSPeter Grehan 19762abeef73SAndrew Turner /* MAIR_EL1 - Memory Attribute Indirection Register */ 197747361851SAndrew Turner #define MAIR_EL1_REG MRS_REG_ALT_NAME(MAIR_EL1) 197847361851SAndrew Turner #define MAIR_EL1_op0 3 197947361851SAndrew Turner #define MAIR_EL1_op1 0 198047361851SAndrew Turner #define MAIR_EL1_CRn 10 198147361851SAndrew Turner #define MAIR_EL1_CRm 2 198247361851SAndrew Turner #define MAIR_EL1_op2 0 1983a671f96dSAndrew Turner #define MAIR_ATTR_MASK(idx) (UL(0xff) << ((n)* 8)) 19842abeef73SAndrew Turner #define MAIR_ATTR(attr, idx) ((attr) << ((idx) * 8)) 1985a671f96dSAndrew Turner #define MAIR_DEVICE_nGnRnE UL(0x00) 1986a671f96dSAndrew Turner #define MAIR_DEVICE_nGnRE UL(0x04) 1987a671f96dSAndrew Turner #define MAIR_NORMAL_NC UL(0x44) 1988a671f96dSAndrew Turner #define MAIR_NORMAL_WT UL(0xbb) 1989a671f96dSAndrew Turner #define MAIR_NORMAL_WB UL(0xff) 19902abeef73SAndrew Turner 199147361851SAndrew Turner /* MAIR_EL12 */ 199247361851SAndrew Turner #define MAIR_EL12_REG MRS_REG_ALT_NAME(MAIR_EL12) 199347361851SAndrew Turner #define MAIR_EL12_op0 3 199447361851SAndrew Turner #define MAIR_EL12_op1 5 199547361851SAndrew Turner #define MAIR_EL12_CRn 10 199647361851SAndrew Turner #define MAIR_EL12_CRm 2 199747361851SAndrew Turner #define MAIR_EL12_op2 0 199847361851SAndrew Turner 19994dc81560SAndrew Turner /* MDCCINT_EL1 */ 20004dc81560SAndrew Turner #define MDCCINT_EL1 MRS_REG(MDCCINT_EL1) 20014dc81560SAndrew Turner #define MDCCINT_EL1_op0 2 20024dc81560SAndrew Turner #define MDCCINT_EL1_op1 0 20034dc81560SAndrew Turner #define MDCCINT_EL1_CRn 0 20044dc81560SAndrew Turner #define MDCCINT_EL1_CRm 2 20054dc81560SAndrew Turner #define MDCCINT_EL1_op2 0 20064dc81560SAndrew Turner 20074dc81560SAndrew Turner /* MDCCSR_EL0 */ 20084dc81560SAndrew Turner #define MDCCSR_EL0 MRS_REG(MDCCSR_EL0) 20094dc81560SAndrew Turner #define MDCCSR_EL0_op0 2 20104dc81560SAndrew Turner #define MDCCSR_EL0_op1 3 20114dc81560SAndrew Turner #define MDCCSR_EL0_CRn 0 20124dc81560SAndrew Turner #define MDCCSR_EL0_CRm 1 20134dc81560SAndrew Turner #define MDCCSR_EL0_op2 0 20144dc81560SAndrew Turner 20152abeef73SAndrew Turner /* MDSCR_EL1 - Monitor Debug System Control Register */ 20164dc81560SAndrew Turner #define MDSCR_EL1 MRS_REG(MDSCR_EL1) 20174dc81560SAndrew Turner #define MDSCR_EL1_op0 2 20184dc81560SAndrew Turner #define MDSCR_EL1_op1 0 20194dc81560SAndrew Turner #define MDSCR_EL1_CRn 0 20204dc81560SAndrew Turner #define MDSCR_EL1_CRm 2 20214dc81560SAndrew Turner #define MDSCR_EL1_op2 2 20222abeef73SAndrew Turner #define MDSCR_SS_SHIFT 0 20232abeef73SAndrew Turner #define MDSCR_SS (UL(0x1) << MDSCR_SS_SHIFT) 20242abeef73SAndrew Turner #define MDSCR_KDE_SHIFT 13 20252abeef73SAndrew Turner #define MDSCR_KDE (UL(0x1) << MDSCR_KDE_SHIFT) 20262abeef73SAndrew Turner #define MDSCR_MDE_SHIFT 15 20272abeef73SAndrew Turner #define MDSCR_MDE (UL(0x1) << MDSCR_MDE_SHIFT) 20282abeef73SAndrew Turner 2029178747a1SAndrew Turner /* MIDR_EL1 - Main ID Register */ 2030178747a1SAndrew Turner #define MIDR_EL1 MRS_REG(MIDR_EL1) 2031178747a1SAndrew Turner #define MIDR_EL1_op0 3 2032178747a1SAndrew Turner #define MIDR_EL1_op1 0 2033178747a1SAndrew Turner #define MIDR_EL1_CRn 0 2034178747a1SAndrew Turner #define MIDR_EL1_CRm 0 2035178747a1SAndrew Turner #define MIDR_EL1_op2 0 2036178747a1SAndrew Turner 2037419f8fc7SAndrew Turner /* MPIDR_EL1 - Multiprocessor Affinity Register */ 2038419f8fc7SAndrew Turner #define MPIDR_EL1 MRS_REG(MPIDR_EL1) 2039419f8fc7SAndrew Turner #define MPIDR_EL1_op0 3 2040419f8fc7SAndrew Turner #define MPIDR_EL1_op1 0 2041419f8fc7SAndrew Turner #define MPIDR_EL1_CRn 0 2042419f8fc7SAndrew Turner #define MPIDR_EL1_CRm 0 2043419f8fc7SAndrew Turner #define MPIDR_EL1_op2 5 2044419f8fc7SAndrew Turner #define MPIDR_AFF0_SHIFT 0 2045419f8fc7SAndrew Turner #define MPIDR_AFF0_MASK (UL(0xff) << MPIDR_AFF0_SHIFT) 2046419f8fc7SAndrew Turner #define MPIDR_AFF0_VAL(x) ((x) & MPIDR_AFF0_MASK) 2047419f8fc7SAndrew Turner #define MPIDR_AFF1_SHIFT 8 2048419f8fc7SAndrew Turner #define MPIDR_AFF1_MASK (UL(0xff) << MPIDR_AFF1_SHIFT) 2049419f8fc7SAndrew Turner #define MPIDR_AFF1_VAL(x) ((x) & MPIDR_AFF1_MASK) 2050419f8fc7SAndrew Turner #define MPIDR_AFF2_SHIFT 16 2051419f8fc7SAndrew Turner #define MPIDR_AFF2_MASK (UL(0xff) << MPIDR_AFF2_SHIFT) 2052419f8fc7SAndrew Turner #define MPIDR_AFF2_VAL(x) ((x) & MPIDR_AFF2_MASK) 2053419f8fc7SAndrew Turner #define MPIDR_MT_SHIFT 24 2054419f8fc7SAndrew Turner #define MPIDR_MT_MASK (UL(0x1) << MPIDR_MT_SHIFT) 2055419f8fc7SAndrew Turner #define MPIDR_U_SHIFT 30 2056419f8fc7SAndrew Turner #define MPIDR_U_MASK (UL(0x1) << MPIDR_U_SHIFT) 2057419f8fc7SAndrew Turner #define MPIDR_AFF3_SHIFT 32 2058419f8fc7SAndrew Turner #define MPIDR_AFF3_MASK (UL(0xff) << MPIDR_AFF3_SHIFT) 2059419f8fc7SAndrew Turner #define MPIDR_AFF3_VAL(x) ((x) & MPIDR_AFF3_MASK) 2060419f8fc7SAndrew Turner 20612abeef73SAndrew Turner /* MVFR0_EL1 */ 20622abeef73SAndrew Turner #define MVFR0_EL1 MRS_REG(MVFR0_EL1) 20632abeef73SAndrew Turner #define MVFR0_EL1_op0 0x3 20642abeef73SAndrew Turner #define MVFR0_EL1_op1 0x0 20652abeef73SAndrew Turner #define MVFR0_EL1_CRn 0x0 20662abeef73SAndrew Turner #define MVFR0_EL1_CRm 0x3 20672abeef73SAndrew Turner #define MVFR0_EL1_op2 0x0 20682abeef73SAndrew Turner #define MVFR0_SIMDReg_SHIFT 0 2069590c3232SAndrew Turner #define MVFR0_SIMDReg_WIDTH 4 20702abeef73SAndrew Turner #define MVFR0_SIMDReg_MASK (UL(0xf) << MVFR0_SIMDReg_SHIFT) 20712abeef73SAndrew Turner #define MVFR0_SIMDReg_VAL(x) ((x) & MVFR0_SIMDReg_MASK) 20722abeef73SAndrew Turner #define MVFR0_SIMDReg_NONE (UL(0x0) << MVFR0_SIMDReg_SHIFT) 20732abeef73SAndrew Turner #define MVFR0_SIMDReg_FP (UL(0x1) << MVFR0_SIMDReg_SHIFT) 20742abeef73SAndrew Turner #define MVFR0_SIMDReg_AdvSIMD (UL(0x2) << MVFR0_SIMDReg_SHIFT) 20752abeef73SAndrew Turner #define MVFR0_FPSP_SHIFT 4 2076590c3232SAndrew Turner #define MVFR0_FPSP_WIDTH 4 20772abeef73SAndrew Turner #define MVFR0_FPSP_MASK (UL(0xf) << MVFR0_FPSP_SHIFT) 20782abeef73SAndrew Turner #define MVFR0_FPSP_VAL(x) ((x) & MVFR0_FPSP_MASK) 20792abeef73SAndrew Turner #define MVFR0_FPSP_NONE (UL(0x0) << MVFR0_FPSP_SHIFT) 20802abeef73SAndrew Turner #define MVFR0_FPSP_VFP_v2 (UL(0x1) << MVFR0_FPSP_SHIFT) 20812abeef73SAndrew Turner #define MVFR0_FPSP_VFP_v3_v4 (UL(0x2) << MVFR0_FPSP_SHIFT) 20822abeef73SAndrew Turner #define MVFR0_FPDP_SHIFT 8 2083590c3232SAndrew Turner #define MVFR0_FPDP_WIDTH 4 20842abeef73SAndrew Turner #define MVFR0_FPDP_MASK (UL(0xf) << MVFR0_FPDP_SHIFT) 20852abeef73SAndrew Turner #define MVFR0_FPDP_VAL(x) ((x) & MVFR0_FPDP_MASK) 20862abeef73SAndrew Turner #define MVFR0_FPDP_NONE (UL(0x0) << MVFR0_FPDP_SHIFT) 20872abeef73SAndrew Turner #define MVFR0_FPDP_VFP_v2 (UL(0x1) << MVFR0_FPDP_SHIFT) 20882abeef73SAndrew Turner #define MVFR0_FPDP_VFP_v3_v4 (UL(0x2) << MVFR0_FPDP_SHIFT) 20892abeef73SAndrew Turner #define MVFR0_FPTrap_SHIFT 12 2090590c3232SAndrew Turner #define MVFR0_FPTrap_WIDTH 4 20912abeef73SAndrew Turner #define MVFR0_FPTrap_MASK (UL(0xf) << MVFR0_FPTrap_SHIFT) 20922abeef73SAndrew Turner #define MVFR0_FPTrap_VAL(x) ((x) & MVFR0_FPTrap_MASK) 20932abeef73SAndrew Turner #define MVFR0_FPTrap_NONE (UL(0x0) << MVFR0_FPTrap_SHIFT) 20942abeef73SAndrew Turner #define MVFR0_FPTrap_IMPL (UL(0x1) << MVFR0_FPTrap_SHIFT) 20952abeef73SAndrew Turner #define MVFR0_FPDivide_SHIFT 16 2096590c3232SAndrew Turner #define MVFR0_FPDivide_WIDTH 4 20972abeef73SAndrew Turner #define MVFR0_FPDivide_MASK (UL(0xf) << MVFR0_FPDivide_SHIFT) 20982abeef73SAndrew Turner #define MVFR0_FPDivide_VAL(x) ((x) & MVFR0_FPDivide_MASK) 20992abeef73SAndrew Turner #define MVFR0_FPDivide_NONE (UL(0x0) << MVFR0_FPDivide_SHIFT) 21002abeef73SAndrew Turner #define MVFR0_FPDivide_IMPL (UL(0x1) << MVFR0_FPDivide_SHIFT) 21012abeef73SAndrew Turner #define MVFR0_FPSqrt_SHIFT 20 2102590c3232SAndrew Turner #define MVFR0_FPSqrt_WIDTH 4 21032abeef73SAndrew Turner #define MVFR0_FPSqrt_MASK (UL(0xf) << MVFR0_FPSqrt_SHIFT) 21042abeef73SAndrew Turner #define MVFR0_FPSqrt_VAL(x) ((x) & MVFR0_FPSqrt_MASK) 21052abeef73SAndrew Turner #define MVFR0_FPSqrt_NONE (UL(0x0) << MVFR0_FPSqrt_SHIFT) 21062abeef73SAndrew Turner #define MVFR0_FPSqrt_IMPL (UL(0x1) << MVFR0_FPSqrt_SHIFT) 21072abeef73SAndrew Turner #define MVFR0_FPShVec_SHIFT 24 2108590c3232SAndrew Turner #define MVFR0_FPShVec_WIDTH 4 21092abeef73SAndrew Turner #define MVFR0_FPShVec_MASK (UL(0xf) << MVFR0_FPShVec_SHIFT) 21102abeef73SAndrew Turner #define MVFR0_FPShVec_VAL(x) ((x) & MVFR0_FPShVec_MASK) 21112abeef73SAndrew Turner #define MVFR0_FPShVec_NONE (UL(0x0) << MVFR0_FPShVec_SHIFT) 21122abeef73SAndrew Turner #define MVFR0_FPShVec_IMPL (UL(0x1) << MVFR0_FPShVec_SHIFT) 21132abeef73SAndrew Turner #define MVFR0_FPRound_SHIFT 28 2114590c3232SAndrew Turner #define MVFR0_FPRound_WIDTH 4 21152abeef73SAndrew Turner #define MVFR0_FPRound_MASK (UL(0xf) << MVFR0_FPRound_SHIFT) 21162abeef73SAndrew Turner #define MVFR0_FPRound_VAL(x) ((x) & MVFR0_FPRound_MASK) 21172abeef73SAndrew Turner #define MVFR0_FPRound_NONE (UL(0x0) << MVFR0_FPRound_SHIFT) 21182abeef73SAndrew Turner #define MVFR0_FPRound_IMPL (UL(0x1) << MVFR0_FPRound_SHIFT) 21192abeef73SAndrew Turner 21202abeef73SAndrew Turner /* MVFR1_EL1 */ 21212abeef73SAndrew Turner #define MVFR1_EL1 MRS_REG(MVFR1_EL1) 21222abeef73SAndrew Turner #define MVFR1_EL1_op0 0x3 21232abeef73SAndrew Turner #define MVFR1_EL1_op1 0x0 21242abeef73SAndrew Turner #define MVFR1_EL1_CRn 0x0 21252abeef73SAndrew Turner #define MVFR1_EL1_CRm 0x3 21262abeef73SAndrew Turner #define MVFR1_EL1_op2 0x1 21272abeef73SAndrew Turner #define MVFR1_FPFtZ_SHIFT 0 2128590c3232SAndrew Turner #define MVFR1_FPFtZ_WIDTH 4 21292abeef73SAndrew Turner #define MVFR1_FPFtZ_MASK (UL(0xf) << MVFR1_FPFtZ_SHIFT) 21302abeef73SAndrew Turner #define MVFR1_FPFtZ_VAL(x) ((x) & MVFR1_FPFtZ_MASK) 21312abeef73SAndrew Turner #define MVFR1_FPFtZ_NONE (UL(0x0) << MVFR1_FPFtZ_SHIFT) 21322abeef73SAndrew Turner #define MVFR1_FPFtZ_IMPL (UL(0x1) << MVFR1_FPFtZ_SHIFT) 21332abeef73SAndrew Turner #define MVFR1_FPDNaN_SHIFT 4 2134590c3232SAndrew Turner #define MVFR1_FPDNaN_WIDTH 4 21352abeef73SAndrew Turner #define MVFR1_FPDNaN_MASK (UL(0xf) << MVFR1_FPDNaN_SHIFT) 21362abeef73SAndrew Turner #define MVFR1_FPDNaN_VAL(x) ((x) & MVFR1_FPDNaN_MASK) 21372abeef73SAndrew Turner #define MVFR1_FPDNaN_NONE (UL(0x0) << MVFR1_FPDNaN_SHIFT) 21382abeef73SAndrew Turner #define MVFR1_FPDNaN_IMPL (UL(0x1) << MVFR1_FPDNaN_SHIFT) 21392abeef73SAndrew Turner #define MVFR1_SIMDLS_SHIFT 8 2140590c3232SAndrew Turner #define MVFR1_SIMDLS_WIDTH 4 21412abeef73SAndrew Turner #define MVFR1_SIMDLS_MASK (UL(0xf) << MVFR1_SIMDLS_SHIFT) 21422abeef73SAndrew Turner #define MVFR1_SIMDLS_VAL(x) ((x) & MVFR1_SIMDLS_MASK) 21432abeef73SAndrew Turner #define MVFR1_SIMDLS_NONE (UL(0x0) << MVFR1_SIMDLS_SHIFT) 21442abeef73SAndrew Turner #define MVFR1_SIMDLS_IMPL (UL(0x1) << MVFR1_SIMDLS_SHIFT) 21452abeef73SAndrew Turner #define MVFR1_SIMDInt_SHIFT 12 2146590c3232SAndrew Turner #define MVFR1_SIMDInt_WIDTH 4 21472abeef73SAndrew Turner #define MVFR1_SIMDInt_MASK (UL(0xf) << MVFR1_SIMDInt_SHIFT) 21482abeef73SAndrew Turner #define MVFR1_SIMDInt_VAL(x) ((x) & MVFR1_SIMDInt_MASK) 21492abeef73SAndrew Turner #define MVFR1_SIMDInt_NONE (UL(0x0) << MVFR1_SIMDInt_SHIFT) 21502abeef73SAndrew Turner #define MVFR1_SIMDInt_IMPL (UL(0x1) << MVFR1_SIMDInt_SHIFT) 21512abeef73SAndrew Turner #define MVFR1_SIMDSP_SHIFT 16 2152590c3232SAndrew Turner #define MVFR1_SIMDSP_WIDTH 4 21532abeef73SAndrew Turner #define MVFR1_SIMDSP_MASK (UL(0xf) << MVFR1_SIMDSP_SHIFT) 21542abeef73SAndrew Turner #define MVFR1_SIMDSP_VAL(x) ((x) & MVFR1_SIMDSP_MASK) 21552abeef73SAndrew Turner #define MVFR1_SIMDSP_NONE (UL(0x0) << MVFR1_SIMDSP_SHIFT) 21562abeef73SAndrew Turner #define MVFR1_SIMDSP_IMPL (UL(0x1) << MVFR1_SIMDSP_SHIFT) 21572abeef73SAndrew Turner #define MVFR1_SIMDHP_SHIFT 20 2158590c3232SAndrew Turner #define MVFR1_SIMDHP_WIDTH 4 21592abeef73SAndrew Turner #define MVFR1_SIMDHP_MASK (UL(0xf) << MVFR1_SIMDHP_SHIFT) 21602abeef73SAndrew Turner #define MVFR1_SIMDHP_VAL(x) ((x) & MVFR1_SIMDHP_MASK) 21612abeef73SAndrew Turner #define MVFR1_SIMDHP_NONE (UL(0x0) << MVFR1_SIMDHP_SHIFT) 21622abeef73SAndrew Turner #define MVFR1_SIMDHP_CONV_SP (UL(0x1) << MVFR1_SIMDHP_SHIFT) 21632abeef73SAndrew Turner #define MVFR1_SIMDHP_ARITH (UL(0x2) << MVFR1_SIMDHP_SHIFT) 21642abeef73SAndrew Turner #define MVFR1_FPHP_SHIFT 24 2165590c3232SAndrew Turner #define MVFR1_FPHP_WIDTH 4 21662abeef73SAndrew Turner #define MVFR1_FPHP_MASK (UL(0xf) << MVFR1_FPHP_SHIFT) 21672abeef73SAndrew Turner #define MVFR1_FPHP_VAL(x) ((x) & MVFR1_FPHP_MASK) 21682abeef73SAndrew Turner #define MVFR1_FPHP_NONE (UL(0x0) << MVFR1_FPHP_SHIFT) 21692abeef73SAndrew Turner #define MVFR1_FPHP_CONV_SP (UL(0x1) << MVFR1_FPHP_SHIFT) 21702abeef73SAndrew Turner #define MVFR1_FPHP_CONV_DP (UL(0x2) << MVFR1_FPHP_SHIFT) 21712abeef73SAndrew Turner #define MVFR1_FPHP_ARITH (UL(0x3) << MVFR1_FPHP_SHIFT) 21722abeef73SAndrew Turner #define MVFR1_SIMDFMAC_SHIFT 28 2173590c3232SAndrew Turner #define MVFR1_SIMDFMAC_WIDTH 4 21742abeef73SAndrew Turner #define MVFR1_SIMDFMAC_MASK (UL(0xf) << MVFR1_SIMDFMAC_SHIFT) 21752abeef73SAndrew Turner #define MVFR1_SIMDFMAC_VAL(x) ((x) & MVFR1_SIMDFMAC_MASK) 21762abeef73SAndrew Turner #define MVFR1_SIMDFMAC_NONE (UL(0x0) << MVFR1_SIMDFMAC_SHIFT) 21772abeef73SAndrew Turner #define MVFR1_SIMDFMAC_IMPL (UL(0x1) << MVFR1_SIMDFMAC_SHIFT) 21782abeef73SAndrew Turner 21794dc81560SAndrew Turner /* OSDLR_EL1 */ 21804dc81560SAndrew Turner #define OSDLR_EL1 MRS_REG(OSDLR_EL1) 21814dc81560SAndrew Turner #define OSDLR_EL1_op0 2 21824dc81560SAndrew Turner #define OSDLR_EL1_op1 0 21834dc81560SAndrew Turner #define OSDLR_EL1_CRn 1 21844dc81560SAndrew Turner #define OSDLR_EL1_CRm 3 21854dc81560SAndrew Turner #define OSDLR_EL1_op2 4 21864dc81560SAndrew Turner 21874dc81560SAndrew Turner /* OSLAR_EL1 */ 21884dc81560SAndrew Turner #define OSLAR_EL1 MRS_REG(OSLAR_EL1) 21894dc81560SAndrew Turner #define OSLAR_EL1_op0 2 21904dc81560SAndrew Turner #define OSLAR_EL1_op1 0 21914dc81560SAndrew Turner #define OSLAR_EL1_CRn 1 21924dc81560SAndrew Turner #define OSLAR_EL1_CRm 0 21934dc81560SAndrew Turner #define OSLAR_EL1_op2 4 21944dc81560SAndrew Turner 21954dc81560SAndrew Turner /* OSLSR_EL1 */ 21964dc81560SAndrew Turner #define OSLSR_EL1 MRS_REG(OSLSR_EL1) 21974dc81560SAndrew Turner #define OSLSR_EL1_op0 2 21984dc81560SAndrew Turner #define OSLSR_EL1_op1 0 21994dc81560SAndrew Turner #define OSLSR_EL1_CRn 1 22004dc81560SAndrew Turner #define OSLSR_EL1_CRm 1 22014dc81560SAndrew Turner #define OSLSR_EL1_op2 4 22024dc81560SAndrew Turner 22032abeef73SAndrew Turner /* PAR_EL1 - Physical Address Register */ 22042abeef73SAndrew Turner #define PAR_F_SHIFT 0 22052abeef73SAndrew Turner #define PAR_F (0x1 << PAR_F_SHIFT) 22062abeef73SAndrew Turner #define PAR_SUCCESS(x) (((x) & PAR_F) == 0) 22072abeef73SAndrew Turner /* When PAR_F == 0 (success) */ 22082abeef73SAndrew Turner #define PAR_LOW_MASK 0xfff 22092abeef73SAndrew Turner #define PAR_SH_SHIFT 7 22102abeef73SAndrew Turner #define PAR_SH_MASK (0x3 << PAR_SH_SHIFT) 22112abeef73SAndrew Turner #define PAR_NS_SHIFT 9 22122abeef73SAndrew Turner #define PAR_NS_MASK (0x3 << PAR_NS_SHIFT) 22132abeef73SAndrew Turner #define PAR_PA_SHIFT 12 22143041b636SAndrew Turner #define PAR_PA_MASK 0x000ffffffffff000 22152abeef73SAndrew Turner #define PAR_ATTR_SHIFT 56 22162abeef73SAndrew Turner #define PAR_ATTR_MASK (0xff << PAR_ATTR_SHIFT) 22172abeef73SAndrew Turner /* When PAR_F == 1 (aborted) */ 22182abeef73SAndrew Turner #define PAR_FST_SHIFT 1 22192abeef73SAndrew Turner #define PAR_FST_MASK (0x3f << PAR_FST_SHIFT) 22202abeef73SAndrew Turner #define PAR_PTW_SHIFT 8 22212abeef73SAndrew Turner #define PAR_PTW_MASK (0x1 << PAR_PTW_SHIFT) 22222abeef73SAndrew Turner #define PAR_S_SHIFT 9 22232abeef73SAndrew Turner #define PAR_S_MASK (0x1 << PAR_S_SHIFT) 22242abeef73SAndrew Turner 22252ad19997SAndrew Turner /* PMBIDR_EL1 */ 22262ad19997SAndrew Turner #define PMBIDR_EL1 MRS_REG(PMBIDR_EL1) 2227f7bdaa10SZachary Leaf #define PMBIDR_EL1_REG MRS_REG_ALT_NAME(PMBIDR_EL1) 2228f7bdaa10SZachary Leaf #define PMBIDR_EL1_op0 3 2229f7bdaa10SZachary Leaf #define PMBIDR_EL1_op1 0 2230f7bdaa10SZachary Leaf #define PMBIDR_EL1_CRn 9 2231f7bdaa10SZachary Leaf #define PMBIDR_EL1_CRm 10 2232f7bdaa10SZachary Leaf #define PMBIDR_EL1_op2 7 22332ad19997SAndrew Turner #define PMBIDR_Align_SHIFT 0 22342ad19997SAndrew Turner #define PMBIDR_Align_MASK (UL(0xf) << PMBIDR_Align_SHIFT) 22352ad19997SAndrew Turner #define PMBIDR_P_SHIFT 4 22362ad19997SAndrew Turner #define PMBIDR_P (UL(0x1) << PMBIDR_P_SHIFT) 22372ad19997SAndrew Turner #define PMBIDR_F_SHIFT 5 22382ad19997SAndrew Turner #define PMBIDR_F (UL(0x1) << PMBIDR_F_SHIFT) 22392ad19997SAndrew Turner 22402ad19997SAndrew Turner /* PMBLIMITR_EL1 */ 22412ad19997SAndrew Turner #define PMBLIMITR_EL1 MRS_REG(PMBLIMITR_EL1) 2242f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_REG MRS_REG_ALT_NAME(PMBLIMITR_EL1) 2243f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_op0 3 2244f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_op1 0 2245f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_CRn 9 2246f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_CRm 10 2247f7bdaa10SZachary Leaf #define PMBLIMITR_EL1_op2 0 22482ad19997SAndrew Turner #define PMBLIMITR_E_SHIFT 0 22492ad19997SAndrew Turner #define PMBLIMITR_E (UL(0x1) << PMBLIMITR_E_SHIFT) 22502ad19997SAndrew Turner #define PMBLIMITR_FM_SHIFT 1 22512ad19997SAndrew Turner #define PMBLIMITR_FM_MASK (UL(0x3) << PMBLIMITR_FM_SHIFT) 22522ad19997SAndrew Turner #define PMBLIMITR_PMFZ_SHIFT 5 22532ad19997SAndrew Turner #define PMBLIMITR_PMFZ (UL(0x1) << PMBLIMITR_PMFZ_SHIFT) 22542ad19997SAndrew Turner #define PMBLIMITR_LIMIT_SHIFT 12 22552ad19997SAndrew Turner #define PMBLIMITR_LIMIT_MASK \ 22562ad19997SAndrew Turner (UL(0xfffffffffffff) << PMBLIMITR_LIMIT_SHIFT) 22572ad19997SAndrew Turner 22582ad19997SAndrew Turner /* PMBPTR_EL1 */ 22592ad19997SAndrew Turner #define PMBPTR_EL1 MRS_REG(PMBPTR_EL1) 2260f7bdaa10SZachary Leaf #define PMBPTR_EL1_REG MRS_REG_ALT_NAME(PMBPTR_EL1) 2261f7bdaa10SZachary Leaf #define PMBPTR_EL1_op0 3 2262f7bdaa10SZachary Leaf #define PMBPTR_EL1_op1 0 2263f7bdaa10SZachary Leaf #define PMBPTR_EL1_CRn 9 2264f7bdaa10SZachary Leaf #define PMBPTR_EL1_CRm 10 2265f7bdaa10SZachary Leaf #define PMBPTR_EL1_op2 1 22662ad19997SAndrew Turner #define PMBPTR_PTR_SHIFT 0 22672ad19997SAndrew Turner #define PMBPTR_PTR_MASK \ 22682ad19997SAndrew Turner (UL(0xffffffffffffffff) << PMBPTR_PTR_SHIFT) 22692ad19997SAndrew Turner 22702ad19997SAndrew Turner /* PMBSR_EL1 */ 22712ad19997SAndrew Turner #define PMBSR_EL1 MRS_REG(PMBSR_EL1) 2272f7bdaa10SZachary Leaf #define PMBSR_EL1_REG MRS_REG_ALT_NAME(PMBSR_EL1) 2273f7bdaa10SZachary Leaf #define PMBSR_EL1_op0 3 2274f7bdaa10SZachary Leaf #define PMBSR_EL1_op1 0 2275f7bdaa10SZachary Leaf #define PMBSR_EL1_CRn 9 2276f7bdaa10SZachary Leaf #define PMBSR_EL1_CRm 10 2277f7bdaa10SZachary Leaf #define PMBSR_EL1_op2 3 22782ad19997SAndrew Turner #define PMBSR_MSS_SHIFT 0 22792ad19997SAndrew Turner #define PMBSR_MSS_MASK (UL(0xffff) << PMBSR_MSS_SHIFT) 228010b3eac8SZachary Leaf #define PMBSR_MSS_BSC_MASK (UL(0x3f) << PMBSR_MSS_SHIFT) 228110b3eac8SZachary Leaf #define PMBSR_MSS_FSC_MASK (UL(0x3f) << PMBSR_MSS_SHIFT) 22822ad19997SAndrew Turner #define PMBSR_COLL_SHIFT 16 22832ad19997SAndrew Turner #define PMBSR_COLL (UL(0x1) << PMBSR_COLL_SHIFT) 22842ad19997SAndrew Turner #define PMBSR_S_SHIFT 17 22852ad19997SAndrew Turner #define PMBSR_S (UL(0x1) << PMBSR_S_SHIFT) 22862ad19997SAndrew Turner #define PMBSR_EA_SHIFT 18 22872ad19997SAndrew Turner #define PMBSR_EA (UL(0x1) << PMBSR_EA_SHIFT) 22882ad19997SAndrew Turner #define PMBSR_DL_SHIFT 19 22892ad19997SAndrew Turner #define PMBSR_DL (UL(0x1) << PMBSR_DL_SHIFT) 22902ad19997SAndrew Turner #define PMBSR_EC_SHIFT 26 22912ad19997SAndrew Turner #define PMBSR_EC_MASK (UL(0x3f) << PMBSR_EC_SHIFT) 22922ad19997SAndrew Turner 22934dc81560SAndrew Turner /* PMCCFILTR_EL0 */ 22944dc81560SAndrew Turner #define PMCCFILTR_EL0 MRS_REG(PMCCFILTR_EL0) 22954dc81560SAndrew Turner #define PMCCFILTR_EL0_op0 3 22964dc81560SAndrew Turner #define PMCCFILTR_EL0_op1 3 22974dc81560SAndrew Turner #define PMCCFILTR_EL0_CRn 14 22984dc81560SAndrew Turner #define PMCCFILTR_EL0_CRm 15 22994dc81560SAndrew Turner #define PMCCFILTR_EL0_op2 7 23004dc81560SAndrew Turner 23014dc81560SAndrew Turner /* PMCCNTR_EL0 */ 23024dc81560SAndrew Turner #define PMCCNTR_EL0 MRS_REG(PMCCNTR_EL0) 23034dc81560SAndrew Turner #define PMCCNTR_EL0_op0 3 23044dc81560SAndrew Turner #define PMCCNTR_EL0_op1 3 23054dc81560SAndrew Turner #define PMCCNTR_EL0_CRn 9 23064dc81560SAndrew Turner #define PMCCNTR_EL0_CRm 13 23074dc81560SAndrew Turner #define PMCCNTR_EL0_op2 0 23084dc81560SAndrew Turner 23094dc81560SAndrew Turner /* PMCEID0_EL0 */ 23104dc81560SAndrew Turner #define PMCEID0_EL0 MRS_REG(PMCEID0_EL0) 23114dc81560SAndrew Turner #define PMCEID0_EL0_op0 3 23124dc81560SAndrew Turner #define PMCEID0_EL0_op1 3 23134dc81560SAndrew Turner #define PMCEID0_EL0_CRn 9 23144dc81560SAndrew Turner #define PMCEID0_EL0_CRm 12 23154dc81560SAndrew Turner #define PMCEID0_EL0_op2 6 23164dc81560SAndrew Turner 23174dc81560SAndrew Turner /* PMCEID1_EL0 */ 23184dc81560SAndrew Turner #define PMCEID1_EL0 MRS_REG(PMCEID1_EL0) 23194dc81560SAndrew Turner #define PMCEID1_EL0_op0 3 23204dc81560SAndrew Turner #define PMCEID1_EL0_op1 3 23214dc81560SAndrew Turner #define PMCEID1_EL0_CRn 9 23224dc81560SAndrew Turner #define PMCEID1_EL0_CRm 12 23234dc81560SAndrew Turner #define PMCEID1_EL0_op2 7 23244dc81560SAndrew Turner 23254dc81560SAndrew Turner /* PMCNTENCLR_EL0 */ 23264dc81560SAndrew Turner #define PMCNTENCLR_EL0 MRS_REG(PMCNTENCLR_EL0) 23274dc81560SAndrew Turner #define PMCNTENCLR_EL0_op0 3 23284dc81560SAndrew Turner #define PMCNTENCLR_EL0_op1 3 23294dc81560SAndrew Turner #define PMCNTENCLR_EL0_CRn 9 23304dc81560SAndrew Turner #define PMCNTENCLR_EL0_CRm 12 23314dc81560SAndrew Turner #define PMCNTENCLR_EL0_op2 2 23324dc81560SAndrew Turner 23334dc81560SAndrew Turner /* PMCNTENSET_EL0 */ 23344dc81560SAndrew Turner #define PMCNTENSET_EL0 MRS_REG(PMCNTENSET_EL0) 23354dc81560SAndrew Turner #define PMCNTENSET_EL0_op0 3 23364dc81560SAndrew Turner #define PMCNTENSET_EL0_op1 3 23374dc81560SAndrew Turner #define PMCNTENSET_EL0_CRn 9 23384dc81560SAndrew Turner #define PMCNTENSET_EL0_CRm 12 23394dc81560SAndrew Turner #define PMCNTENSET_EL0_op2 1 23404dc81560SAndrew Turner 2341a1b4e4faSAndrew Turner /* PMCR_EL0 - Perfomance Monitoring Counters */ 23424dc81560SAndrew Turner #define PMCR_EL0 MRS_REG(PMCR_EL0) 23434dc81560SAndrew Turner #define PMCR_EL0_op0 3 23444dc81560SAndrew Turner #define PMCR_EL0_op1 3 23454dc81560SAndrew Turner #define PMCR_EL0_CRn 9 23464dc81560SAndrew Turner #define PMCR_EL0_CRm 12 23474dc81560SAndrew Turner #define PMCR_EL0_op2 0 2348a1b4e4faSAndrew Turner #define PMCR_E (1 << 0) /* Enable all counters */ 2349a1b4e4faSAndrew Turner #define PMCR_P (1 << 1) /* Reset all counters */ 2350a1b4e4faSAndrew Turner #define PMCR_C (1 << 2) /* Clock counter reset */ 2351a1b4e4faSAndrew Turner #define PMCR_D (1 << 3) /* CNTR counts every 64 clk cycles */ 2352a1b4e4faSAndrew Turner #define PMCR_X (1 << 4) /* Export to ext. monitoring (ETM) */ 2353a1b4e4faSAndrew Turner #define PMCR_DP (1 << 5) /* Disable CCNT if non-invasive debug*/ 2354a1b4e4faSAndrew Turner #define PMCR_LC (1 << 6) /* Long cycle count enable */ 2355a1b4e4faSAndrew Turner #define PMCR_IMP_SHIFT 24 /* Implementer code */ 2356a1b4e4faSAndrew Turner #define PMCR_IMP_MASK (0xff << PMCR_IMP_SHIFT) 2357a1b4e4faSAndrew Turner #define PMCR_IMP_ARM 0x41 2358a1b4e4faSAndrew Turner #define PMCR_IDCODE_SHIFT 16 /* Identification code */ 2359a1b4e4faSAndrew Turner #define PMCR_IDCODE_MASK (0xff << PMCR_IDCODE_SHIFT) 2360a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A57 0x01 2361a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A72 0x02 2362a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A53 0x03 2363a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A73 0x04 2364a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A35 0x0a 2365a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A76 0x0b 2366a1b4e4faSAndrew Turner #define PMCR_IDCODE_NEOVERSE_N1 0x0c 2367a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A77 0x10 2368a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A55 0x45 2369a1b4e4faSAndrew Turner #define PMCR_IDCODE_NEOVERSE_E1 0x46 2370a1b4e4faSAndrew Turner #define PMCR_IDCODE_CORTEX_A75 0x4a 2371a1b4e4faSAndrew Turner #define PMCR_N_SHIFT 11 /* Number of counters implemented */ 2372a1b4e4faSAndrew Turner #define PMCR_N_MASK (0x1f << PMCR_N_SHIFT) 2373a1b4e4faSAndrew Turner 23744dc81560SAndrew Turner /* PMEVCNTR<n>_EL0 */ 23754dc81560SAndrew Turner #define PMEVCNTR_EL0_op0 3 23764dc81560SAndrew Turner #define PMEVCNTR_EL0_op1 3 23774dc81560SAndrew Turner #define PMEVCNTR_EL0_CRn 14 23784dc81560SAndrew Turner #define PMEVCNTR_EL0_CRm 8 23794dc81560SAndrew Turner /* 23804dc81560SAndrew Turner * PMEVCNTRn_EL0_CRm[1:0] holds the upper 2 bits of 'n' 23814dc81560SAndrew Turner * PMEVCNTRn_EL0_op2 holds the lower 3 bits of 'n' 23824dc81560SAndrew Turner */ 23834dc81560SAndrew Turner 2384456d57a6SJohn Baldwin /* PMEVTYPER<n>_EL0 - Performance Monitoring Event Type */ 23854dc81560SAndrew Turner #define PMEVTYPER_EL0_op0 3 23864dc81560SAndrew Turner #define PMEVTYPER_EL0_op1 3 23874dc81560SAndrew Turner #define PMEVTYPER_EL0_CRn 14 23884dc81560SAndrew Turner #define PMEVTYPER_EL0_CRm 12 23894dc81560SAndrew Turner /* 23904dc81560SAndrew Turner * PMEVTYPERn_EL0_CRm[1:0] holds the upper 2 bits of 'n' 23914dc81560SAndrew Turner * PMEVTYPERn_EL0_op2 holds the lower 3 bits of 'n' 23924dc81560SAndrew Turner */ 2393456d57a6SJohn Baldwin #define PMEVTYPER_EVTCOUNT_MASK 0x000003ff /* ARMv8.0 */ 2394456d57a6SJohn Baldwin #define PMEVTYPER_EVTCOUNT_8_1_MASK 0x0000ffff /* ARMv8.1+ */ 2395456d57a6SJohn Baldwin #define PMEVTYPER_MT (1 << 25) /* Multithreading */ 2396456d57a6SJohn Baldwin #define PMEVTYPER_M (1 << 26) /* Secure EL3 filtering */ 2397456d57a6SJohn Baldwin #define PMEVTYPER_NSH (1 << 27) /* Non-secure hypervisor filtering */ 2398456d57a6SJohn Baldwin #define PMEVTYPER_NSU (1 << 28) /* Non-secure user filtering */ 2399456d57a6SJohn Baldwin #define PMEVTYPER_NSK (1 << 29) /* Non-secure kernel filtering */ 2400456d57a6SJohn Baldwin #define PMEVTYPER_U (1 << 30) /* User filtering */ 2401456d57a6SJohn Baldwin #define PMEVTYPER_P (1 << 31) /* Privileged filtering */ 24024dc81560SAndrew Turner 24034dc81560SAndrew Turner /* PMINTENCLR_EL1 */ 24044dc81560SAndrew Turner #define PMINTENCLR_EL1 MRS_REG(PMINTENCLR_EL1) 24054dc81560SAndrew Turner #define PMINTENCLR_EL1_op0 3 24064dc81560SAndrew Turner #define PMINTENCLR_EL1_op1 0 24074dc81560SAndrew Turner #define PMINTENCLR_EL1_CRn 9 24084dc81560SAndrew Turner #define PMINTENCLR_EL1_CRm 14 24094dc81560SAndrew Turner #define PMINTENCLR_EL1_op2 2 24104dc81560SAndrew Turner 24114dc81560SAndrew Turner /* PMINTENSET_EL1 */ 24124dc81560SAndrew Turner #define PMINTENSET_EL1 MRS_REG(PMINTENSET_EL1) 24134dc81560SAndrew Turner #define PMINTENSET_EL1_op0 3 24144dc81560SAndrew Turner #define PMINTENSET_EL1_op1 0 24154dc81560SAndrew Turner #define PMINTENSET_EL1_CRn 9 24164dc81560SAndrew Turner #define PMINTENSET_EL1_CRm 14 24174dc81560SAndrew Turner #define PMINTENSET_EL1_op2 1 24184dc81560SAndrew Turner 24194dc81560SAndrew Turner /* PMMIR_EL1 */ 24204dc81560SAndrew Turner #define PMMIR_EL1 MRS_REG(PMMIR_EL1) 24214dc81560SAndrew Turner #define PMMIR_EL1_op0 3 24224dc81560SAndrew Turner #define PMMIR_EL1_op1 0 24234dc81560SAndrew Turner #define PMMIR_EL1_CRn 9 24244dc81560SAndrew Turner #define PMMIR_EL1_CRm 14 24254dc81560SAndrew Turner #define PMMIR_EL1_op2 6 24264dc81560SAndrew Turner 24274dc81560SAndrew Turner /* PMOVSCLR_EL0 */ 24284dc81560SAndrew Turner #define PMOVSCLR_EL0 MRS_REG(PMOVSCLR_EL0) 24294dc81560SAndrew Turner #define PMOVSCLR_EL0_op0 3 24304dc81560SAndrew Turner #define PMOVSCLR_EL0_op1 3 24314dc81560SAndrew Turner #define PMOVSCLR_EL0_CRn 9 24324dc81560SAndrew Turner #define PMOVSCLR_EL0_CRm 12 24334dc81560SAndrew Turner #define PMOVSCLR_EL0_op2 3 24344dc81560SAndrew Turner 24354dc81560SAndrew Turner /* PMOVSSET_EL0 */ 24364dc81560SAndrew Turner #define PMOVSSET_EL0 MRS_REG(PMOVSSET_EL0) 24374dc81560SAndrew Turner #define PMOVSSET_EL0_op0 3 24384dc81560SAndrew Turner #define PMOVSSET_EL0_op1 3 24394dc81560SAndrew Turner #define PMOVSSET_EL0_CRn 9 24404dc81560SAndrew Turner #define PMOVSSET_EL0_CRm 14 24414dc81560SAndrew Turner #define PMOVSSET_EL0_op2 3 24424dc81560SAndrew Turner 24432ad19997SAndrew Turner /* PMSCR_EL1 */ 24442ad19997SAndrew Turner #define PMSCR_EL1 MRS_REG(PMSCR_EL1) 2445f7bdaa10SZachary Leaf #define PMSCR_EL1_REG MRS_REG_ALT_NAME(PMSCR_EL1) 2446f7bdaa10SZachary Leaf #define PMSCR_EL1_op0 3 2447f7bdaa10SZachary Leaf #define PMSCR_EL1_op1 0 2448f7bdaa10SZachary Leaf #define PMSCR_EL1_CRn 9 2449f7bdaa10SZachary Leaf #define PMSCR_EL1_CRm 9 2450f7bdaa10SZachary Leaf #define PMSCR_EL1_op2 0 24512ad19997SAndrew Turner #define PMSCR_E0SPE_SHIFT 0 24522ad19997SAndrew Turner #define PMSCR_E0SPE (UL(0x1) << PMSCR_E0SPE_SHIFT) 24532ad19997SAndrew Turner #define PMSCR_E1SPE_SHIFT 1 24542ad19997SAndrew Turner #define PMSCR_E1SPE (UL(0x1) << PMSCR_E1SPE_SHIFT) 24552ad19997SAndrew Turner #define PMSCR_CX_SHIFT 3 24562ad19997SAndrew Turner #define PMSCR_CX (UL(0x1) << PMSCR_CX_SHIFT) 24572ad19997SAndrew Turner #define PMSCR_PA_SHIFT 4 24582ad19997SAndrew Turner #define PMSCR_PA (UL(0x1) << PMSCR_PA_SHIFT) 24592ad19997SAndrew Turner #define PMSCR_TS_SHIFT 5 24602ad19997SAndrew Turner #define PMSCR_TS (UL(0x1) << PMSCR_TS_SHIFT) 24612ad19997SAndrew Turner #define PMSCR_PCT_SHIFT 6 24622ad19997SAndrew Turner #define PMSCR_PCT_MASK (UL(0x3) << PMSCR_PCT_SHIFT) 24632ad19997SAndrew Turner 24644dc81560SAndrew Turner /* PMSELR_EL0 */ 24654dc81560SAndrew Turner #define PMSELR_EL0 MRS_REG(PMSELR_EL0) 24664dc81560SAndrew Turner #define PMSELR_EL0_op0 3 24674dc81560SAndrew Turner #define PMSELR_EL0_op1 3 24684dc81560SAndrew Turner #define PMSELR_EL0_CRn 9 24694dc81560SAndrew Turner #define PMSELR_EL0_CRm 12 24704dc81560SAndrew Turner #define PMSELR_EL0_op2 5 24714dc81560SAndrew Turner #define PMSELR_SEL_MASK 0x1f 24724dc81560SAndrew Turner 24732ad19997SAndrew Turner /* PMSEVFR_EL1 */ 24742ad19997SAndrew Turner #define PMSEVFR_EL1 MRS_REG(PMSEVFR_EL1) 2475f7bdaa10SZachary Leaf #define PMSEVFR_EL1_REG MRS_REG_ALT_NAME(PMSEVFR_EL1) 2476f7bdaa10SZachary Leaf #define PMSEVFR_EL1_op0 3 2477f7bdaa10SZachary Leaf #define PMSEVFR_EL1_op1 0 2478f7bdaa10SZachary Leaf #define PMSEVFR_EL1_CRn 9 2479f7bdaa10SZachary Leaf #define PMSEVFR_EL1_CRm 9 2480f7bdaa10SZachary Leaf #define PMSEVFR_EL1_op2 5 24812ad19997SAndrew Turner 24822ad19997SAndrew Turner /* PMSFCR_EL1 */ 24832ad19997SAndrew Turner #define PMSFCR_EL1 MRS_REG(PMSFCR_EL1) 2484f7bdaa10SZachary Leaf #define PMSFCR_EL1_REG MRS_REG_ALT_NAME(PMSFCR_EL1) 2485f7bdaa10SZachary Leaf #define PMSFCR_EL1_op0 3 2486f7bdaa10SZachary Leaf #define PMSFCR_EL1_op1 0 2487f7bdaa10SZachary Leaf #define PMSFCR_EL1_CRn 9 2488f7bdaa10SZachary Leaf #define PMSFCR_EL1_CRm 9 2489f7bdaa10SZachary Leaf #define PMSFCR_EL1_op2 4 24902ad19997SAndrew Turner #define PMSFCR_FE_SHIFT 0 24912ad19997SAndrew Turner #define PMSFCR_FE (UL(0x1) << PMSFCR_FE_SHIFT) 24922ad19997SAndrew Turner #define PMSFCR_FT_SHIFT 1 24932ad19997SAndrew Turner #define PMSFCR_FT (UL(0x1) << PMSFCR_FT_SHIFT) 24942ad19997SAndrew Turner #define PMSFCR_FL_SHIFT 2 24952ad19997SAndrew Turner #define PMSFCR_FL (UL(0x1) << PMSFCR_FL_SHIFT) 24962ad19997SAndrew Turner #define PMSFCR_FnE_SHIFT 3 24972ad19997SAndrew Turner #define PMSFCR_FnE (UL(0x1) << PMSFCR_FnE_SHIFT) 24982ad19997SAndrew Turner #define PMSFCR_B_SHIFT 16 24992ad19997SAndrew Turner #define PMSFCR_B (UL(0x1) << PMSFCR_B_SHIFT) 25002ad19997SAndrew Turner #define PMSFCR_LD_SHIFT 17 25012ad19997SAndrew Turner #define PMSFCR_LD (UL(0x1) << PMSFCR_LD_SHIFT) 25022ad19997SAndrew Turner #define PMSFCR_ST_SHIFT 18 25032ad19997SAndrew Turner #define PMSFCR_ST (UL(0x1) << PMSFCR_ST_SHIFT) 25042ad19997SAndrew Turner 25052ad19997SAndrew Turner /* PMSICR_EL1 */ 25062ad19997SAndrew Turner #define PMSICR_EL1 MRS_REG(PMSICR_EL1) 2507f7bdaa10SZachary Leaf #define PMSICR_EL1_REG MRS_REG_ALT_NAME(PMSICR_EL1) 2508f7bdaa10SZachary Leaf #define PMSICR_EL1_op0 3 2509f7bdaa10SZachary Leaf #define PMSICR_EL1_op1 0 2510f7bdaa10SZachary Leaf #define PMSICR_EL1_CRn 9 2511f7bdaa10SZachary Leaf #define PMSICR_EL1_CRm 9 2512f7bdaa10SZachary Leaf #define PMSICR_EL1_op2 2 25132ad19997SAndrew Turner #define PMSICR_COUNT_SHIFT 0 25142ad19997SAndrew Turner #define PMSICR_COUNT_MASK (UL(0xffffffff) << PMSICR_COUNT_SHIFT) 25152ad19997SAndrew Turner #define PMSICR_ECOUNT_SHIFT 56 25162ad19997SAndrew Turner #define PMSICR_ECOUNT_MASK (UL(0xff) << PMSICR_ECOUNT_SHIFT) 25172ad19997SAndrew Turner 25182ad19997SAndrew Turner /* PMSIDR_EL1 */ 25192ad19997SAndrew Turner #define PMSIDR_EL1 MRS_REG(PMSIDR_EL1) 2520f7bdaa10SZachary Leaf #define PMSIDR_EL1_REG MRS_REG_ALT_NAME(PMSIDR_EL1) 2521f7bdaa10SZachary Leaf #define PMSIDR_EL1_op0 3 2522f7bdaa10SZachary Leaf #define PMSIDR_EL1_op1 0 2523f7bdaa10SZachary Leaf #define PMSIDR_EL1_CRn 9 2524f7bdaa10SZachary Leaf #define PMSIDR_EL1_CRm 9 2525f7bdaa10SZachary Leaf #define PMSIDR_EL1_op2 7 25262ad19997SAndrew Turner #define PMSIDR_FE_SHIFT 0 25272ad19997SAndrew Turner #define PMSIDR_FE (UL(0x1) << PMSIDR_FE_SHIFT) 25282ad19997SAndrew Turner #define PMSIDR_FT_SHIFT 1 25292ad19997SAndrew Turner #define PMSIDR_FT (UL(0x1) << PMSIDR_FT_SHIFT) 25302ad19997SAndrew Turner #define PMSIDR_FL_SHIFT 2 25312ad19997SAndrew Turner #define PMSIDR_FL (UL(0x1) << PMSIDR_FL_SHIFT) 25322ad19997SAndrew Turner #define PMSIDR_ArchInst_SHIFT 3 25332ad19997SAndrew Turner #define PMSIDR_ArchInst (UL(0x1) << PMSIDR_ArchInst_SHIFT) 25342ad19997SAndrew Turner #define PMSIDR_LDS_SHIFT 4 25352ad19997SAndrew Turner #define PMSIDR_LDS (UL(0x1) << PMSIDR_LDS_SHIFT) 25362ad19997SAndrew Turner #define PMSIDR_ERnd_SHIFT 5 25372ad19997SAndrew Turner #define PMSIDR_ERnd (UL(0x1) << PMSIDR_ERnd_SHIFT) 25382ad19997SAndrew Turner #define PMSIDR_FnE_SHIFT 6 25392ad19997SAndrew Turner #define PMSIDR_FnE (UL(0x1) << PMSIDR_FnE_SHIFT) 25402ad19997SAndrew Turner #define PMSIDR_Interval_SHIFT 8 25412ad19997SAndrew Turner #define PMSIDR_Interval_MASK (UL(0xf) << PMSIDR_Interval_SHIFT) 25422ad19997SAndrew Turner #define PMSIDR_MaxSize_SHIFT 12 25432ad19997SAndrew Turner #define PMSIDR_MaxSize_MASK (UL(0xf) << PMSIDR_MaxSize_SHIFT) 25442ad19997SAndrew Turner #define PMSIDR_CountSize_SHIFT 16 25452ad19997SAndrew Turner #define PMSIDR_CountSize_MASK (UL(0xf) << PMSIDR_CountSize_SHIFT) 25462ad19997SAndrew Turner #define PMSIDR_Format_SHIFT 20 25472ad19997SAndrew Turner #define PMSIDR_Format_MASK (UL(0xf) << PMSIDR_Format_SHIFT) 25482ad19997SAndrew Turner #define PMSIDR_PBT_SHIFT 24 25492ad19997SAndrew Turner #define PMSIDR_PBT (UL(0x1) << PMSIDR_PBT_SHIFT) 25502ad19997SAndrew Turner 25512ad19997SAndrew Turner /* PMSIRR_EL1 */ 25522ad19997SAndrew Turner #define PMSIRR_EL1 MRS_REG(PMSIRR_EL1) 2553f7bdaa10SZachary Leaf #define PMSIRR_EL1_REG MRS_REG_ALT_NAME(PMSIRR_EL1) 2554f7bdaa10SZachary Leaf #define PMSIRR_EL1_op0 3 2555f7bdaa10SZachary Leaf #define PMSIRR_EL1_op1 0 2556f7bdaa10SZachary Leaf #define PMSIRR_EL1_CRn 9 2557f7bdaa10SZachary Leaf #define PMSIRR_EL1_CRm 9 2558f7bdaa10SZachary Leaf #define PMSIRR_EL1_op2 3 25592ad19997SAndrew Turner #define PMSIRR_RND_SHIFT 0 25602ad19997SAndrew Turner #define PMSIRR_RND (UL(0x1) << PMSIRR_RND_SHIFT) 25612ad19997SAndrew Turner #define PMSIRR_INTERVAL_SHIFT 8 25622ad19997SAndrew Turner #define PMSIRR_INTERVAL_MASK (UL(0xffffff) << PMSIRR_INTERVAL_SHIFT) 25632ad19997SAndrew Turner 25642ad19997SAndrew Turner /* PMSLATFR_EL1 */ 25652ad19997SAndrew Turner #define PMSLATFR_EL1 MRS_REG(PMSLATFR_EL1) 2566f7bdaa10SZachary Leaf #define PMSLATFR_EL1_REG MRS_REG_ALT_NAME(PMSLATFR_EL1) 2567f7bdaa10SZachary Leaf #define PMSLATFR_EL1_op0 3 2568f7bdaa10SZachary Leaf #define PMSLATFR_EL1_op1 0 2569f7bdaa10SZachary Leaf #define PMSLATFR_EL1_CRn 9 2570f7bdaa10SZachary Leaf #define PMSLATFR_EL1_CRm 9 2571f7bdaa10SZachary Leaf #define PMSLATFR_EL1_op2 6 25722ad19997SAndrew Turner #define PMSLATFR_MINLAT_SHIFT 0 25732ad19997SAndrew Turner #define PMSLATFR_MINLAT_MASK (UL(0xfff) << PMSLATFR_MINLAT_SHIFT) 25742ad19997SAndrew Turner 25752ad19997SAndrew Turner /* PMSNEVFR_EL1 */ 25762ad19997SAndrew Turner #define PMSNEVFR_EL1 MRS_REG(PMSNEVFR_EL1) 2577f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_REG MRS_REG_ALT_NAME(PMSNEVFR_EL1) 2578f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_op0 3 2579f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_op1 0 2580f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_CRn 9 2581f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_CRm 9 2582f7bdaa10SZachary Leaf #define PMSNEVFR_EL1_op2 1 25832ad19997SAndrew Turner 25844dc81560SAndrew Turner /* PMSWINC_EL0 */ 25854dc81560SAndrew Turner #define PMSWINC_EL0 MRS_REG(PMSWINC_EL0) 25864dc81560SAndrew Turner #define PMSWINC_EL0_op0 3 25874dc81560SAndrew Turner #define PMSWINC_EL0_op1 3 25884dc81560SAndrew Turner #define PMSWINC_EL0_CRn 9 25894dc81560SAndrew Turner #define PMSWINC_EL0_CRm 12 25904dc81560SAndrew Turner #define PMSWINC_EL0_op2 4 25914dc81560SAndrew Turner 25924dc81560SAndrew Turner /* PMUSERENR_EL0 */ 25934dc81560SAndrew Turner #define PMUSERENR_EL0 MRS_REG(PMUSERENR_EL0) 25944dc81560SAndrew Turner #define PMUSERENR_EL0_op0 3 25954dc81560SAndrew Turner #define PMUSERENR_EL0_op1 3 25964dc81560SAndrew Turner #define PMUSERENR_EL0_CRn 9 25974dc81560SAndrew Turner #define PMUSERENR_EL0_CRm 14 25984dc81560SAndrew Turner #define PMUSERENR_EL0_op2 0 25994dc81560SAndrew Turner 26004dc81560SAndrew Turner /* PMXEVCNTR_EL0 */ 26014dc81560SAndrew Turner #define PMXEVCNTR_EL0 MRS_REG(PMXEVCNTR_EL0) 26024dc81560SAndrew Turner #define PMXEVCNTR_EL0_op0 3 26034dc81560SAndrew Turner #define PMXEVCNTR_EL0_op1 3 26044dc81560SAndrew Turner #define PMXEVCNTR_EL0_CRn 9 26054dc81560SAndrew Turner #define PMXEVCNTR_EL0_CRm 13 26064dc81560SAndrew Turner #define PMXEVCNTR_EL0_op2 2 26074dc81560SAndrew Turner 26084dc81560SAndrew Turner /* PMXEVTYPER_EL0 */ 26094dc81560SAndrew Turner #define PMXEVTYPER_EL0 MRS_REG(PMXEVTYPER_EL0) 26104dc81560SAndrew Turner #define PMXEVTYPER_EL0_op0 3 26114dc81560SAndrew Turner #define PMXEVTYPER_EL0_op1 3 26124dc81560SAndrew Turner #define PMXEVTYPER_EL0_CRn 9 26134dc81560SAndrew Turner #define PMXEVTYPER_EL0_CRm 13 26144dc81560SAndrew Turner #define PMXEVTYPER_EL0_op2 1 26154dc81560SAndrew Turner 26169560ac4bSJessica Clarke /* RNDRRS */ 26179560ac4bSJessica Clarke #define RNDRRS MRS_REG(RNDRRS) 26189560ac4bSJessica Clarke #define RNDRRS_REG MRS_REG_ALT_NAME(RNDRRS) 26199560ac4bSJessica Clarke #define RNDRRS_op0 3 26209560ac4bSJessica Clarke #define RNDRRS_op1 3 26219560ac4bSJessica Clarke #define RNDRRS_CRn 2 26229560ac4bSJessica Clarke #define RNDRRS_CRm 4 26239560ac4bSJessica Clarke #define RNDRRS_op2 1 26249560ac4bSJessica Clarke 2625e5acd89cSAndrew Turner /* SCTLR_EL1 - System Control Register */ 262647361851SAndrew Turner #define SCTLR_EL1_REG MRS_REG_ALT_NAME(SCTLR_EL1) 262747361851SAndrew Turner #define SCTLR_EL1_op0 3 262847361851SAndrew Turner #define SCTLR_EL1_op1 0 262947361851SAndrew Turner #define SCTLR_EL1_CRn 1 263047361851SAndrew Turner #define SCTLR_EL1_CRm 0 263147361851SAndrew Turner #define SCTLR_EL1_op2 0 2632aec085f4SAndrew Turner #define SCTLR_RES1 0x30d00800 /* Reserved ARMv8.0, write 1 */ 26335484e6d9SAndrew Turner #define SCTLR_M (UL(0x1) << 0) 26345484e6d9SAndrew Turner #define SCTLR_A (UL(0x1) << 1) 26355484e6d9SAndrew Turner #define SCTLR_C (UL(0x1) << 2) 26365484e6d9SAndrew Turner #define SCTLR_SA (UL(0x1) << 3) 26375484e6d9SAndrew Turner #define SCTLR_SA0 (UL(0x1) << 4) 26385484e6d9SAndrew Turner #define SCTLR_CP15BEN (UL(0x1) << 5) 26395484e6d9SAndrew Turner #define SCTLR_nAA (UL(0x1) << 6) 26405484e6d9SAndrew Turner #define SCTLR_ITD (UL(0x1) << 7) 26415484e6d9SAndrew Turner #define SCTLR_SED (UL(0x1) << 8) 26425484e6d9SAndrew Turner #define SCTLR_UMA (UL(0x1) << 9) 26435484e6d9SAndrew Turner #define SCTLR_EnRCTX (UL(0x1) << 10) 26445484e6d9SAndrew Turner #define SCTLR_EOS (UL(0x1) << 11) 26455484e6d9SAndrew Turner #define SCTLR_I (UL(0x1) << 12) 26465484e6d9SAndrew Turner #define SCTLR_EnDB (UL(0x1) << 13) 26475484e6d9SAndrew Turner #define SCTLR_DZE (UL(0x1) << 14) 26485484e6d9SAndrew Turner #define SCTLR_UCT (UL(0x1) << 15) 26495484e6d9SAndrew Turner #define SCTLR_nTWI (UL(0x1) << 16) 2650a9725b63SAndrew Turner /* Bit 17 is reserved */ 26515484e6d9SAndrew Turner #define SCTLR_nTWE (UL(0x1) << 18) 26525484e6d9SAndrew Turner #define SCTLR_WXN (UL(0x1) << 19) 26535484e6d9SAndrew Turner #define SCTLR_TSCXT (UL(0x1) << 20) 26545484e6d9SAndrew Turner #define SCTLR_IESB (UL(0x1) << 21) 26555484e6d9SAndrew Turner #define SCTLR_EIS (UL(0x1) << 22) 26565484e6d9SAndrew Turner #define SCTLR_SPAN (UL(0x1) << 23) 26575484e6d9SAndrew Turner #define SCTLR_E0E (UL(0x1) << 24) 26585484e6d9SAndrew Turner #define SCTLR_EE (UL(0x1) << 25) 26595484e6d9SAndrew Turner #define SCTLR_UCI (UL(0x1) << 26) 26605484e6d9SAndrew Turner #define SCTLR_EnDA (UL(0x1) << 27) 26615484e6d9SAndrew Turner #define SCTLR_nTLSMD (UL(0x1) << 28) 26625484e6d9SAndrew Turner #define SCTLR_LSMAOE (UL(0x1) << 29) 26635484e6d9SAndrew Turner #define SCTLR_EnIB (UL(0x1) << 30) 26645484e6d9SAndrew Turner #define SCTLR_EnIA (UL(0x1) << 31) 26655484e6d9SAndrew Turner /* Bits 34:32 are reserved */ 26665484e6d9SAndrew Turner #define SCTLR_BT0 (UL(0x1) << 35) 26675484e6d9SAndrew Turner #define SCTLR_BT1 (UL(0x1) << 36) 26685484e6d9SAndrew Turner #define SCTLR_ITFSB (UL(0x1) << 37) 26695484e6d9SAndrew Turner #define SCTLR_TCF0_MASK (UL(0x3) << 38) 26705484e6d9SAndrew Turner #define SCTLR_TCF_MASK (UL(0x3) << 40) 26715484e6d9SAndrew Turner #define SCTLR_ATA0 (UL(0x1) << 42) 26725484e6d9SAndrew Turner #define SCTLR_ATA (UL(0x1) << 43) 26735484e6d9SAndrew Turner #define SCTLR_DSSBS (UL(0x1) << 44) 26745484e6d9SAndrew Turner #define SCTLR_TWEDEn (UL(0x1) << 45) 26755484e6d9SAndrew Turner #define SCTLR_TWEDEL_MASK (UL(0xf) << 46) 26765484e6d9SAndrew Turner /* Bits 53:50 are reserved */ 26775484e6d9SAndrew Turner #define SCTLR_EnASR (UL(0x1) << 54) 26785484e6d9SAndrew Turner #define SCTLR_EnAS0 (UL(0x1) << 55) 26795484e6d9SAndrew Turner #define SCTLR_EnALS (UL(0x1) << 56) 26805484e6d9SAndrew Turner #define SCTLR_EPAN (UL(0x1) << 57) 2681e5acd89cSAndrew Turner 268247361851SAndrew Turner /* SCTLR_EL12 */ 268347361851SAndrew Turner #define SCTLR_EL12_REG MRS_REG_ALT_NAME(SCTLR_EL12) 268447361851SAndrew Turner #define SCTLR_EL12_op0 3 268547361851SAndrew Turner #define SCTLR_EL12_op1 5 268647361851SAndrew Turner #define SCTLR_EL12_CRn 1 268747361851SAndrew Turner #define SCTLR_EL12_CRm 0 268847361851SAndrew Turner #define SCTLR_EL12_op2 0 268947361851SAndrew Turner 2690e5acd89cSAndrew Turner /* SPSR_EL1 */ 269147361851SAndrew Turner #define SPSR_EL1_REG MRS_REG_ALT_NAME(SPSR_EL1) 269247361851SAndrew Turner #define SPSR_EL1_op0 3 269347361851SAndrew Turner #define SPSR_EL1_op1 0 269447361851SAndrew Turner #define SPSR_EL1_CRn 4 269547361851SAndrew Turner #define SPSR_EL1_CRm 0 269647361851SAndrew Turner #define SPSR_EL1_op2 0 2697e5acd89cSAndrew Turner /* 2698e5acd89cSAndrew Turner * When the exception is taken in AArch64: 2699e5acd89cSAndrew Turner * M[3:2] is the exception level 2700e5acd89cSAndrew Turner * M[1] is unused 2701e5acd89cSAndrew Turner * M[0] is the SP select: 2702e5acd89cSAndrew Turner * 0: always SP0 2703e5acd89cSAndrew Turner * 1: current ELs SP 2704e5acd89cSAndrew Turner */ 27056a4f5fddSAndrew Turner #define PSR_M_EL0t 0x00000000UL 27066a4f5fddSAndrew Turner #define PSR_M_EL1t 0x00000004UL 27076a4f5fddSAndrew Turner #define PSR_M_EL1h 0x00000005UL 27086a4f5fddSAndrew Turner #define PSR_M_EL2t 0x00000008UL 27096a4f5fddSAndrew Turner #define PSR_M_EL2h 0x00000009UL 27106a4f5fddSAndrew Turner #define PSR_M_64 0x00000000UL 27116a4f5fddSAndrew Turner #define PSR_M_32 0x00000010UL 27126a4f5fddSAndrew Turner #define PSR_M_MASK 0x0000000fUL 2713e5acd89cSAndrew Turner 27146a4f5fddSAndrew Turner #define PSR_T 0x00000020UL 27158c9c3144SOlivier Houchard 27166a4f5fddSAndrew Turner #define PSR_AARCH32 0x00000010UL 27176a4f5fddSAndrew Turner #define PSR_F 0x00000040UL 27186a4f5fddSAndrew Turner #define PSR_I 0x00000080UL 27196a4f5fddSAndrew Turner #define PSR_A 0x00000100UL 27206a4f5fddSAndrew Turner #define PSR_D 0x00000200UL 2721739e4482SAndrew Turner #define PSR_DAIF (PSR_D | PSR_A | PSR_I | PSR_F) 272217b6ee96SAndrew Turner /* The default DAIF mask. These bits are valid in spsr_el1 and daif */ 27231f0174c9SAyrton Munoz #define PSR_DAIF_DEFAULT (0) 2724a84653c5SAndrew Turner #define PSR_DAIF_INTR (PSR_I | PSR_F) 272564963dd2SAndrew Turner #define PSR_BTYPE 0x00000c00UL 272664963dd2SAndrew Turner #define PSR_SSBS 0x00001000UL 272764963dd2SAndrew Turner #define PSR_ALLINT 0x00002000UL 27286a4f5fddSAndrew Turner #define PSR_IL 0x00100000UL 27296a4f5fddSAndrew Turner #define PSR_SS 0x00200000UL 273064963dd2SAndrew Turner #define PSR_PAN 0x00400000UL 273164963dd2SAndrew Turner #define PSR_UAO 0x00800000UL 273264963dd2SAndrew Turner #define PSR_DIT 0x01000000UL 273364963dd2SAndrew Turner #define PSR_TCO 0x02000000UL 27346a4f5fddSAndrew Turner #define PSR_V 0x10000000UL 27356a4f5fddSAndrew Turner #define PSR_C 0x20000000UL 27366a4f5fddSAndrew Turner #define PSR_Z 0x40000000UL 27376a4f5fddSAndrew Turner #define PSR_N 0x80000000UL 27386a4f5fddSAndrew Turner #define PSR_FLAGS 0xf0000000UL 273931cf95ceSAndrew Turner /* PSR fields that can be set from 32-bit and 64-bit processes */ 274031cf95ceSAndrew Turner #define PSR_SETTABLE_32 PSR_FLAGS 274131cf95ceSAndrew Turner #define PSR_SETTABLE_64 (PSR_FLAGS | PSR_SS) 2742e5acd89cSAndrew Turner 274347361851SAndrew Turner /* SPSR_EL12 */ 274447361851SAndrew Turner #define SPSR_EL12_REG MRS_REG_ALT_NAME(SPSR_EL12) 274547361851SAndrew Turner #define SPSR_EL12_op0 3 274647361851SAndrew Turner #define SPSR_EL12_op1 5 274747361851SAndrew Turner #define SPSR_EL12_CRn 4 274847361851SAndrew Turner #define SPSR_EL12_CRm 0 274947361851SAndrew Turner #define SPSR_EL12_op2 0 275047361851SAndrew Turner 2751178747a1SAndrew Turner /* REVIDR_EL1 - Revision ID Register */ 2752178747a1SAndrew Turner #define REVIDR_EL1 MRS_REG(REVIDR_EL1) 2753178747a1SAndrew Turner #define REVIDR_EL1_op0 3 2754178747a1SAndrew Turner #define REVIDR_EL1_op1 0 2755178747a1SAndrew Turner #define REVIDR_EL1_CRn 0 2756178747a1SAndrew Turner #define REVIDR_EL1_CRm 0 2757178747a1SAndrew Turner #define REVIDR_EL1_op2 6 2758178747a1SAndrew Turner 2759e5acd89cSAndrew Turner /* TCR_EL1 - Translation Control Register */ 276047361851SAndrew Turner #define TCR_EL1_REG MRS_REG_ALT_NAME(TCR_EL1) 276147361851SAndrew Turner #define TCR_EL1_op0 3 276247361851SAndrew Turner #define TCR_EL1_op1 0 276347361851SAndrew Turner #define TCR_EL1_CRn 2 276447361851SAndrew Turner #define TCR_EL1_CRm 0 276547361851SAndrew Turner #define TCR_EL1_op2 2 2766f3e9395dSAndrew Turner /* Bits 63:59 are reserved */ 27677be11454SAndrew Turner #define TCR_DS_SHIFT 59 27687be11454SAndrew Turner #define TCR_DS (UL(1) << TCR_DS_SHIFT) 2769f3e9395dSAndrew Turner #define TCR_TCMA1_SHIFT 58 277029c1cf98SAndrew Turner #define TCR_TCMA1 (UL(1) << TCR_TCMA1_SHIFT) 2771f3e9395dSAndrew Turner #define TCR_TCMA0_SHIFT 57 277229c1cf98SAndrew Turner #define TCR_TCMA0 (UL(1) << TCR_TCMA0_SHIFT) 2773f3e9395dSAndrew Turner #define TCR_E0PD1_SHIFT 56 277429c1cf98SAndrew Turner #define TCR_E0PD1 (UL(1) << TCR_E0PD1_SHIFT) 2775f3e9395dSAndrew Turner #define TCR_E0PD0_SHIFT 55 277629c1cf98SAndrew Turner #define TCR_E0PD0 (UL(1) << TCR_E0PD0_SHIFT) 2777f3e9395dSAndrew Turner #define TCR_NFD1_SHIFT 54 277829c1cf98SAndrew Turner #define TCR_NFD1 (UL(1) << TCR_NFD1_SHIFT) 2779f3e9395dSAndrew Turner #define TCR_NFD0_SHIFT 53 278029c1cf98SAndrew Turner #define TCR_NFD0 (UL(1) << TCR_NFD0_SHIFT) 2781f3e9395dSAndrew Turner #define TCR_TBID1_SHIFT 52 278229c1cf98SAndrew Turner #define TCR_TBID1 (UL(1) << TCR_TBID1_SHIFT) 2783f3e9395dSAndrew Turner #define TCR_TBID0_SHIFT 51 278429c1cf98SAndrew Turner #define TCR_TBID0 (UL(1) << TCR_TBID0_SHIFT) 2785f3e9395dSAndrew Turner #define TCR_HWU162_SHIFT 50 278629c1cf98SAndrew Turner #define TCR_HWU162 (UL(1) << TCR_HWU162_SHIFT) 2787f3e9395dSAndrew Turner #define TCR_HWU161_SHIFT 49 278829c1cf98SAndrew Turner #define TCR_HWU161 (UL(1) << TCR_HWU161_SHIFT) 2789f3e9395dSAndrew Turner #define TCR_HWU160_SHIFT 48 279029c1cf98SAndrew Turner #define TCR_HWU160 (UL(1) << TCR_HWU160_SHIFT) 2791f3e9395dSAndrew Turner #define TCR_HWU159_SHIFT 47 279229c1cf98SAndrew Turner #define TCR_HWU159 (UL(1) << TCR_HWU159_SHIFT) 2793f3e9395dSAndrew Turner #define TCR_HWU1 \ 2794f3e9395dSAndrew Turner (TCR_HWU159 | TCR_HWU160 | TCR_HWU161 | TCR_HWU162) 2795f3e9395dSAndrew Turner #define TCR_HWU062_SHIFT 46 279629c1cf98SAndrew Turner #define TCR_HWU062 (UL(1) << TCR_HWU062_SHIFT) 2797f3e9395dSAndrew Turner #define TCR_HWU061_SHIFT 45 279829c1cf98SAndrew Turner #define TCR_HWU061 (UL(1) << TCR_HWU061_SHIFT) 2799f3e9395dSAndrew Turner #define TCR_HWU060_SHIFT 44 280029c1cf98SAndrew Turner #define TCR_HWU060 (UL(1) << TCR_HWU060_SHIFT) 2801f3e9395dSAndrew Turner #define TCR_HWU059_SHIFT 43 280229c1cf98SAndrew Turner #define TCR_HWU059 (UL(1) << TCR_HWU059_SHIFT) 2803f3e9395dSAndrew Turner #define TCR_HWU0 \ 2804f3e9395dSAndrew Turner (TCR_HWU059 | TCR_HWU060 | TCR_HWU061 | TCR_HWU062) 2805f3e9395dSAndrew Turner #define TCR_HPD1_SHIFT 42 280629c1cf98SAndrew Turner #define TCR_HPD1 (UL(1) << TCR_HPD1_SHIFT) 2807f3e9395dSAndrew Turner #define TCR_HPD0_SHIFT 41 280829c1cf98SAndrew Turner #define TCR_HPD0 (UL(1) << TCR_HPD0_SHIFT) 2809b0a0152aSAlan Cox #define TCR_HD_SHIFT 40 281029c1cf98SAndrew Turner #define TCR_HD (UL(1) << TCR_HD_SHIFT) 2811b0a0152aSAlan Cox #define TCR_HA_SHIFT 39 281229c1cf98SAndrew Turner #define TCR_HA (UL(1) << TCR_HA_SHIFT) 2813f3e9395dSAndrew Turner #define TCR_TBI1_SHIFT 38 281429c1cf98SAndrew Turner #define TCR_TBI1 (UL(1) << TCR_TBI1_SHIFT) 2815f3e9395dSAndrew Turner #define TCR_TBI0_SHIFT 37 281629c1cf98SAndrew Turner #define TCR_TBI0 (UL(1) << TCR_TBI0_SHIFT) 281765565c97SAndrew Turner #define TCR_ASID_SHIFT 36 281865565c97SAndrew Turner #define TCR_ASID_WIDTH 1 281929c1cf98SAndrew Turner #define TCR_ASID_16 (UL(1) << TCR_ASID_SHIFT) 2820f3e9395dSAndrew Turner /* Bit 35 is reserved */ 2821e5acd89cSAndrew Turner #define TCR_IPS_SHIFT 32 282265565c97SAndrew Turner #define TCR_IPS_WIDTH 3 282329c1cf98SAndrew Turner #define TCR_IPS_32BIT (UL(0) << TCR_IPS_SHIFT) 282429c1cf98SAndrew Turner #define TCR_IPS_36BIT (UL(1) << TCR_IPS_SHIFT) 282529c1cf98SAndrew Turner #define TCR_IPS_40BIT (UL(2) << TCR_IPS_SHIFT) 282629c1cf98SAndrew Turner #define TCR_IPS_42BIT (UL(3) << TCR_IPS_SHIFT) 282729c1cf98SAndrew Turner #define TCR_IPS_44BIT (UL(4) << TCR_IPS_SHIFT) 282829c1cf98SAndrew Turner #define TCR_IPS_48BIT (UL(5) << TCR_IPS_SHIFT) 2829e5acd89cSAndrew Turner #define TCR_TG1_SHIFT 30 283029c1cf98SAndrew Turner #define TCR_TG1_MASK (UL(3) << TCR_TG1_SHIFT) 283129c1cf98SAndrew Turner #define TCR_TG1_16K (UL(1) << TCR_TG1_SHIFT) 283229c1cf98SAndrew Turner #define TCR_TG1_4K (UL(2) << TCR_TG1_SHIFT) 283329c1cf98SAndrew Turner #define TCR_TG1_64K (UL(3) << TCR_TG1_SHIFT) 28341038d102SZbigniew Bodek #define TCR_SH1_SHIFT 28 283529c1cf98SAndrew Turner #define TCR_SH1_IS (UL(3) << TCR_SH1_SHIFT) 28361038d102SZbigniew Bodek #define TCR_ORGN1_SHIFT 26 283729c1cf98SAndrew Turner #define TCR_ORGN1_WBWA (UL(1) << TCR_ORGN1_SHIFT) 28381038d102SZbigniew Bodek #define TCR_IRGN1_SHIFT 24 283929c1cf98SAndrew Turner #define TCR_IRGN1_WBWA (UL(1) << TCR_IRGN1_SHIFT) 2840f3e9395dSAndrew Turner #define TCR_EPD1_SHIFT 23 284129c1cf98SAndrew Turner #define TCR_EPD1 (UL(1) << TCR_EPD1_SHIFT) 284250e3ab6bSAlan Cox #define TCR_A1_SHIFT 22 284329c1cf98SAndrew Turner #define TCR_A1 (UL(1) << TCR_A1_SHIFT) 2844f3e9395dSAndrew Turner #define TCR_T1SZ_SHIFT 16 284529c1cf98SAndrew Turner #define TCR_T1SZ_MASK (UL(0x3f) << TCR_T1SZ_SHIFT) 2846f3e9395dSAndrew Turner #define TCR_T1SZ(x) ((x) << TCR_T1SZ_SHIFT) 2847f3e9395dSAndrew Turner #define TCR_TG0_SHIFT 14 284829c1cf98SAndrew Turner #define TCR_TG0_MASK (UL(3) << TCR_TG0_SHIFT) 284929c1cf98SAndrew Turner #define TCR_TG0_4K (UL(0) << TCR_TG0_SHIFT) 285029c1cf98SAndrew Turner #define TCR_TG0_64K (UL(1) << TCR_TG0_SHIFT) 285129c1cf98SAndrew Turner #define TCR_TG0_16K (UL(2) << TCR_TG0_SHIFT) 28521038d102SZbigniew Bodek #define TCR_SH0_SHIFT 12 285329c1cf98SAndrew Turner #define TCR_SH0_IS (UL(3) << TCR_SH0_SHIFT) 28541038d102SZbigniew Bodek #define TCR_ORGN0_SHIFT 10 285529c1cf98SAndrew Turner #define TCR_ORGN0_WBWA (UL(1) << TCR_ORGN0_SHIFT) 28561038d102SZbigniew Bodek #define TCR_IRGN0_SHIFT 8 285729c1cf98SAndrew Turner #define TCR_IRGN0_WBWA (UL(1) << TCR_IRGN0_SHIFT) 2858f3e9395dSAndrew Turner #define TCR_EPD0_SHIFT 7 285929c1cf98SAndrew Turner #define TCR_EPD0 (UL(1) << TCR_EPD0_SHIFT) 2860f3e9395dSAndrew Turner /* Bit 6 is reserved */ 2861f3e9395dSAndrew Turner #define TCR_T0SZ_SHIFT 0 286229c1cf98SAndrew Turner #define TCR_T0SZ_MASK (UL(0x3f) << TCR_T0SZ_SHIFT) 2863f3e9395dSAndrew Turner #define TCR_T0SZ(x) ((x) << TCR_T0SZ_SHIFT) 2864f3e9395dSAndrew Turner #define TCR_TxSZ(x) (TCR_T1SZ(x) | TCR_T0SZ(x)) 28651038d102SZbigniew Bodek 286647361851SAndrew Turner /* TCR_EL12 */ 286747361851SAndrew Turner #define TCR_EL12_REG MRS_REG_ALT_NAME(TCR_EL12) 286847361851SAndrew Turner #define TCR_EL12_op0 3 286947361851SAndrew Turner #define TCR_EL12_op1 5 287047361851SAndrew Turner #define TCR_EL12_CRn 2 287147361851SAndrew Turner #define TCR_EL12_CRm 0 287247361851SAndrew Turner #define TCR_EL12_op2 2 287347361851SAndrew Turner 28740accd726SAndrew Turner /* TTBR0_EL1 & TTBR1_EL1 - Translation Table Base Register 0 & 1 */ 28750accd726SAndrew Turner #define TTBR_ASID_SHIFT 48 28760accd726SAndrew Turner #define TTBR_ASID_MASK (0xfffful << TTBR_ASID_SHIFT) 28770accd726SAndrew Turner #define TTBR_BADDR 0x0000fffffffffffeul 28780accd726SAndrew Turner #define TTBR_CnP_SHIFT 0 28790accd726SAndrew Turner #define TTBR_CnP (1ul << TTBR_CnP_SHIFT) 28800accd726SAndrew Turner 288147361851SAndrew Turner /* TTBR0_EL1 */ 288247361851SAndrew Turner #define TTBR0_EL1_REG MRS_REG_ALT_NAME(TTBR0_EL1) 288347361851SAndrew Turner #define TTBR0_EL1_op0 3 288447361851SAndrew Turner #define TTBR0_EL1_op1 0 288547361851SAndrew Turner #define TTBR0_EL1_CRn 2 288647361851SAndrew Turner #define TTBR0_EL1_CRm 0 288747361851SAndrew Turner #define TTBR0_EL1_op2 0 288847361851SAndrew Turner 288947361851SAndrew Turner /* TTBR0_EL12 */ 289047361851SAndrew Turner #define TTBR0_EL12_REG MRS_REG_ALT_NAME(TTBR0_EL12) 289147361851SAndrew Turner #define TTBR0_EL12_op0 3 289247361851SAndrew Turner #define TTBR0_EL12_op1 5 289347361851SAndrew Turner #define TTBR0_EL12_CRn 2 289447361851SAndrew Turner #define TTBR0_EL12_CRm 0 289547361851SAndrew Turner #define TTBR0_EL12_op2 0 289647361851SAndrew Turner 289747361851SAndrew Turner /* TTBR1_EL1 */ 289847361851SAndrew Turner #define TTBR1_EL1_REG MRS_REG_ALT_NAME(TTBR1_EL1) 289947361851SAndrew Turner #define TTBR1_EL1_op0 3 290047361851SAndrew Turner #define TTBR1_EL1_op1 0 290147361851SAndrew Turner #define TTBR1_EL1_CRn 2 290247361851SAndrew Turner #define TTBR1_EL1_CRm 0 290347361851SAndrew Turner #define TTBR1_EL1_op2 1 290447361851SAndrew Turner 290547361851SAndrew Turner /* TTBR1_EL12 */ 290647361851SAndrew Turner #define TTBR1_EL12_REG MRS_REG_ALT_NAME(TTBR1_EL12) 290747361851SAndrew Turner #define TTBR1_EL12_op0 3 290847361851SAndrew Turner #define TTBR1_EL12_op1 5 290947361851SAndrew Turner #define TTBR1_EL12_CRn 2 291047361851SAndrew Turner #define TTBR1_EL12_CRm 0 291147361851SAndrew Turner #define TTBR1_EL12_op2 1 291247361851SAndrew Turner 291347361851SAndrew Turner /* VBAR_EL1 */ 291447361851SAndrew Turner #define VBAR_EL1_REG MRS_REG_ALT_NAME(VBAR_EL1) 291547361851SAndrew Turner #define VBAR_EL1_op0 3 291647361851SAndrew Turner #define VBAR_EL1_op1 0 291747361851SAndrew Turner #define VBAR_EL1_CRn 12 291847361851SAndrew Turner #define VBAR_EL1_CRm 0 291947361851SAndrew Turner #define VBAR_EL1_op2 0 292047361851SAndrew Turner 292147361851SAndrew Turner /* VBAR_EL12 */ 292247361851SAndrew Turner #define VBAR_EL12_REG MRS_REG_ALT_NAME(VBAR_EL12) 292347361851SAndrew Turner #define VBAR_EL12_op0 3 292447361851SAndrew Turner #define VBAR_EL12_op1 5 292547361851SAndrew Turner #define VBAR_EL12_CRn 12 292647361851SAndrew Turner #define VBAR_EL12_CRm 0 292747361851SAndrew Turner #define VBAR_EL12_op2 0 292847361851SAndrew Turner 29292f317e73SAndrew Turner /* ZCR_EL1 - SVE Control Register */ 2930332c4263SAndrew Turner #define ZCR_EL1 MRS_REG(ZCR_EL1) 2931b77b7aebSAndrew Turner #define ZCR_EL1_REG MRS_REG_ALT_NAME(ZCR_EL1) 2932b77b7aebSAndrew Turner #define ZCR_EL1_op0 3 2933b77b7aebSAndrew Turner #define ZCR_EL1_op1 0 2934b77b7aebSAndrew Turner #define ZCR_EL1_CRn 1 2935b77b7aebSAndrew Turner #define ZCR_EL1_CRm 2 2936b77b7aebSAndrew Turner #define ZCR_EL1_op2 0 29372f317e73SAndrew Turner #define ZCR_LEN_SHIFT 0 29382f317e73SAndrew Turner #define ZCR_LEN_MASK (0xf << ZCR_LEN_SHIFT) 29392f317e73SAndrew Turner #define ZCR_LEN_BYTES(x) ((((x) & ZCR_LEN_MASK) + 1) * 16) 29402f317e73SAndrew Turner 2941e5acd89cSAndrew Turner #endif /* !_MACHINE_ARMREG_H_ */ 2942d5d97bedSMike Karels 2943d5d97bedSMike Karels #endif /* !__arm__ */ 2944