VirtualBox

Changeset 101102 in vbox for trunk/include/iprt/armv8.h


Ignore:
Timestamp:
Sep 13, 2023 11:40:43 AM (15 months ago)
Author:
vboxsync
Message:

include/iprt/armv8.h: Change the ARMV8_ID_AA64*_EL1 register definitions to make them usable with the RT_BF_* macros, bugref:10525

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/armv8.h

    r101083 r101102  
    11501150/* Bit 0 - 3 - Reserved. */
    11511151/** Bit 4 - 7 - Indicates support for AES instructions in AArch64 state. */
    1152 #define ARMV8_ID_AA64ISAR0_EL1_AES                              (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
    1153 #define ARMV8_ID_AA64ISAR0_EL1_AES_GET(a_IdAa64Isar0El1)        (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_AES) >> 4)
     1152#define ARMV8_ID_AA64ISAR0_EL1_AES_MASK                         (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
     1153#define ARMV8_ID_AA64ISAR0_EL1_AES_SHIFT                        4
    11541154/** No AES instructions implemented. */
    11551155# define ARMV8_ID_AA64ISAR0_EL1_AES_NOT_IMPL                    0
     
    11591159# define ARMV8_ID_AA64ISAR0_EL1_AES_SUPPORTED_PMULL             2
    11601160/** Bit 8 - 11 - Indicates support for SHA1 instructions in AArch64 state. */
    1161 #define ARMV8_ID_AA64ISAR0_EL1_SHA1                             (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
    1162 #define ARMV8_ID_AA64ISAR0_EL1_SHA1_GET(a_IdAa64Isar0El1)       (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_SHA1) >> 8)
     1161#define ARMV8_ID_AA64ISAR0_EL1_SHA1_MASK                        (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
     1162#define ARMV8_ID_AA64ISAR0_EL1_SHA1_SHIFT                       8
    11631163/** No SHA1 instructions implemented. */
    11641164# define ARMV8_ID_AA64ISAR0_EL1_SHA1_NOT_IMPL                   0
     
    11661166# define ARMV8_ID_AA64ISAR0_EL1_SHA1_SUPPORTED                  1
    11671167/** Bit 12 - 15 - Indicates support for SHA2 instructions in AArch64 state. */
    1168 #define ARMV8_ID_AA64ISAR0_EL1_SHA2                             (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
    1169 #define ARMV8_ID_AA64ISAR0_EL1_SHA2_GET(a_IdAa64Isar0El1)       (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_SHA2) >> 12)
     1168#define ARMV8_ID_AA64ISAR0_EL1_SHA2_MASK                        (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
     1169#define ARMV8_ID_AA64ISAR0_EL1_SHA2_SHIFT                       12
    11701170/** No SHA2 instructions implemented. */
    11711171# define ARMV8_ID_AA64ISAR0_EL1_SHA2_NOT_IMPL                   0
     
    11751175# define ARMV8_ID_AA64ISAR0_EL1_SHA2_SUPPORTED_SHA256_SHA512    2
    11761176/** Bit 16 - 19 - Indicates support for CRC32 instructions in AArch64 state. */
    1177 #define ARMV8_ID_AA64ISAR0_EL1_CRC32                            (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
    1178 #define ARMV8_ID_AA64ISAR0_EL1_CRC32_GET(a_IdAa64Isar0El1)      (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_CRC32) >> 16)
     1177#define ARMV8_ID_AA64ISAR0_EL1_CRC32_MASK                       (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
     1178#define ARMV8_ID_AA64ISAR0_EL1_CRC32_SHIFT                      16
    11791179/** No CRC32 instructions implemented. */
    11801180# define ARMV8_ID_AA64ISAR0_EL1_CRC32_NOT_IMPL                  0
     
    11821182# define ARMV8_ID_AA64ISAR0_EL1_CRC32_SUPPORTED                 1
    11831183/** Bit 20 - 23 - Indicates support for Atomic instructions in AArch64 state. */
    1184 #define ARMV8_ID_AA64ISAR0_EL1_ATOMIC                           (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
    1185 #define ARMV8_ID_AA64ISAR0_EL1_ATOMIC_GET(a_IdAa64Isar0El1)     (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_ATOMIC) >> 20)
     1184#define ARMV8_ID_AA64ISAR0_EL1_ATOMIC_MASK                      (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
     1185#define ARMV8_ID_AA64ISAR0_EL1_ATOMIC_SHIFT                     20
    11861186/** No Atomic instructions implemented. */
    11871187# define ARMV8_ID_AA64ISAR0_EL1_ATOMIC_NOT_IMPL                 0
     
    11891189# define ARMV8_ID_AA64ISAR0_EL1_ATOMIC_SUPPORTED                2
    11901190/** Bit 24 - 27 - Indicates support for TME instructions. */
    1191 #define ARMV8_ID_AA64ISAR0_EL1_TME                              (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
    1192 #define ARMV8_ID_AA64ISAR0_EL1_TME_GET(a_IdAa64Isar0El1)        (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_TME) >> 24)
     1191#define ARMV8_ID_AA64ISAR0_EL1_TME_MASK                         (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
     1192#define ARMV8_ID_AA64ISAR0_EL1_TME_SHIFT                        24
    11931193/** TME instructions are not implemented. */
    11941194# define ARMV8_ID_AA64ISAR0_EL1_TME_NOT_IMPL                    0
     
    11961196# define ARMV8_ID_AA64ISAR0_EL1_TME_SUPPORTED                   1
    11971197/** Bit 28 - 31 - Indicates support for SQRDMLAH and SQRDMLSH instructions in AArch64 state. */
    1198 #define ARMV8_ID_AA64ISAR0_EL1_RDM                              (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
    1199 #define ARMV8_ID_AA64ISAR0_EL1_RDM_GET(a_IdAa64Isar0El1)        (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_RDM) >> 28)
     1198#define ARMV8_ID_AA64ISAR0_EL1_RDM_MASK                         (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
     1199#define ARMV8_ID_AA64ISAR0_EL1_RDM_SHIFT                        28
    12001200/** No RDMA instructions implemented. */
    12011201# define ARMV8_ID_AA64ISAR0_EL1_RDM_NOT_IMPL                    0
    12021202/** SQRDMLAH and SQRDMLSH instructions implemented (FEAT_RDM). */
    1203 # define ARMV8_ID_AA64ISAR0_EL1_RAS_SUPPORTED                   1
     1203# define ARMV8_ID_AA64ISAR0_EL1_RDM_SUPPORTED                   1
    12041204/** Bit 32 - 35 - Indicates support for SHA3 instructions in AArch64 state. */
    1205 #define ARMV8_ID_AA64ISAR0_EL1_SHA3                             (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
    1206 #define ARMV8_ID_AA64ISAR0_EL1_SHA3_GET(a_IdAa64Isar0El1)       (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_SHA3) >> 32)
     1205#define ARMV8_ID_AA64ISAR0_EL1_SHA3_MASK                        (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
     1206#define ARMV8_ID_AA64ISAR0_EL1_SHA3_SHIFT                       32
    12071207/** No SHA3 instructions implemented. */
    12081208# define ARMV8_ID_AA64ISAR0_EL1_SHA3_NOT_IMPL                   0
     
    12101210# define ARMV8_ID_AA64ISAR0_EL1_SHA3_SUPPORTED                  1
    12111211/** Bit 36 - 39 - Indicates support for SM3 instructions in AArch64 state. */
    1212 #define ARMV8_ID_AA64ISAR0_EL1_SM3                              (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
    1213 #define ARMV8_ID_AA64ISAR0_EL1_SM3_GET(a_IdAa64Isar0El1)        (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_SM3) >> 36)
     1212#define ARMV8_ID_AA64ISAR0_EL1_SM3_MASK                         (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
     1213#define ARMV8_ID_AA64ISAR0_EL1_SM3_SHIFT                        36
    12141214/** No SM3 instructions implemented. */
    12151215# define ARMV8_ID_AA64ISAR0_EL1_SM3_NOT_IMPL                    0
     
    12171217# define ARMV8_ID_AA64ISAR0_EL1_SM3_SUPPORTED                   1
    12181218/** Bit 40 - 43 - Indicates support for SM4 instructions in AArch64 state. */
    1219 #define ARMV8_ID_AA64ISAR0_EL1_SM4                              (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
    1220 #define ARMV8_ID_AA64ISAR0_EL1_SM4_GET(a_IdAa64Isar0El1)        (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_SM4) >> 40)
     1219#define ARMV8_ID_AA64ISAR0_EL1_SM4_MASK                         (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
     1220#define ARMV8_ID_AA64ISAR0_EL1_SM4_SHIFT                        40
    12211221/** No SM4 instructions implemented. */
    12221222# define ARMV8_ID_AA64ISAR0_EL1_SM4_NOT_IMPL                    0
     
    12241224# define ARMV8_ID_AA64ISAR0_EL1_SM4_SUPPORTED                   1
    12251225/** Bit 44 - 47 - Indicates support for Dot Product instructions in AArch64 state. */
    1226 #define ARMV8_ID_AA64ISAR0_EL1_DP                               (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
    1227 #define ARMV8_ID_AA64ISAR0_EL1_DP_GET(a_IdAa64Isar0El1)         (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_DP) >> 44)
     1226#define ARMV8_ID_AA64ISAR0_EL1_DP_MASK                          (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
     1227#define ARMV8_ID_AA64ISAR0_EL1_DP_SHIFT                         44
    12281228/** No Dot Product instructions implemented. */
    12291229# define ARMV8_ID_AA64ISAR0_EL1_DP_NOT_IMPL                     0
     
    12311231# define ARMV8_ID_AA64ISAR0_EL1_DP_SUPPORTED                    1
    12321232/** Bit 48 - 51 - Indicates support for FMLAL and FMLSL instructions. */
    1233 #define ARMV8_ID_AA64ISAR0_EL1_FHM                              (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
    1234 #define ARMV8_ID_AA64ISAR0_EL1_FHM_GET(a_IdAa64Isar0El1)        (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_DIT) >> 48)
     1233#define ARMV8_ID_AA64ISAR0_EL1_FHM_MASK                         (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
     1234#define ARMV8_ID_AA64ISAR0_EL1_FHM_SHIFT                        48
    12351235/** FMLAL and FMLSL instructions are not implemented. */
    12361236# define ARMV8_ID_AA64ISAR0_EL1_FHM_NOT_IMPL                    0
     
    12381238# define ARMV8_ID_AA64ISAR0_EL1_FHM_SUPPORTED                   1
    12391239/** Bit 52 - 55 - Indicates support for flag manipulation instructions. */
    1240 #define ARMV8_ID_AA64ISAR0_EL1_TS                               (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
    1241 #define ARMV8_ID_AA64ISAR0_EL1_TS_GET(a_IdAa64Isar0El1)         (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_TS) >> 52)
     1240#define ARMV8_ID_AA64ISAR0_EL1_TS_MASK                          (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
     1241#define ARMV8_ID_AA64ISAR0_EL1_TS_SHIFT                         52
    12421242/** No flag manipulation instructions implemented. */
    12431243# define ARMV8_ID_AA64ISAR0_EL1_TS_NOT_IMPL                     0
     
    12471247# define ARMV8_ID_AA64ISAR0_EL1_TS_SUPPORTED_2                  2
    12481248/** Bit 56 - 59 - Indicates support for Outer Shareable and TLB range maintenance instructions. */
    1249 #define ARMV8_ID_AA64ISAR0_EL1_TLB                              (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
    1250 #define ARMV8_ID_AA64ISAR0_EL1_TLB_GET(a_IdAa64Isar0El1)        (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_TLB) >> 56)
     1249#define ARMV8_ID_AA64ISAR0_EL1_TLB_MASK                         (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
     1250#define ARMV8_ID_AA64ISAR0_EL1_TLB_SHIFT                        56
    12511251/** Outer Sahreable and TLB range maintenance instructions are not implemented. */
    12521252# define ARMV8_ID_AA64ISAR0_EL1_TLB_NOT_IMPL                    0
     
    12561256# define ARMV8_ID_AA64ISAR0_EL1_TLB_SUPPORTED_RANGE             2
    12571257/** Bit 60 - 63 - Indicates support for Random Number instructons in AArch64 state. */
    1258 #define ARMV8_ID_AA64ISAR0_EL1_RNDR                             (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
    1259 #define ARMV8_ID_AA64ISAR0_EL1_RNDR_GET(a_IdAa64Isar0El1)       (((a_IdAa64Isar0El1) & ARMV8_ID_AA64ISAR0_EL1_RNDR) >> 60)
     1258#define ARMV8_ID_AA64ISAR0_EL1_RNDR_MASK                        (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
     1259#define ARMV8_ID_AA64ISAR0_EL1_RNDR_SHIFT                       60
    12601260/** No Random Number instructions implemented. */
    12611261# define ARMV8_ID_AA64ISAR0_EL1_RNDR_NOT_IMPL                   0
     
    12681268 * @{ */
    12691269/** Bit 0 - 3 - Indicates support for Data Persistence writeback instructions in AArch64 state. */
    1270 #define ARMV8_ID_AA64ISAR1_EL1_DPB                              (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
    1271 #define ARMV8_ID_AA64ISAR1_EL1_DPB_GET(a_IdAa64Isar1El1)        ((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_DPB)
     1270#define ARMV8_ID_AA64ISAR1_EL1_DPB_MASK                         (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
     1271#define ARMV8_ID_AA64ISAR1_EL1_DPB_SHIFT                        0
    12721272/** DC CVAP not supported. */
    12731273# define ARMV8_ID_AA64ISAR1_EL1_DPB_NOT_IMPL                    0
     
    12771277# define ARMV8_ID_AA64ISAR1_EL1_DPB_SUPPORTED_2                 2
    12781278/** Bit 4 - 7 - Indicates whether QARMA5 algorithm is implemented in the PE for address authentication. */
    1279 #define ARMV8_ID_AA64ISAR1_EL1_APA                              (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
    1280 #define ARMV8_ID_AA64ISAR1_EL1_APA_GET(a_IdAa64Isar1El1)        (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_APA) >> 4)
     1279#define ARMV8_ID_AA64ISAR1_EL1_APA_MASK                         (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
     1280#define ARMV8_ID_AA64ISAR1_EL1_APA_SHIFT                        4
    12811281/** Address Authentication using the QARMA5 algorithm is not implemented. */
    12821282# define ARMV8_ID_AA64ISAR1_EL1_APA_NOT_IMPL                    0
     
    12921292# define ARMV8_ID_AA64ISAR1_EL1_APA_SUPPORTED_FPACCOMBINE       5
    12931293/** Bit 8 - 11 - Indicates whether an implementation defined algorithm is implemented in the PE for address authentication. */
    1294 #define ARMV8_ID_AA64ISAR1_EL1_API                              (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
    1295 #define ARMV8_ID_AA64ISAR1_EL1_API_GET(a_IdAa64Isar1El1)        (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_API) >> 8)
     1294#define ARMV8_ID_AA64ISAR1_EL1_API_MASK                         (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
     1295#define ARMV8_ID_AA64ISAR1_EL1_API_SHIFT                        8
    12961296/** Address Authentication using the QARMA5 algorithm is not implemented. */
    12971297# define ARMV8_ID_AA64ISAR1_EL1_API_NOT_IMPL                    0
     
    13071307# define ARMV8_ID_AA64ISAR1_EL1_API_SUPPORTED_FPACCOMBINE       5
    13081308/** Bit 12 - 15 - Indicates support for JavaScript conversion from double precision floating values to integers in AArch64 state. */
    1309 #define ARMV8_ID_AA64ISAR1_EL1_FJCVTZS                          (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
    1310 #define ARMV8_ID_AA64ISAR1_EL1_FJCVTZS_GET(a_IdAa64Isar1El1)    (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_FJCVTZS) >> 12)
     1309#define ARMV8_ID_AA64ISAR1_EL1_FJCVTZS_MASK                     (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
     1310#define ARMV8_ID_AA64ISAR1_EL1_FJCVTZS_SHIFT                    12
    13111311/** No FJCVTZS instruction implemented. */
    13121312# define ARMV8_ID_AA64ISAR1_EL1_FJCVTZS_NOT_IMPL                0
     
    13141314# define ARMV8_ID_AA64ISAR1_EL1_FJCVTZS_SUPPORTED               1
    13151315/** Bit 16 - 19 - Indicates support for CRC32 instructions in AArch64 state. */
    1316 #define ARMV8_ID_AA64ISAR1_EL1_FCMA                             (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
    1317 #define ARMV8_ID_AA64ISAR1_EL1_FCMA_GET(a_IdAa64Isar1El1)       (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_FCMA) >> 16)
     1316#define ARMV8_ID_AA64ISAR1_EL1_FCMA_MASK                        (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
     1317#define ARMV8_ID_AA64ISAR1_EL1_FCMA_SHIFT                       16
    13181318/** No FCMLA and FCADD instructions implemented. */
    13191319# define ARMV8_ID_AA64ISAR1_EL1_FCMA_NOT_IMPL                   0
     
    13211321# define ARMV8_ID_AA64ISAR1_EL1_FCMA_SUPPORTED                  1
    13221322/** Bit 20 - 23 - Indicates support for weaker release consistency, RCpc, based model. */
    1323 #define ARMV8_ID_AA64ISAR1_EL1_LRCPC                            (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
    1324 #define ARMV8_ID_AA64ISAR1_EL1_LRCPC_GET(a_IdAa64Isar1El1)      (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_LRCPC) >> 20)
     1323#define ARMV8_ID_AA64ISAR1_EL1_LRCPC_MASK                       (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
     1324#define ARMV8_ID_AA64ISAR1_EL1_LRCPC_SHIFT                      20
    13251325/** No RCpc instructions implemented. */
    13261326# define ARMV8_ID_AA64ISAR1_EL1_LRCPC_NOT_IMPL                  0
    13271327/** The no offset LDAPR, LDAPRB and LDAPRH instructions are implemented (FEAT_LRCPC). */
    13281328# define ARMV8_ID_AA64ISAR1_EL1_LRCPC_SUPPORTED                 1
    1329 /** The no ffset LDAPR, LDAPRB, LDAPRH, LDAPR and STLR instructions are implemented (FEAT_LRCPC2). */
     1329/** The no offset LDAPR, LDAPRB, LDAPRH, LDAPR and STLR instructions are implemented (FEAT_LRCPC2). */
    13301330# define ARMV8_ID_AA64ISAR1_EL1_LRCPC_SUPPORTED_2               2
    13311331/** Bit 24 - 27 - Indicates whether the QARMA5 algorithm is implemented in the PE for generic code authentication in AArch64 state. */
    1332 #define ARMV8_ID_AA64ISAR1_EL1_GPA                              (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
    1333 #define ARMV8_ID_AA64ISAR1_EL1_GPA_GET(a_IdAa64Isar1El1)        (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_GPA) >> 24)
     1332#define ARMV8_ID_AA64ISAR1_EL1_GPA_MASK                         (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
     1333#define ARMV8_ID_AA64ISAR1_EL1_GPA_SHIFT                        24
    13341334/** Generic Authentication using the QARMA5 algorithm is not implemented. */
    13351335# define ARMV8_ID_AA64ISAR1_EL1_GPA_NOT_IMPL                    0
     
    13371337# define ARMV8_ID_AA64ISAR1_EL1_GPA_SUPPORTED                   1
    13381338/** Bit 28 - 31 - Indicates whether an implementation defined algorithm is implemented in the PE for generic code authentication in AArch64 state. */
    1339 #define ARMV8_ID_AA64ISAR1_EL1_GPI                              (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
    1340 #define ARMV8_ID_AA64ISAR1_EL1_GPI_GET(a_IdAa64Isar1El1)        (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_GPI) >> 28)
     1339#define ARMV8_ID_AA64ISAR1_EL1_GPI_MASK                         (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
     1340#define ARMV8_ID_AA64ISAR1_EL1_GPI_SHIFT                        28
    13411341/** Generic Authentication using an implementation defined algorithm is not implemented. */
    13421342# define ARMV8_ID_AA64ISAR1_EL1_GPI_NOT_IMPL                    0
     
    13441344# define ARMV8_ID_AA64ISAR1_EL1_GPI_SUPPORTED                   1
    13451345/** Bit 32 - 35 - Indicates support for SHA3 instructions in AArch64 state. */
    1346 #define ARMV8_ID_AA64ISAR1_EL1_FRINTTS                          (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
    1347 #define ARMV8_ID_AA64ISAR1_EL1_FRINTTS_GET(a_IdAa64Isar1El1)    (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_FRINTTS) >> 32)
     1346#define ARMV8_ID_AA64ISAR1_EL1_FRINTTS_MASK                     (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
     1347#define ARMV8_ID_AA64ISAR1_EL1_FRINTTS_SHIFT                    32
    13481348/** FRINT32Z, FRINT32X, FRINT64Z and FRINT64X instructions are not implemented. */
    13491349# define ARMV8_ID_AA64ISAR1_EL1_FRINTTS_NOT_IMPL                0
     
    13511351# define ARMV8_ID_AA64ISAR1_EL1_FRINTTS_SUPPORTED               1
    13521352/** Bit 36 - 39 - Indicates support for SB instructions in AArch64 state. */
    1353 #define ARMV8_ID_AA64ISAR1_EL1_SB                               (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
    1354 #define ARMV8_ID_AA64ISAR1_EL1_SB_GET(a_IdAa64Isar1El1)         (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_SB) >> 36)
     1353#define ARMV8_ID_AA64ISAR1_EL1_SB_MASK                          (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
     1354#define ARMV8_ID_AA64ISAR1_EL1_SB_SHIFT                         36
    13551355/** No SB instructions implemented. */
    13561356# define ARMV8_ID_AA64ISAR1_EL1_SB_NOT_IMPL                     0
     
    13581358# define ARMV8_ID_AA64ISAR1_EL1_SB_SUPPORTED                    1
    13591359/** Bit 40 - 43 - Indicates support for prediction invalidation instructions in AArch64 state. */
    1360 #define ARMV8_ID_AA64ISAR1_EL1_SPECRES                          (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
    1361 #define ARMV8_ID_AA64ISAR1_EL1_SPECRES_GET(a_IdAa64Isar1El1)    (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_SPECRES) >> 40)
     1360#define ARMV8_ID_AA64ISAR1_EL1_SPECRES_MASK                     (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
     1361#define ARMV8_ID_AA64ISAR1_EL1_SPECRES_SHIFT                    40
    13621362/** Prediction invalidation instructions are not implemented. */
    13631363# define ARMV8_ID_AA64ISAR1_EL1_SPECRES_NOT_IMPL                0
     
    13651365# define ARMV8_ID_AA64ISAR1_EL1_SPECRES_SUPPORTED               1
    13661366/** Bit 44 - 47 - Indicates support for Advanced SIMD and Floating-point BFloat16 instructions in AArch64 state. */
    1367 #define ARMV8_ID_AA64ISAR1_EL1_BF16                             (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
    1368 #define ARMV8_ID_AA64ISAR1_EL1_BF16_GET(a_IdAa64Isar1El1)       (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_DP) >> 44)
     1367#define ARMV8_ID_AA64ISAR1_EL1_BF16_MASK                        (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
     1368#define ARMV8_ID_AA64ISAR1_EL1_BF16_SHIFT                       44
    13691369/** BFloat16 instructions are not implemented. */
    13701370# define ARMV8_ID_AA64ISAR1_EL1_BF16_NOT_IMPL                   0
     
    13741374# define ARMV8_ID_AA64ISAR1_EL1_BF16_SUPPORTED_EBF16            2
    13751375/** Bit 48 - 51 - Indicates support for Data Gathering Hint instructions. */
    1376 #define ARMV8_ID_AA64ISAR1_EL1_DGH                              (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
    1377 #define ARMV8_ID_AA64ISAR1_EL1_DGH_GET(a_IdAa64Isar1El1)        (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_DGH) >> 48)
     1376#define ARMV8_ID_AA64ISAR1_EL1_DGH_MASK                         (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
     1377#define ARMV8_ID_AA64ISAR1_EL1_DGH_SHIFT                        48
    13781378/** Data Gathering Hint instructions are not implemented. */
    13791379# define ARMV8_ID_AA64ISAR1_EL1_DGH_NOT_IMPL                    0
     
    13811381# define ARMV8_ID_AA64ISAR1_EL1_DGH_SUPPORTED                   1
    13821382/** Bit 52 - 55 - Indicates support for Advanced SIMD and Floating-point Int8 matri multiplication instructions. */
    1383 #define ARMV8_ID_AA64ISAR1_EL1_I8MM                             (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
    1384 #define ARMV8_ID_AA64ISAR1_EL1_I8MM_GET(a_IdAa64Isar1El1)       (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_I8MM) >> 52)
     1383#define ARMV8_ID_AA64ISAR1_EL1_I8MM_MASK                        (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
     1384#define ARMV8_ID_AA64ISAR1_EL1_I8MM_SHIFT                       52
    13851385/** No Int8 matrix multiplication instructions implemented. */
    13861386# define ARMV8_ID_AA64ISAR1_EL1_I8MM_NOT_IMPL                   0
     
    13881388# define ARMV8_ID_AA64ISAR1_EL1_I8MM_SUPPORTED                  1
    13891389/** Bit 56 - 59 - Indicates support for the XS attribute, the TLBI and DSB insturctions with the nXS qualifier in AArch64 state. */
    1390 #define ARMV8_ID_AA64ISAR1_EL1_XS                               (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
    1391 #define ARMV8_ID_AA64ISAR1_EL1_XS_GET(a_IdAa64Isar1El1)         (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_XS) >> 56)
     1390#define ARMV8_ID_AA64ISAR1_EL1_XS_MASK                          (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
     1391#define ARMV8_ID_AA64ISAR1_EL1_XS_SHIFT                         56
    13921392/** The XS attribute and the TLBI and DSB instructions with the nXS qualifier are not supported. */
    13931393# define ARMV8_ID_AA64ISAR1_EL1_XS_NOT_IMPL                     0
     
    13951395# define ARMV8_ID_AA64ISAR1_EL1_XS_SUPPORTED                    1
    13961396/** Bit 60 - 63 - Indicates support LD64B and ST64B* instructons and the ACCDATA_EL1 register. */
    1397 #define ARMV8_ID_AA64ISAR1_EL1_LS64                             (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
    1398 #define ARMV8_ID_AA64ISAR1_EL1_LS64_GET(a_IdAa64Isar1El1)       (((a_IdAa64Isar1El1) & ARMV8_ID_AA64ISAR1_EL1_LS64) >> 60)
     1397#define ARMV8_ID_AA64ISAR1_EL1_LS64_MASK                        (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
     1398#define ARMV8_ID_AA64ISAR1_EL1_LS64_SHIFT                       60
    13991399/** The LD64B, ST64B, ST64BV and ST64BV0 instructions, the ACCDATA_EL1 register and associated traps are not supported. */
    14001400# define ARMV8_ID_AA64ISAR1_EL1_LS64_NOT_IMPL                   0
     
    14111411 * @{ */
    14121412/** Bit 0 - 3 - Indicates support for WFET and WFIT instructions in AArch64 state. */
    1413 #define ARMV8_ID_AA64ISAR2_EL1_WFXT                             (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
    1414 #define ARMV8_ID_AA64ISAR2_EL1_WFXT_GET(a_IdAa64Isar2El1)       ((a_IdAa64Isar2El1) & ARMV8_ID_AA64ISAR2_EL1_WFXT)
     1413#define ARMV8_ID_AA64ISAR2_EL1_WFXT_MASK                        (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
     1414#define ARMV8_ID_AA64ISAR2_EL1_WFXT_SHIFT                       0
    14151415/** WFET and WFIT are not supported. */
    14161416# define ARMV8_ID_AA64ISAR2_EL1_WFXT_NOT_IMPL                   0
    14171417/** WFET and WFIT are supported (FEAT_WFxT). */
    14181418# define ARMV8_ID_AA64ISAR2_EL1_WFXT_SUPPORTED                  2
    1419 /** Bit 4 - 7 - Indicates whether QARMA5 algorithm is implemented in the PE for address authentication. */
    1420 #define ARMV8_ID_AA64ISAR2_EL1_RPRES                            (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
    1421 #define ARMV8_ID_AA64ISAR2_EL1_RPRES_GET(a_IdAa64Isar2El1)      (((a_IdAa64Isar2El1) & ARMV8_ID_AA64ISAR2_EL1_RPRES) >> 4)
     1419/** Bit 4 - 7 - Indicates support for 12 bits of mantissa in reciprocal and reciprocal square root instructions in AArch64 state, when FPCR.AH is 1. */
     1420#define ARMV8_ID_AA64ISAR2_EL1_RPRES_MASK                       (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
     1421#define ARMV8_ID_AA64ISAR2_EL1_RPRES_SHIFT                      4
    14221422/** Reciprocal and reciprocal square root estimates give 8 bits of mantissa when FPCR.AH is 1. */
    14231423# define ARMV8_ID_AA64ISAR2_EL1_RPRES_NOT_IMPL                  0
     
    14251425# define ARMV8_ID_AA64ISAR2_EL1_RPRES_SUPPORTED                 1
    14261426/** Bit 8 - 11 - Indicates whether the QARMA3 algorithm is implemented in the PE for generic code authentication in AArch64 state. */
    1427 #define ARMV8_ID_AA64ISAR2_EL1_GPA3                             (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
    1428 #define ARMV8_ID_AA64ISAR2_EL1_GPA3_GET(a_IdAa64Isar2El1)       (((a_IdAa64Isar2El1) & ARMV8_ID_AA64ISAR2_EL1_API) >> 8)
     1427#define ARMV8_ID_AA64ISAR2_EL1_GPA3_MASK                        (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
     1428#define ARMV8_ID_AA64ISAR2_EL1_GPA3_SHIFT                       8
    14291429/** Generic Authentication using the QARMA3 algorithm is not implemented. */
    14301430# define ARMV8_ID_AA64ISAR2_EL1_GPA3_NOT_IMPL                   0
     
    14321432# define ARMV8_ID_AA64ISAR2_EL1_GPA3_SUPPORTED                  1
    14331433/** Bit 12 - 15 - Indicates whether QARMA3 algorithm is implemented in the PE for address authentication. */
    1434 #define ARMV8_ID_AA64ISAR2_EL1_APA3                             (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
    1435 #define ARMV8_ID_AA64ISAR2_EL1_APA3_GET(a_IdAa64Isar2El1)       (((a_IdAa64Isar2El1) & ARMV8_ID_AA64ISAR2_EL1_APA3) >> 12)
     1434#define ARMV8_ID_AA64ISAR2_EL1_APA3_MASK                        (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
     1435#define ARMV8_ID_AA64ISAR2_EL1_APA3_SHIFT                       12
    14361436/** Address Authentication using the QARMA3 algorithm is not implemented. */
    14371437# define ARMV8_ID_AA64ISAR2_EL1_APA3_NOT_IMPL                   0
     
    14471447# define ARMV8_ID_AA64ISAR2_EL1_APA3_SUPPORTED_FPACCOMBINE      5
    14481448/** Bit 16 - 19 - Indicates support for Memory Copy and Memory Set instructions in AArch64 state. */
    1449 #define ARMV8_ID_AA64ISAR2_EL1_MOPS                             (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
    1450 #define ARMV8_ID_AA64ISAR2_EL1_MOPS_GET(a_IdAa64Isar2El1)       (((a_IdAa64Isar2El1) & ARMV8_ID_AA64ISAR2_EL1_MOPS) >> 16)
     1449#define ARMV8_ID_AA64ISAR2_EL1_MOPS_MASK                        (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
     1450#define ARMV8_ID_AA64ISAR2_EL1_MOPS_SHIFT                       16
    14511451/** No Memory Copy and Memory Set instructions implemented. */
    14521452# define ARMV8_ID_AA64ISAR2_EL1_MOPS_NOT_IMPL                   0
     
    14541454# define ARMV8_ID_AA64ISAR2_EL1_MOPS_SUPPORTED                  1
    14551455/** Bit 20 - 23 - Indicates support for weaker release consistency, RCpc, based model. */
    1456 #define ARMV8_ID_AA64ISAR2_EL1_BC                               (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
    1457 #define ARMV8_ID_AA64ISAR2_EL1_BC_GET(a_IdAa64Isar2El1)         (((a_IdAa64Isar2El1) & ARMV8_ID_AA64ISAR2_EL1_BC) >> 20)
     1456#define ARMV8_ID_AA64ISAR2_EL1_BC_MASK                          (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
     1457#define ARMV8_ID_AA64ISAR2_EL1_BC_SHIFT                         20
    14581458/** BC instruction is not implemented. */
    14591459# define ARMV8_ID_AA64ISAR2_EL1_BC_NOT_IMPL                     0
    14601460/** BC instruction is implemented (FEAT_HBC). */
    14611461# define ARMV8_ID_AA64ISAR2_EL1_BC_SUPPORTED                    1
    1462 /** Bit 24 - 27 - Indicates whether the QARMA5 algorithm is implemented in the PE for generic code authentication in AArch64 state. */
    1463 #define ARMV8_ID_AA64ISAR2_EL1_PACFRAC                          (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
    1464 #define ARMV8_ID_AA64ISAR2_EL1_PACFRAC_GET(a_IdAa64Isar2El1)    (((a_IdAa64Isar2El1) & ARMV8_ID_AA64ISAR2_EL1_PACFRAC) >> 24)
     1462/** Bit 24 - 27 - Indicates whether the ConstPACField() functions used as part of PAC additions returns FALSE or TRUE. */
     1463#define ARMV8_ID_AA64ISAR2_EL1_PACFRAC_MASK                     (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
     1464#define ARMV8_ID_AA64ISAR2_EL1_PACFRAC_SHIFT                    24
    14651465/** ConstPACField() returns FALSE. */
    14661466# define ARMV8_ID_AA64ISAR2_EL1_PACFRAC_FALSE                   0
     
    14741474 * @{ */
    14751475/** Bit 0 - 3 - EL0 Exception level handling. */
    1476 #define ARMV8_ID_AA64PFR0_EL1_EL0                               (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
    1477 #define ARMV8_ID_AA64PFR0_EL1_EL0_GET(a_IdAa64Pfr0El1)          ((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_EL0)
     1476#define ARMV8_ID_AA64PFR0_EL1_EL0_MASK                          (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
     1477#define ARMV8_ID_AA64PFR0_EL1_EL0_SHIFT                         0
    14781478/** EL0 can be executed in AArch64 state only. */
    14791479# define ARMV8_ID_AA64PFR0_EL1_EL0_AARCH64_ONLY                 1
     
    14811481# define ARMV8_ID_AA64PFR0_EL1_EL0_AARCH64_AARCH32              2
    14821482/** Bit 4 - 7 - EL1 Exception level handling. */
    1483 #define ARMV8_ID_AA64PFR0_EL1_EL1                               (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
    1484 #define ARMV8_ID_AA64PFR0_EL1_EL1_GET(a_IdAa64Pfr0El1)          (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_EL1) >> 4)
     1483#define ARMV8_ID_AA64PFR0_EL1_EL1_MASK                          (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
     1484#define ARMV8_ID_AA64PFR0_EL1_EL1_SHIFT                         4
    14851485/** EL1 can be executed in AArch64 state only. */
    14861486# define ARMV8_ID_AA64PFR0_EL1_EL1_AARCH64_ONLY                 1
     
    14881488# define ARMV8_ID_AA64PFR0_EL1_EL1_AARCH64_AARCH32              2
    14891489/** Bit 8 - 11 - EL2 Exception level handling. */
    1490 #define ARMV8_ID_AA64PFR0_EL1_EL2                               (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
    1491 #define ARMV8_ID_AA64PFR0_EL1_EL2_GET(a_IdAa64Pfr0El1)          (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_EL2) >> 8)
     1490#define ARMV8_ID_AA64PFR0_EL1_EL2_MASK                          (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
     1491#define ARMV8_ID_AA64PFR0_EL1_EL2_SHIFT                         8
    14921492/** EL2 is not implemented. */
    14931493# define ARMV8_ID_AA64PFR0_EL1_EL2_NOT_IMPL                     0
     
    14971497# define ARMV8_ID_AA64PFR0_EL1_EL2_AARCH64_AARCH32              2
    14981498/** Bit 12 - 15 - EL3 Exception level handling. */
    1499 #define ARMV8_ID_AA64PFR0_EL1_EL3                               (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
    1500 #define ARMV8_ID_AA64PFR0_EL1_EL3_GET(a_IdAa64Pfr0El1)          (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_EL3) >> 12)
     1499#define ARMV8_ID_AA64PFR0_EL1_EL3_MASK                          (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
     1500#define ARMV8_ID_AA64PFR0_EL1_EL3_SHIFT                         12
    15011501/** EL3 is not implemented. */
    15021502# define ARMV8_ID_AA64PFR0_EL1_EL3_NOT_IMPL                     0
     
    15061506# define ARMV8_ID_AA64PFR0_EL1_EL3_AARCH64_AARCH32              2
    15071507/** Bit 16 - 19 - Floating-point support. */
    1508 #define ARMV8_ID_AA64PFR0_EL1_FP                                (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
    1509 #define ARMV8_ID_AA64PFR0_EL1_FP_GET(a_IdAa64Pfr0El1)           (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_EL3) >> 16)
     1508#define ARMV8_ID_AA64PFR0_EL1_FP_MASK                           (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
     1509#define ARMV8_ID_AA64PFR0_EL1_FP_SHIFT                          16
    15101510/** Floating-point is implemented and support single and double precision. */
    15111511# define ARMV8_ID_AA64PFR0_EL1_FP_IMPL_SP_DP                    0
     
    15151515# define ARMV8_ID_AA64PFR0_EL1_FP_NOT_IMPL                      0xf
    15161516/** Bit 20 - 23 - Advanced SIMD support. */
    1517 #define ARMV8_ID_AA64PFR0_EL1_ADVSIMD                           (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
    1518 #define ARMV8_ID_AA64PFR0_EL1_ADVSIMD_GET(a_IdAa64Pfr0El1)      (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_ADVSIMD) >> 20)
     1517#define ARMV8_ID_AA64PFR0_EL1_ADVSIMD_MASK                      (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
     1518#define ARMV8_ID_AA64PFR0_EL1_ADVSIMD_SHIFT                     20
    15191519/** Advanced SIMD is implemented and support single and double precision. */
    15201520# define ARMV8_ID_AA64PFR0_EL1_ADVSIMD_IMPL_SP_DP               0
     
    15241524# define ARMV8_ID_AA64PFR0_EL1_ADVSIMD_NOT_IMPL                 0xf
    15251525/** Bit 24 - 27 - System register GIC CPU interface support. */
    1526 #define ARMV8_ID_AA64PFR0_EL1_GIC                               (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
    1527 #define ARMV8_ID_AA64PFR0_EL1_GIC_GET(a_IdAa64Pfr0El1)          (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_GIC) >> 24)
     1526#define ARMV8_ID_AA64PFR0_EL1_GIC_MASK                          (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
     1527#define ARMV8_ID_AA64PFR0_EL1_GIC_SHIFT                         24
    15281528/** GIC CPU interface system registers are not implemented. */
    15291529# define ARMV8_ID_AA64PFR0_EL1_GIC_NOT_IMPL                     0
     
    15331533# define ARMV8_ID_AA64PFR0_EL1_GIC_V4_1                         3
    15341534/** Bit 28 - 31 - RAS Extension version. */
    1535 #define ARMV8_ID_AA64PFR0_EL1_RAS                               (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
    1536 #define ARMV8_ID_AA64PFR0_EL1_RAS_GET(a_IdAa64Pfr0El1)          (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_RAS) >> 28)
     1535#define ARMV8_ID_AA64PFR0_EL1_RAS_MASK                          (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
     1536#define ARMV8_ID_AA64PFR0_EL1_RAS_SHIFT                         28
    15371537/** No RAS extension. */
    15381538# define ARMV8_ID_AA64PFR0_EL1_RAS_NOT_IMPL                     0
     
    15421542# define ARMV8_ID_AA64PFR0_EL1_RAS_V1P1                         2
    15431543/** Bit 32 - 35 - Scalable Vector Extension (SVE) support. */
    1544 #define ARMV8_ID_AA64PFR0_EL1_SVE                               (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
    1545 #define ARMV8_ID_AA64PFR0_EL1_SVE_GET(a_IdAa64Pfr0El1)          (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_SVE) >> 32)
     1544#define ARMV8_ID_AA64PFR0_EL1_SVE_MASK                          (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
     1545#define ARMV8_ID_AA64PFR0_EL1_SVE_SHIFT                         32
    15461546/** SVE is not supported. */
    15471547# define ARMV8_ID_AA64PFR0_EL1_SVE_NOT_IMPL                     0
     
    15491549# define ARMV8_ID_AA64PFR0_EL1_SVE_SUPPORTED                    1
    15501550/** Bit 36 - 39 - Secure EL2 support. */
    1551 #define ARMV8_ID_AA64PFR0_EL1_SEL2                              (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
    1552 #define ARMV8_ID_AA64PFR0_EL1_SEL2_GET(a_IdAa64Pfr0El1)         (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_SEL2) >> 36)
     1551#define ARMV8_ID_AA64PFR0_EL1_SEL2_MASK                         (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
     1552#define ARMV8_ID_AA64PFR0_EL1_SEL2_SHIFT                        36
    15531553/** Secure EL2 is not supported. */
    15541554# define ARMV8_ID_AA64PFR0_EL1_SEL2_NOT_IMPL                    0
     
    15561556# define ARMV8_ID_AA64PFR0_EL1_SEL2_SUPPORTED                   1
    15571557/** Bit 40 - 43 - MPAM support. */
    1558 #define ARMV8_ID_AA64PFR0_EL1_MPAM                              (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
    1559 #define ARMV8_ID_AA64PFR0_EL1_MPAM_GET(a_IdAa64Pfr0El1)         (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_MPAM) >> 40)
     1558#define ARMV8_ID_AA64PFR0_EL1_MPAM_MASK                         (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
     1559#define ARMV8_ID_AA64PFR0_EL1_MPAM_SHIFT                        40
    15601560/** MPAM extension major version number is 0. */
    15611561# define ARMV8_ID_AA64PFR0_EL1_MPAM_MAJOR_V0                    0
     
    15631563# define ARMV8_ID_AA64PFR0_EL1_MPAM_MAJOR_V1                    1
    15641564/** Bit 44 - 47 - Activity Monitor Extension support. */
    1565 #define ARMV8_ID_AA64PFR0_EL1_AMU                               (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
    1566 #define ARMV8_ID_AA64PFR0_EL1_AMU_GET(a_IdAa64Pfr0El1)          (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_AMU) >> 44)
     1565#define ARMV8_ID_AA64PFR0_EL1_AMU_MASK                          (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
     1566#define ARMV8_ID_AA64PFR0_EL1_AMU_SHIFT                         44
    15671567/** Activity Monitor extension is not implemented. */
    15681568# define ARMV8_ID_AA64PFR0_EL1_AMU_NOT_IMPL                     0
     
    15721572# define ARMV8_ID_AA64PFR0_EL1_AMU_V1P1                         2
    15731573/** Bit 48 - 51 - Data Independent Timing support. */
    1574 #define ARMV8_ID_AA64PFR0_EL1_DIT                               (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
    1575 #define ARMV8_ID_AA64PFR0_EL1_DIT_GET(a_IdAa64Pfr0El1)          (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_DIT) >> 48)
     1574#define ARMV8_ID_AA64PFR0_EL1_DIT_MASK                          (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
     1575#define ARMV8_ID_AA64PFR0_EL1_DIT_SHIFT                         48
    15761576/** AArch64 does not guarantee constant execution time of any instructions. */
    15771577# define ARMV8_ID_AA64PFR0_EL1_DIT_NOT_IMPL                     0
     
    15791579# define ARMV8_ID_AA64PFR0_EL1_DIT_SUPPORTED                    1
    15801580/** Bit 52 - 55 - Realm Management Extension support. */
    1581 #define ARMV8_ID_AA64PFR0_EL1_RME                               (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
    1582 #define ARMV8_ID_AA64PFR0_EL1_RME_GET(a_IdAa64Pfr0El1)          (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_RME) >> 52)
     1581#define ARMV8_ID_AA64PFR0_EL1_RME_MASK                          (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
     1582#define ARMV8_ID_AA64PFR0_EL1_RME_SHIFT                         52
    15831583/** Realm Management Extension not implemented. */
    15841584# define ARMV8_ID_AA64PFR0_EL1_RME_NOT_IMPL                     0
     
    15861586# define ARMV8_ID_AA64PFR0_EL1_RME_SUPPORTED                    1
    15871587/** Bit 56 - 59 - Speculative use out of context branch targets support. */
    1588 #define ARMV8_ID_AA64PFR0_EL1_CSV2                              (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
    1589 #define ARMV8_ID_AA64PFR0_EL1_CSV2_GET(a_IdAa64Pfr0El1)         (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_CSV2) >> 56)
     1588#define ARMV8_ID_AA64PFR0_EL1_CSV2_MASK                         (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
     1589#define ARMV8_ID_AA64PFR0_EL1_CSV2_SHIFT                        56
    15901590/** Implementation does not disclose whether FEAT_CSV2 is implemented. */
    15911591# define ARMV8_ID_AA64PFR0_EL1_CSV2_NOT_EXPOSED                 0
     
    15971597# define ARMV8_ID_AA64PFR0_EL1_CSV2_3_SUPPORTED                 3
    15981598/** Bit 60 - 63 - Speculative use of faulting data support. */
    1599 #define ARMV8_ID_AA64PFR0_EL1_CSV3                              (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
    1600 #define ARMV8_ID_AA64PFR0_EL1_CSV3_GET(a_IdAa64Pfr0El1)         (((a_IdAa64Pfr0El1) & ARMV8_ID_AA64PFR0_EL1_CSV3) >> 60)
     1599#define ARMV8_ID_AA64PFR0_EL1_CSV3_MASK                         (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
     1600#define ARMV8_ID_AA64PFR0_EL1_CSV3_SHIFT                        60
    16011601/** Implementation does not disclose whether data loaded under speculation with a permission or domain fault can be used. */
    16021602# define ARMV8_ID_AA64PFR0_EL1_CSV3_NOT_EXPOSED                 0
     
    16091609 * @{ */
    16101610/** Bit 0 - 3 - Branch Target Identification support. */
    1611 #define ARMV8_ID_AA64PFR1_EL1_BT                                (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
    1612 #define ARMV8_ID_AA64PFR1_EL1_BT_GET(a_IdAa64Pfr1El1)           ((a_IdAa64Pfr1El1) & ARMV8_ID_AA64PFR1_EL1_BT)
     1611#define ARMV8_ID_AA64PFR1_EL1_BT_MASK                           (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
     1612#define ARMV8_ID_AA64PFR1_EL1_BT_SHIFT                          0
    16131613/** The Branch Target Identification mechanism is not implemented. */
    16141614# define ARMV8_ID_AA64PFR1_EL1_BT_NOT_IMPL                      0
     
    16161616# define ARMV8_ID_AA64PFR1_EL1_BT_SUPPORTED                     1
    16171617/** Bit 4 - 7 - Speculative Store Bypassing control support. */
    1618 #define ARMV8_ID_AA64PFR1_EL1_SSBS                              (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
    1619 #define ARMV8_ID_AA64PFR1_EL1_SSBS_GET(a_IdAa64Pfr1El1)         (((a_IdAa64Pfr1El1) & ARMV8_ID_AA64PFR1_EL1_SSBS) >> 4)
     1618#define ARMV8_ID_AA64PFR1_EL1_SSBS_MASK                         (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
     1619#define ARMV8_ID_AA64PFR1_EL1_SSBS_SHIFT                        4
    16201620/** AArch64 provides no mechanism to control the use of Speculative Store Bypassing. */
    16211621# define ARMV8_ID_AA64PFR1_EL1_SSBS_NOT_IMPL                    0
     
    16261626# define ARMV8_ID_AA64PFR1_EL1_SSBS_SUPPORTED_MSR_MRS           2
    16271627/** Bit 8 - 11 - Memory Tagging Extension support. */
    1628 #define ARMV8_ID_AA64PFR1_EL1_MTE                               (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
    1629 #define ARMV8_ID_AA64PFR1_EL1_MTE_GET(a_IdAa64Pfr1El1)          (((a_IdAa64Pfr1El1) & ARMV8_ID_AA64PFR1_EL1_MTE) >> 8)
     1628#define ARMV8_ID_AA64PFR1_EL1_MTE_MASK                          (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
     1629#define ARMV8_ID_AA64PFR1_EL1_MTE_SHIFT                         8
    16301630/** MTE is not implemented. */
    16311631# define ARMV8_ID_AA64PFR1_EL1_MTE_NOT_IMPL                     0
     
    16371637# define ARMV8_ID_AA64PFR1_EL1_MTE_FULL_ASYM_TAG_FAULT_CHK      3
    16381638/** Bit 12 - 15 - RAS Extension fractional field. */
    1639 #define ARMV8_ID_AA64PFR1_EL1_RASFRAC                           (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
    1640 #define ARMV8_ID_AA64PFR1_EL1_RASFRAC_GET(a_IdAa64Pfr1El1)      (((a_IdAa64Pfr1El1) & ARMV8_ID_AA64PFR1_EL1_RASFRAC) >> 12)
     1639#define ARMV8_ID_AA64PFR1_EL1_RASFRAC_MASK                      (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
     1640#define ARMV8_ID_AA64PFR1_EL1_RASFRAC_SHIFT                     12
    16411641/** RAS Extension is implemented. */
    16421642# define ARMV8_ID_AA64PFR1_EL1_RASFRAC_IMPL                     0
     
    16441644# define ARMV8_ID_AA64PFR1_EL1_RASFRAC_RASV1P1                  1
    16451645/** Bit 16 - 19 - MPAM minor version number. */
    1646 #define ARMV8_ID_AA64PFR1_EL1_MPAMFRAC                          (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
    1647 #define ARMV8_ID_AA64PFR1_EL1_MPAMFRAC_GET(a_IdAa64Pfr1El1)     (((a_IdAa64Pfr1El1) & ARMV8_ID_AA64PFR1_EL1_MPAMFRAC) >> 16)
     1646#define ARMV8_ID_AA64PFR1_EL1_MPAMFRAC_MASK                     (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
     1647#define ARMV8_ID_AA64PFR1_EL1_MPAMFRAC_SHIFT                    16
    16481648/** The minor version of number of the MPAM extension is 0. */
    16491649# define ARMV8_ID_AA64PFR1_EL1_MPAMFRAC_0                       0
     
    16521652/* Bit 20 - 23 - Reserved. */
    16531653/** Bit 24 - 27 - Scalable Matrix Extension support. */
    1654 #define ARMV8_ID_AA64PFR1_EL1_SME                               (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
    1655 #define ARMV8_ID_AA64PFR1_EL1_SME_GET(a_IdAa64Pfr1El1)          (((a_IdAa64Pfr1El1) & ARMV8_ID_AA64PFR1_EL1_SME) >> 24)
     1654#define ARMV8_ID_AA64PFR1_EL1_SME_MASK                          (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
     1655#define ARMV8_ID_AA64PFR1_EL1_SME_SHIFT                         24
    16561656/** Scalable Matrix Extensions are not implemented. */
    16571657# define ARMV8_ID_AA64PFR1_EL1_SME_NOT_IMPL                     0
     
    16611661# define ARMV8_ID_AA64PFR1_EL1_SME_SME2                         2
    16621662/** Bit 28 - 31 - Random Number trap to EL3 support. */
    1663 #define ARMV8_ID_AA64PFR1_EL1_RNDRTRAP                          (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
    1664 #define ARMV8_ID_AA64PFR1_EL1_RNDRTRAP_GET(a_IdAa64Pfr1El1)     (((a_IdAa64Pfr1El1) & ARMV8_ID_AA64PFR1_EL1_RNDRTRAP) >> 28)
     1663#define ARMV8_ID_AA64PFR1_EL1_RNDRTRAP_MASK                     (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
     1664#define ARMV8_ID_AA64PFR1_EL1_RNDRTRAP_SHIFT                    28
    16651665/** Trapping of RNDR and RNDRRS to EL3 is not supported. */
    16661666# define ARMV8_ID_AA64PFR1_EL1_RNDRTRAP_NOT_IMPL                0
     
    16681668# define ARMV8_ID_AA64PFR1_EL1_RNDRTRAP_SUPPORTED               1
    16691669/** Bit 32 - 35 - CSV2 fractional field. */
    1670 #define ARMV8_ID_AA64PFR1_EL1_CSV2FRAC                          (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
    1671 #define ARMV8_ID_AA64PFR1_EL1_CSV2FRAC_GET(a_IdAa64Pfr1El1)     (((a_IdAa64Pfr1El1) & ARMV8_ID_AA64PFR1_EL1_CSV2FRAC) >> 32)
     1670#define ARMV8_ID_AA64PFR1_EL1_CSV2FRAC_MASK                     (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
     1671#define ARMV8_ID_AA64PFR1_EL1_CSV2FRAC_SHIFT                    32
    16721672/** Either CSV2 not exposed or implementation does not expose whether FEAT_CSV2_1p1 is implemented. */
    16731673# define ARMV8_ID_AA64PFR1_EL1_CSV2FRAC_NOT_EXPOSED             0
     
    16771677# define ARMV8_ID_AA64PFR1_EL1_CSV2FRAC_1P2                     2
    16781678/** Bit 36 - 39 - Non-maskable Interrupt support. */
    1679 #define ARMV8_ID_AA64PFR1_EL1_NMI                               (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
    1680 #define ARMV8_ID_AA64PFR1_EL1_NMI_GET(a_IdAa64Pfr1El1)          (((a_IdAa64Pfr1El1) & ARMV8_ID_AA64PFR1_EL1_NMI) >> 36)
     1679#define ARMV8_ID_AA64PFR1_EL1_NMI_MASK                          (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
     1680#define ARMV8_ID_AA64PFR1_EL1_NMI_SHIFT                         36
    16811681/** SCTLR_ELx.{SPINTMASK, NMI} and PSTATE.ALLINT and associated instructions are not supported. */
    16821682# define ARMV8_ID_AA64PFR1_EL1_NMI_NOT_IMPL                     0
     
    16891689 * @{ */
    16901690/** Bit 0 - 3 - Physical Address range supported. */
    1691 #define ARMV8_ID_AA64MMFR0_EL1_PARANGE                          (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
    1692 #define ARMV8_ID_AA64MMFR0_EL1_PARANGE_GET(a_IdAa64Mmfr0El1)    ((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_PARANGE)
     1691#define ARMV8_ID_AA64MMFR0_EL1_PARANGE_MASK                     (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
     1692#define ARMV8_ID_AA64MMFR0_EL1_PARANGE_SHIFT                    0
    16931693/** Physical Address range is 32 bits, 4GiB. */
    16941694# define ARMV8_ID_AA64MMFR0_EL1_PARANGE_32BITS                  0
     
    17061706# define ARMV8_ID_AA64MMFR0_EL1_PARANGE_52BITS                  6
    17071707/** Bit 4 - 7 - Number of ASID bits. */
    1708 #define ARMV8_ID_AA64MMFR0_EL1_ASIDBITS                         (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
    1709 #define ARMV8_ID_AA64MMFR0_EL1_ASIDBITS_GET(a_IdAa64Mmfr0El1)   (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_ASIDBITS) >> 4)
     1708#define ARMV8_ID_AA64MMFR0_EL1_ASIDBITS_MASK                    (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
     1709#define ARMV8_ID_AA64MMFR0_EL1_ASIDBITS_SHIFT                   4
    17101710/** ASID bits is 8. */
    17111711# define ARMV8_ID_AA64MMFR0_EL1_ASIDBITS_8                      0
     
    17131713# define ARMV8_ID_AA64MMFR0_EL1_ASIDBITS_16                     2
    17141714/** Bit 8 - 11 - Indicates support for mixed-endian configuration. */
    1715 #define ARMV8_ID_AA64MMFR0_EL1_BIGEND                           (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
    1716 #define ARMV8_ID_AA64MMFR0_EL1_BIGEND_GET(a_IdAa64Mmfr0El1)     (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_BIGEND) >> 8)
     1715#define ARMV8_ID_AA64MMFR0_EL1_BIGEND_MASK                      (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
     1716#define ARMV8_ID_AA64MMFR0_EL1_BIGEND_SHIFT                     8
    17171717/** No mixed-endian support. */
    17181718# define ARMV8_ID_AA64MMFR0_EL1_BIGEND_NOT_IMPL                 0
     
    17201720# define ARMV8_ID_AA64MMFR0_EL1_BIGEND_SUPPORTED                1
    17211721/** Bit 12 - 15 - Indicates support for a distinction between Secure and Non-secure Memory. */
    1722 #define ARMV8_ID_AA64MMFR0_EL1_SNSMEM                           (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
    1723 #define ARMV8_ID_AA64MMFR0_EL1_SNSMEM_GET(a_IdAa64Mmfr0El1)     (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_SNSMEM) >> 12)
     1722#define ARMV8_ID_AA64MMFR0_EL1_SNSMEM_MASK                      (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
     1723#define ARMV8_ID_AA64MMFR0_EL1_SNSMEM_SHIFT                     12
    17241724/** No distinction between Secure and Non-secure Memory supported. */
    17251725# define ARMV8_ID_AA64MMFR0_EL1_SNSMEM_NOT_IMPL                 0
     
    17271727# define ARMV8_ID_AA64MMFR0_EL1_SNSMEM_SUPPORTED                1
    17281728/** Bit 16 - 19 - Indicates support for mixed-endian at EL0 only. */
    1729 #define ARMV8_ID_AA64MMFR0_EL1_BIGENDEL0                        (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
    1730 #define ARMV8_ID_AA64MMFR0_EL1_BIGENDEL0_GET(a_IdAa64Mmfr0El1)  (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_BIGENDEL0) >> 16)
     1729#define ARMV8_ID_AA64MMFR0_EL1_BIGENDEL0_MASK                   (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
     1730#define ARMV8_ID_AA64MMFR0_EL1_BIGENDEL0_SHIFT                  16
    17311731/** No mixed-endian support at EL0. */
    17321732# define ARMV8_ID_AA64MMFR0_EL1_BIGENDEL0_NOT_IMPL              0
     
    17341734# define ARMV8_ID_AA64MMFR0_EL1_BIGENDEL0_SUPPORTED             1
    17351735/** Bit 20 - 23 - Indicates support for 16KiB memory translation granule size. */
    1736 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN16                          (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
    1737 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_GET(a_IdAa64Mmfr0El1)    (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_TGRAN16) >> 20)
     1736#define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_MASK                     (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
     1737#define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_SHIFT                    20
    17381738/** 16KiB granule size not supported. */
    17391739# define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_NOT_IMPL                0
     
    17431743# define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_SUPPORTED_52BIT         2
    17441744/** Bit 24 - 27 - Indicates support for 64KiB memory translation granule size. */
    1745 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN64                          (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
    1746 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_GET(a_IdAa64Mmfr0El1)    (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_TGRAN64) >> 24)
     1745#define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_MASK                     (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
     1746#define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_SHIFT                    24
    17471747/** 64KiB granule supported. */
    17481748# define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_SUPPORTED               0
     
    17501750# define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_NOT_IMPL                0xf
    17511751/** Bit 28 - 31 - Indicates support for 4KiB memory translation granule size. */
    1752 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN4                           (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
    1753 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_GET(a_IdAa64Mmfr0El1)     (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_TGRAN4) >> 28)
     1752#define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_MASK                      (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
     1753#define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_SHIFT                     28
    17541754/** 4KiB granule supported. */
    17551755# define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_SUPPORTED                0
     
    17591759# define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_NOT_IMPL                 0xf
    17601760/** Bit 32 - 35 - Indicates support for 16KiB granule size at stage 2. */
    1761 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_2                        (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
    1762 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_2_GET(a_IdAa64Mmfr0El1)  (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_TGRAN16_2) >> 32)
     1761#define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_2_MASK                   (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
     1762#define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_2_SHIFT                  32
    17631763/** Support for 16KiB granule at stage 2 is identified in the ID_AA64MMFR0_EL1.TGran16 field. */
    17641764# define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_2_SUPPORT_BY_TGRAN16    0
     
    17701770# define ARMV8_ID_AA64MMFR0_EL1_TGRAN16_2_SUPPORTED_52BIT       3
    17711771/** Bit 36 - 39 - Indicates support for 64KiB granule size at stage 2. */
    1772 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_2                        (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
    1773 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_2_GET(a_IdAa64Mmfr0El1)  (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_TGRAN64_2) >> 36)
     1772#define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_2_MASK                   (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
     1773#define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_2_SHIFT                  36
    17741774/** Support for 64KiB granule at stage 2 is identified in the ID_AA64MMFR0_EL1.TGran64 field. */
    17751775# define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_2_SUPPORT_BY_TGRAN64    0
     
    17791779# define ARMV8_ID_AA64MMFR0_EL1_TGRAN64_2_SUPPORTED             2
    17801780/** Bit 40 - 43 - Indicates HCRX_EL2 and its associated EL3 trap support. */
    1781 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_2                         (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
    1782 #define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_2_GET(a_IdAa64Mmfr0El1)   (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_TGRAN4_2) >> 40)
     1781#define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_2_MASK                    (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
     1782#define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_2_SHIFT                   40
    17831783/** Support for 4KiB granule at stage 2 is identified in the ID_AA64MMFR0_EL1.TGran4 field. */
    17841784# define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_2_SUPPORT_BY_TGRAN16     0
     
    17901790# define ARMV8_ID_AA64MMFR0_EL1_TGRAN4_2_SUPPORTED_52BIT        3
    17911791/** Bit 44 - 47 - Indicates support for disabling context synchronizing exception entry and exit. */
    1792 #define ARMV8_ID_AA64MMFR0_EL1_EXS                              (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
    1793 #define ARMV8_ID_AA64MMFR0_EL1_EXS_GET(a_IdAa64Mmfr0El1)        (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_EXS) >> 44)
     1792#define ARMV8_ID_AA64MMFR0_EL1_EXS_MASK                         (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
     1793#define ARMV8_ID_AA64MMFR0_EL1_EXS_SHIFT                        44
    17941794/** All exception entries and exits are context synchronization events. */
    17951795# define ARMV8_ID_AA64MMFR0_EL1_EXS_NOT_IMPL                    0
     
    17981798/* Bit 48 - 55 - Reserved. */
    17991799/** Bit 56 - 59 - Indicates the presence of the Fine-Grained Trap controls. */
    1800 #define ARMV8_ID_AA64MMFR0_EL1_FGT                              (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
    1801 #define ARMV8_ID_AA64MMFR0_EL1_FGT_GET(a_IdAa64Mmfr0El1)        (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_FGT) >> 56)
     1800#define ARMV8_ID_AA64MMFR0_EL1_FGT_MASK                         (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
     1801#define ARMV8_ID_AA64MMFR0_EL1_FGT_SHIFT                        56
    18021802/** Fine-grained trap controls are not implemented. */
    18031803# define ARMV8_ID_AA64MMFR0_EL1_FGT_NOT_IMPL                    0
     
    18051805# define ARMV8_ID_AA64MMFR0_EL1_FGT_SUPPORTED                   1
    18061806/** Bit 60 - 63 - Indicates the presence of Enhanced Counter Virtualization. */
    1807 #define ARMV8_ID_AA64MMFR0_EL1_ECV                              (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
    1808 #define ARMV8_ID_AA64MMFR0_EL1_ECV_GET(a_IdAa64Mmfr0El1)        (((a_IdAa64Mmfr0El1) & ARMV8_ID_AA64MMFR0_EL1_ECV) >> 60)
     1807#define ARMV8_ID_AA64MMFR0_EL1_ECV_MASK                         (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
     1808#define ARMV8_ID_AA64MMFR0_EL1_ECV_SHIFT                        60
    18091809/** Enhanced Counter Virtualization is not implemented. */
    18101810# define ARMV8_ID_AA64MMFR0_EL1_ECV_NOT_IMPL                    0
     
    18191819 * @{ */
    18201820/** Bit 0 - 3 - Hardware updates to Access flag and Dirty state in translation tables. */
    1821 #define ARMV8_ID_AA64MMFR1_EL1_HAFDBS                           (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
    1822 #define ARMV8_ID_AA64MMFR1_EL1_HAFDBS_GET(a_IdAa64Mmfr1El1)     ((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_HAFDBS)
     1821#define ARMV8_ID_AA64MMFR1_EL1_HAFDBS_MASK                      (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
     1822#define ARMV8_ID_AA64MMFR1_EL1_HAFDBS_SHIFT                     0
    18231823/** Hardware update of the Access flag and dirty state are not supported. */
    18241824# define ARMV8_ID_AA64MMFR1_EL1_HAFDBS_NOT_IMPL                 0
     
    18281828# define ARMV8_ID_AA64MMFR1_EL1_HAFDBS_DIRTY_SUPPORTED          2
    18291829/** Bit 4 - 7 - EL1 Exception level handling. */
    1830 #define ARMV8_ID_AA64MMFR1_EL1_VMIDBITS                         (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
    1831 #define ARMV8_ID_AA64MMFR1_EL1_VMIDBITS_GET(a_IdAa64Mmfr1El1)   (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_VMIDBITS) >> 4)
     1830#define ARMV8_ID_AA64MMFR1_EL1_VMIDBITS_MASK                    (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
     1831#define ARMV8_ID_AA64MMFR1_EL1_VMIDBITS_SHIFT                   4
    18321832/** VMID bits is 8. */
    18331833# define ARMV8_ID_AA64MMFR1_EL1_VMIDBITS_8                      0
     
    18351835# define ARMV8_ID_AA64MMFR1_EL1_VMIDBITS_16                     2
    18361836/** Bit 8 - 11 - Virtualization Host Extensions support. */
    1837 #define ARMV8_ID_AA64MMFR1_EL1_VHE                              (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
    1838 #define ARMV8_ID_AA64MMFR1_EL1_VHE_GET(a_IdAa64Mmfr1El1)        (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_VHE) >> 8)
     1837#define ARMV8_ID_AA64MMFR1_EL1_VHE_MASK                         (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
     1838#define ARMV8_ID_AA64MMFR1_EL1_VHE_SHIFT                        8
    18391839/** Virtualization Host Extensions are not supported. */
    18401840# define ARMV8_ID_AA64MMFR1_EL1_VHE_NOT_IMPL                    0
     
    18421842# define ARMV8_ID_AA64MMFR1_EL1_VHE_SUPPORTED                   1
    18431843/** Bit 12 - 15 - Hierarchical Permission Disables. */
    1844 #define ARMV8_ID_AA64MMFR1_EL1_HPDS                             (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
    1845 #define ARMV8_ID_AA64MMFR1_EL1_HPDS_GET(a_IdAa64Mmfr1El1)       (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_HPDS) >> 12)
     1844#define ARMV8_ID_AA64MMFR1_EL1_HPDS_MASK                        (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
     1845#define ARMV8_ID_AA64MMFR1_EL1_HPDS_SHIFT                       12
    18461846/** Disabling of hierarchical controls not supported. */
    18471847# define ARMV8_ID_AA64MMFR1_EL1_HPDS_NOT_IMPL                   0
     
    18511851# define ARMV8_ID_AA64MMFR1_EL1_HPDS_SUPPORTED_2                2
    18521852/** Bit 16 - 19 - LORegions support. */
    1853 #define ARMV8_ID_AA64MMFR1_EL1_LO                               (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
    1854 #define ARMV8_ID_AA64MMFR1_EL1_LO_GET(a_IdAa64Mmfr1El1)         (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_LO) >> 16)
     1853#define ARMV8_ID_AA64MMFR1_EL1_LO_MASK                          (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
     1854#define ARMV8_ID_AA64MMFR1_EL1_LO_SHIFT                         16
    18551855/** LORegions not supported. */
    18561856# define ARMV8_ID_AA64MMFR1_EL1_LO_NOT_IMPL                     0
     
    18581858# define ARMV8_ID_AA64MMFR1_EL1_LO_SUPPORTED                    1
    18591859/** Bit 20 - 23 - Privileged Access Never support. */
    1860 #define ARMV8_ID_AA64MMFR1_EL1_PAN                              (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
    1861 #define ARMV8_ID_AA64MMFR1_EL1_PAN_GET(a_IdAa64Mmfr1El1)        (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_PAN) >> 20)
     1860#define ARMV8_ID_AA64MMFR1_EL1_PAN_MASK                         (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
     1861#define ARMV8_ID_AA64MMFR1_EL1_PAN_SHIFT                        20
    18621862/** PAN not supported. */
    18631863# define ARMV8_ID_AA64MMFR1_EL1_PAN_NOT_IMPL                    0
     
    18691869# define ARMV8_ID_AA64MMFR1_EL1_PAN_SUPPORTED_3                 3
    18701870/** Bit 24 - 27 - Describes whether the PE can generate SError interrupt exceptions. */
    1871 #define ARMV8_ID_AA64MMFR1_EL1_SPECSEI                          (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
    1872 #define ARMV8_ID_AA64MMFR1_EL1_SPECSEI_GET(a_IdAa64Mmfr1El1)    (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_SPECSEI) >> 24)
     1871#define ARMV8_ID_AA64MMFR1_EL1_SPECSEI_MASK                     (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
     1872#define ARMV8_ID_AA64MMFR1_EL1_SPECSEI_SHIFT                    24
    18731873/** The PE never generates an SError interrupt due to an External abort on a speculative read. */
    18741874# define ARMV8_ID_AA64MMFR1_EL1_SPECSEI_NOT_IMPL                0
     
    18761876# define ARMV8_ID_AA64MMFR1_EL1_SPECSEI_SUPPORTED               1
    18771877/** Bit 28 - 31 - Indicates support for execute-never control distinction by Exception level at stage 2. */
    1878 #define ARMV8_ID_AA64MMFR1_EL1_XNX                              (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
    1879 #define ARMV8_ID_AA64MMFR1_EL1_XNX_GET(a_IdAa64Mmfr1El1)        (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_XNX) >> 28)
     1878#define ARMV8_ID_AA64MMFR1_EL1_XNX_MASK                         (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
     1879#define ARMV8_ID_AA64MMFR1_EL1_XNX_SHIFT                        28
    18801880/** Distinction between EL0 and EL1 execute-never control at stage 2 not supported. */
    18811881# define ARMV8_ID_AA64MMFR1_EL1_XNX_NOT_IMPL                    0
     
    18831883# define ARMV8_ID_AA64MMFR1_EL1_XNX_SUPPORTED                   1
    18841884/** Bit 32 - 35 - Indicates support for the configurable delayed trapping of WFE. */
    1885 #define ARMV8_ID_AA64MMFR1_EL1_TWED                             (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
    1886 #define ARMV8_ID_AA64MMFR1_EL1_TWED_GET(a_IdAa64Mmfr1El1)       (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_TWED) >> 32)
     1885#define ARMV8_ID_AA64MMFR1_EL1_TWED_MASK                        (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
     1886#define ARMV8_ID_AA64MMFR1_EL1_TWED_SHIFT                       32
    18871887/** Configurable delayed trapping of WFE is not supported. */
    18881888# define ARMV8_ID_AA64MMFR1_EL1_TWED_NOT_IMPL                   0
     
    18901890# define ARMV8_ID_AA64MMFR1_EL1_TWED_SUPPORTED                  1
    18911891/** Bit 36 - 39 - Indicates support for Enhanced Translation Synchronization. */
    1892 #define ARMV8_ID_AA64MMFR1_EL1_ETS                              (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
    1893 #define ARMV8_ID_AA64MMFR1_EL1_ETS_GET(a_IdAa64Mmfr1El1)        (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_ETS) >> 36)
     1892#define ARMV8_ID_AA64MMFR1_EL1_ETS_MASK                         (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
     1893#define ARMV8_ID_AA64MMFR1_EL1_ETS_SHIFT                        36
    18941894/** Enhanced Translation Synchronization is not supported. */
    18951895# define ARMV8_ID_AA64MMFR1_EL1_ETS_NOT_IMPL                    0
     
    18971897# define ARMV8_ID_AA64MMFR1_EL1_ETS_SUPPORTED                   1
    18981898/** Bit 40 - 43 - Indicates HCRX_EL2 and its associated EL3 trap support. */
    1899 #define ARMV8_ID_AA64MMFR1_EL1_HCX                              (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
    1900 #define ARMV8_ID_AA64MMFR1_EL1_HCX_GET(a_IdAa64Mmfr1El1)        (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_MPAM) >> 40)
     1899#define ARMV8_ID_AA64MMFR1_EL1_HCX_MASK                         (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
     1900#define ARMV8_ID_AA64MMFR1_EL1_HCX_SHIFT                        40
    19011901/** HCRX_EL2 and its associated EL3 trap are not supported. */
    19021902# define ARMV8_ID_AA64MMFR1_EL1_HCX_NOT_IMPL                    0
     
    19041904# define ARMV8_ID_AA64MMFR1_EL1_HCX_SUPPORTED                   1
    19051905/** Bit 44 - 47 - Indicates support for FPCR.{AH,FIZ,NEP}. */
    1906 #define ARMV8_ID_AA64MMFR1_EL1_AFP                              (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
    1907 #define ARMV8_ID_AA64MMFR1_EL1_AFP_GET(a_IdAa64Mmfr1El1)        (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_AFP) >> 44)
     1906#define ARMV8_ID_AA64MMFR1_EL1_AFP_MASK                         (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
     1907#define ARMV8_ID_AA64MMFR1_EL1_AFP_SHIFT                        44
    19081908/** The FPCR.{AH,FIZ,NEP} fields are not supported. */
    19091909# define ARMV8_ID_AA64MMFR1_EL1_AFP_NOT_IMPL                    0
     
    19111911# define ARMV8_ID_AA64MMFR1_EL1_AFP_SUPPORTED                   1
    19121912/** Bit 48 - 51 - Indicates support for intermediate caching of translation table walks. */
    1913 #define ARMV8_ID_AA64MMFR1_EL1_NTLBPA                           (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
    1914 #define ARMV8_ID_AA64MMFR1_EL1_NTLBPA_GET(a_IdAa64Mmfr1El1)     (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_NTLBPA) >> 48)
     1913#define ARMV8_ID_AA64MMFR1_EL1_NTLBPA_MASK                      (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
     1914#define ARMV8_ID_AA64MMFR1_EL1_NTLBPA_SHIFT                     48
    19151915/** The intermediate caching of translation table walks might include non-coherent physical translation caches. */
    19161916# define ARMV8_ID_AA64MMFR1_EL1_NTLBPA_INCLUDE_NON_COHERENT     0
     
    19181918# define ARMV8_ID_AA64MMFR1_EL1_NTLBPA_INCLUDE_COHERENT_ONLY    1
    19191919/** Bit 52 - 55 - Indicates whether SCTLR_EL1.TIDCP and SCTLR_EL2.TIDCP are implemented in AArch64 state. */
    1920 #define ARMV8_ID_AA64MMFR1_EL1_TIDCP1                           (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
    1921 #define ARMV8_ID_AA64MMFR1_EL1_TIDCP1_GET(a_IdAa64Mmfr1El1)     (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_TIDCP1_GET) >> 52)
     1920#define ARMV8_ID_AA64MMFR1_EL1_TIDCP1_MASK                      (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
     1921#define ARMV8_ID_AA64MMFR1_EL1_TIDCP1_SHIFT                     52
    19221922/** SCTLR_EL1.TIDCP and SCTLR_EL2.TIDCP bits are not implemented. */
    19231923# define ARMV8_ID_AA64MMFR1_EL1_TIDCP1_NOT_IMPL                 0
     
    19251925# define ARMV8_ID_AA64MMFR1_EL1_TIDCP1_SUPPORTED                1
    19261926/** Bit 56 - 59 - Indicates support for cache maintenance instruction permission. */
    1927 #define ARMV8_ID_AA64MMFR1_EL1_CMOW                             (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
    1928 #define ARMV8_ID_AA64MMFR1_EL1_CMOW_GET(a_IdAa64Mmfr1El1)       (((a_IdAa64Mmfr1El1) & ARMV8_ID_AA64MMFR1_EL1_CMOW) >> 56)
     1927#define ARMV8_ID_AA64MMFR1_EL1_CMOW_MASK                        (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
     1928#define ARMV8_ID_AA64MMFR1_EL1_CMOW_SHIFT                       56
    19291929/** SCTLR_EL1.CMOW, SCTLR_EL2.CMOW and HCRX_EL2.CMOW bits are not implemented. */
    19301930# define ARMV8_ID_AA64MMFR1_EL1_CMOW_NOT_IMPL                   0
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette