VirtualBox

Changeset 101185 in vbox for trunk


Ignore:
Timestamp:
Sep 20, 2023 9:03:53 AM (15 months ago)
Author:
vboxsync
Message:

include/iprt/armv8.h: Add more ID register definitions, bugref:10525

File:
1 edited

Legend:

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

    r101102 r101185  
    19351935
    19361936
     1937/** @name ID_AA64MMFR2_EL1 - AArch64 Memory Model Feature Register 2.
     1938 * @{ */
     1939/** Bit 0 - 3 - Indicates support for Common not Private translations. */
     1940#define ARMV8_ID_AA64MMFR2_EL1_CNP_MASK                         (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
     1941#define ARMV8_ID_AA64MMFR2_EL1_CNP_SHIFT                        0
     1942/** Common not Private translations are not supported. */
     1943# define ARMV8_ID_AA64MMFR2_EL1_CNP_NOT_IMPL                    0
     1944/** Support for Common not Private translations (FEAT_TTNCP). */
     1945# define ARMV8_ID_AA64MMFR2_EL1_CNP_SUPPORTED                   1
     1946/** Bit 4 - 7 - Indicates support for User Access Override. */
     1947#define ARMV8_ID_AA64MMFR2_EL1_UAO_MASK                         (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
     1948#define ARMV8_ID_AA64MMFR2_EL1_UAO_SHIFT                        4
     1949/** User Access Override is not supported. */
     1950# define ARMV8_ID_AA64MMFR2_EL1_UAO_NOT_IMPL                    0
     1951/** User Access Override is supported (FEAT_UAO). */
     1952# define ARMV8_ID_AA64MMFR2_EL1_UAO_SUPPORTED                   1
     1953/** Bit 8 - 11 - Indicates support for LSMAOE and nTLSMD bits in SCTLR_ELx. */
     1954#define ARMV8_ID_AA64MMFR2_EL1_LSM_MASK                         (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
     1955#define ARMV8_ID_AA64MMFR2_EL1_LSM_SHIFT                        8
     1956/** LSMAOE and nTLSMD bits are not supported. */
     1957# define ARMV8_ID_AA64MMFR2_EL1_LSM_NOT_IMPL                    0
     1958/** LSMAOE and nTLSMD bits are supported (FEAT_LSMAOC). */
     1959# define ARMV8_ID_AA64MMFR2_EL1_LSM_SUPPORTED                   1
     1960/** Bit 12 - 15 - Indicates support for the IESB bit in SCTLR_ELx registers. */
     1961#define ARMV8_ID_AA64MMFR2_EL1_IESB_MASK                        (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
     1962#define ARMV8_ID_AA64MMFR2_EL1_IESB_SHIFT                       12
     1963/** IESB bit is not supported. */
     1964# define ARMV8_ID_AA64MMFR2_EL1_IESB_NOT_IMPL                   0
     1965/** IESB bit is supported (FEAT_IESB). */
     1966# define ARMV8_ID_AA64MMFR2_EL1_IESB_SUPPORTED                  1
     1967/** Bit 16 - 19 - Indicates support for larger virtual address. */
     1968#define ARMV8_ID_AA64MMFR2_EL1_VARANGE_MASK                     (RT_BIT_64(16) | RT_BIT_64(17) | RT_BIT_64(18) | RT_BIT_64(19))
     1969#define ARMV8_ID_AA64MMFR2_EL1_VARANGE_SHIFT                    16
     1970/** Virtual address range is 48 bits. */
     1971# define ARMV8_ID_AA64MMFR2_EL1_VARANGE_48BITS                  0
     1972/** 52 bit virtual addresses supported for 64KiB granules (FEAT_LVA). */
     1973# define ARMV8_ID_AA64MMFR2_EL1_VARANGE_52BITS_64KB_GRAN        1
     1974/** Bit 20 - 23 - Revised CCSIDR_EL1 register format supported. */
     1975#define ARMV8_ID_AA64MMFR2_EL1_CCIDX_MASK                       (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
     1976#define ARMV8_ID_AA64MMFR2_EL1_CCIDX_SHIFT                      20
     1977/** CCSIDR_EL1 register format is 32-bit. */
     1978# define ARMV8_ID_AA64MMFR2_EL1_CCIDX_32BIT                     0
     1979/** CCSIDR_EL1 register format is 64-bit (FEAT_CCIDX). */
     1980# define ARMV8_ID_AA64MMFR2_EL1_CCIDX_64BIT                     1
     1981/** Bit 24 - 27 - Indicates support for nested virtualization. */
     1982#define ARMV8_ID_AA64MMFR2_EL1_NV_MASK                          (RT_BIT_64(24) | RT_BIT_64(25) | RT_BIT_64(26) | RT_BIT_64(27))
     1983#define ARMV8_ID_AA64MMFR2_EL1_NV_SHIFT                         24
     1984/** Nested virtualization is not supported. */
     1985# define ARMV8_ID_AA64MMFR2_EL1_NV_NOT_IMPL                     0
     1986/** The HCR_EL2.{AT,NV1,NV} bits are implemented (FEAT_NV). */
     1987# define ARMV8_ID_AA64MMFR2_EL1_NV_SUPPORTED                    1
     1988/** The VNCR_EL2 register and HCR_EL2.{NV2,AT,NV1,NV} bits are implemented (FEAT_NV2). */
     1989# define ARMV8_ID_AA64MMFR2_EL1_NV_SUPPORTED_2                  2
     1990/** Bit 28 - 31 - Indicates support for small translation tables. */
     1991#define ARMV8_ID_AA64MMFR2_EL1_ST_MASK                          (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
     1992#define ARMV8_ID_AA64MMFR2_EL1_ST_SHIFT                         28
     1993/** The maximum value of TCR_ELx.{T0SZ,T1SZ} is 39. */
     1994# define ARMV8_ID_AA64MMFR2_EL1_ST_NOT_IMPL                     0
     1995/** The maximum value of TCR_ELx.{T0SZ,T1SZ} is 48 for 4KiB and 16KiB, and 47 for 64KiB granules (FEAT_TTST). */
     1996# define ARMV8_ID_AA64MMFR2_EL1_ST_SUPPORTED                    1
     1997/** Bit 32 - 35 - Indicates support for unaligned single-copy atomicity and atomic functions. */
     1998#define ARMV8_ID_AA64MMFR2_EL1_AT_MASK                          (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
     1999#define ARMV8_ID_AA64MMFR2_EL1_AT_SHIFT                         32
     2000/** Unaligned single-copy atomicity and atomic functions are not supported. */
     2001# define ARMV8_ID_AA64MMFR2_EL1_AT_NOT_IMPL                     0
     2002/** Unaligned single-copy atomicity and atomic functions are supported (FEAT_LSE2). */
     2003# define ARMV8_ID_AA64MMFR2_EL1_AT_SUPPORTED                    1
     2004/** Bit 36 - 39 - Indicates value of ESR_ELx.EC that reports an exception generated by a read access to the feature ID space. */
     2005#define ARMV8_ID_AA64MMFR2_EL1_IDS_MASK                         (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
     2006#define ARMV8_ID_AA64MMFR2_EL1_IDS_SHIFT                        36
     2007/** ESR_ELx.EC is 0 for traps generated by a read access to the feature ID space. */
     2008# define ARMV8_ID_AA64MMFR2_EL1_IDS_EC_0                        0
     2009/** ESR_ELx.EC is 0x18 for traps generated by a read access to the feature ID space (FEAT_IDST). */
     2010# define ARMV8_ID_AA64MMFR2_EL1_IDS_EC_18H                      1
     2011/** Bit 40 - 43 - Indicates support for the HCR_EL2.FWB bit. */
     2012#define ARMV8_ID_AA64MMFR2_EL1_FWB_MASK                         (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
     2013#define ARMV8_ID_AA64MMFR2_EL1_FWB_SHIFT                        40
     2014/** HCR_EL2.FWB bit is not supported. */
     2015# define ARMV8_ID_AA64MMFR2_EL1_FWB_NOT_IMPL                    0
     2016/** HCR_EL2.FWB bit is supported (FEAT_S2FWB). */
     2017# define ARMV8_ID_AA64MMFR2_EL1_FWB_SUPPORTED                   1
     2018/* Bit 44 - 47 - Reserved. */
     2019/** Bit 48 - 51 - Indicates support for TTL field in address operations. */
     2020#define ARMV8_ID_AA64MMFR2_EL1_TTL_MASK                         (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
     2021#define ARMV8_ID_AA64MMFR2_EL1_TTL_SHIFT                        48
     2022/** TLB maintenance instructions by address have bits [47:44] Res0. */
     2023# define ARMV8_ID_AA64MMFR2_EL1_TTL_NOT_IMPL                    0
     2024/** TLB maintenance instructions by address have bits [47:44] holding the TTL field (FEAT_TTL). */
     2025# define ARMV8_ID_AA64MMFR2_EL1_TTL_SUPPORTED                   1
     2026/** Bit 52 - 55 - Identification of the hardware requirements of the hardware to have break-before-make sequences when
     2027 * changing block size for a translation. */
     2028#define ARMV8_ID_AA64MMFR2_EL1_BBM_MASK                         (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
     2029#define ARMV8_ID_AA64MMFR2_EL1_BBM_SHIFT                        52
     2030/** Level 0 support for changing block size is supported (FEAT_BBM). */
     2031# define ARMV8_ID_AA64MMFR2_EL1_BBM_LVL0                        0
     2032/** Level 1 support for changing block size is supported (FEAT_BBM). */
     2033# define ARMV8_ID_AA64MMFR2_EL1_BBM_LVL1                        1
     2034/** Level 2 support for changing block size is supported (FEAT_BBM). */
     2035# define ARMV8_ID_AA64MMFR2_EL1_BBM_LVL2                        2
     2036/** Bit 56 - 59 - Indicates support for Enhanced Virtualization Traps. */
     2037#define ARMV8_ID_AA64MMFR2_EL1_EVT_MASK                         (RT_BIT_64(56) | RT_BIT_64(57) | RT_BIT_64(58) | RT_BIT_64(59))
     2038#define ARMV8_ID_AA64MMFR2_EL1_EVT_SHIFT                        56
     2039/** Enhanced Virtualization Traps are not supported. */
     2040# define ARMV8_ID_AA64MMFR2_EL1_EVT_NOT_IMPL                    0
     2041/** Enhanced Virtualization Traps are supported (FEAT_EVT). */
     2042# define ARMV8_ID_AA64MMFR2_EL1_EVT_SUPPORTED                   1
     2043/** Enhanced Virtualization Traps are supported with additional traps (FEAT_EVT). */
     2044# define ARMV8_ID_AA64MMFR2_EL1_EVT_SUPPORTED_2                 2
     2045/** Bit 60 - 63 - Indicates support for E0PDx mechanism. */
     2046#define ARMV8_ID_AA64MMFR2_EL1_E0PD_MASK                        (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
     2047#define ARMV8_ID_AA64MMFR2_EL1_E0PD_SHIFT                       60
     2048/** E0PDx mechanism is not supported. */
     2049# define ARMV8_ID_AA64MMFR2_EL1_E0PD_NOT_IMPL                   0
     2050/** E0PDx mechanism is supported (FEAT_E0PD). */
     2051# define ARMV8_ID_AA64MMFR2_EL1_E0PD_SUPPORTED                  1
     2052/** @} */
     2053
     2054
     2055/** @name ID_AA64DFR0_EL1 - AArch64 Debug Feature Register 0.
     2056 * @{ */
     2057/** Bit 0 - 3 - Indicates the Debug Architecture version supported. */
     2058#define ARMV8_ID_AA64DFR0_EL1_DEBUGVER_MASK                     (RT_BIT_64(0) | RT_BIT_64(1) | RT_BIT_64(2) | RT_BIT_64(3))
     2059#define ARMV8_ID_AA64DFR0_EL1_DEBUGVER_SHIFT                    0
     2060/** Armv8 debug architecture version. */
     2061# define ARMV8_ID_AA64DFR0_EL1_DEBUGVER_ARMV8                   6
     2062/** Armv8 debug architecture version with virtualization host extensions. */
     2063# define ARMV8_ID_AA64DFR0_EL1_DEBUGVER_ARMV8_VHE               7
     2064/** Armv8.2 debug architecture version (FEAT_Debugv8p2). */
     2065# define ARMV8_ID_AA64DFR0_EL1_DEBUGVER_ARMV8p2                 8
     2066/** Armv8.4 debug architecture version (FEAT_Debugv8p4). */
     2067# define ARMV8_ID_AA64DFR0_EL1_DEBUGVER_ARMV8p4                 9
     2068/** Armv8.8 debug architecture version (FEAT_Debugv8p8). */
     2069# define ARMV8_ID_AA64DFR0_EL1_DEBUGVER_ARMV8p8                 10
     2070/** Bit 4 - 7 - Indicates trace support. */
     2071#define ARMV8_ID_AA64DFR0_EL1_TRACEVER_MASK                     (RT_BIT_64(4) | RT_BIT_64(5) | RT_BIT_64(6) | RT_BIT_64(7))
     2072#define ARMV8_ID_AA64DFR0_EL1_TRACEVER_SHIFT                    4
     2073/** Trace unit System registers not implemented. */
     2074# define ARMV8_ID_AA64DFR0_EL1_TRACEVER_NOT_IMPL                0
     2075/** Trace unit System registers supported. */
     2076# define ARMV8_ID_AA64DFR0_EL1_TRACEVER_SUPPORTED               1
     2077/** Bit 8 - 11 - Performance Monitors Extension version. */
     2078#define ARMV8_ID_AA64DFR0_EL1_PMUVER_MASK                       (RT_BIT_64(8) | RT_BIT_64(9) | RT_BIT_64(10) | RT_BIT_64(11))
     2079#define ARMV8_ID_AA64DFR0_EL1_PMUVER_SHIFT                      8
     2080/** Performance Monitors Extension not supported. */
     2081# define ARMV8_ID_AA64DFR0_EL1_PMUVER_NOT_IMPL                  0
     2082/** Performance Monitors Extension v3 supported (FEAT_PMUv3). */
     2083# define ARMV8_ID_AA64DFR0_EL1_PMUVER_SUPPORTED_V3              1
     2084/** Performance Monitors Extension v3 supported (FEAT_PMUv3p1). */
     2085# define ARMV8_ID_AA64DFR0_EL1_PMUVER_SUPPORTED_V3P1            4
     2086/** Performance Monitors Extension v3 supported (FEAT_PMUv3p4). */
     2087# define ARMV8_ID_AA64DFR0_EL1_PMUVER_SUPPORTED_V3P4            5
     2088/** Performance Monitors Extension v3 supported (FEAT_PMUv3p5). */
     2089# define ARMV8_ID_AA64DFR0_EL1_PMUVER_SUPPORTED_V3P5            6
     2090/** Performance Monitors Extension v3 supported (FEAT_PMUv3p7). */
     2091# define ARMV8_ID_AA64DFR0_EL1_PMUVER_SUPPORTED_V3P7            7
     2092/** Performance Monitors Extension v3 supported (FEAT_PMUv3p8). */
     2093# define ARMV8_ID_AA64DFR0_EL1_PMUVER_SUPPORTED_V3P8            8
     2094/** Bit 12 - 15 - Number of breakpoints, minus 1. */
     2095#define ARMV8_ID_AA64DFR0_EL1_BRPS_MASK                         (RT_BIT_64(12) | RT_BIT_64(13) | RT_BIT_64(14) | RT_BIT_64(15))
     2096#define ARMV8_ID_AA64DFR0_EL1_BRPS_SHIFT                        12
     2097/* Bit 16 - 19 - Reserved 0. */
     2098/** Bit 20 - 23 - Number of watchpoints, minus 1. */
     2099#define ARMV8_ID_AA64DFR0_EL1_WRPS_MASK                         (RT_BIT_64(20) | RT_BIT_64(21) | RT_BIT_64(22) | RT_BIT_64(23))
     2100#define ARMV8_ID_AA64DFR0_EL1_WRPS_SHIFT                        20
     2101/* Bit 24 - 27 - Reserved 0. */
     2102/** Bit 28 - 31 - Number of context-aware breakpoints. */
     2103#define ARMV8_ID_AA64DFR0_EL1_CTXCMPS_MASK                      (RT_BIT_64(28) | RT_BIT_64(29) | RT_BIT_64(30) | RT_BIT_64(31))
     2104#define ARMV8_ID_AA64DFR0_EL1_CTXCMPS_SHIFT                     28
     2105/** Bit 32 - 35 - Statistical Profiling Extension version. */
     2106#define ARMV8_ID_AA64DFR0_EL1_PMSVER_MASK                       (RT_BIT_64(32) | RT_BIT_64(33) | RT_BIT_64(34) | RT_BIT_64(35))
     2107#define ARMV8_ID_AA64DFR0_EL1_PMSVER_SHIFT                      32
     2108/** Statistical Profiling Extension not implemented. */
     2109# define ARMV8_ID_AA64DFR0_EL1_PMSVER_NOT_IMPL                  0
     2110/** Statistical Profiling Extension supported (FEAT_SPE). */
     2111# define ARMV8_ID_AA64DFR0_EL1_PMSVER_SUPPORTED                 1
     2112/** Statistical Profiling Extension supported, version 1.1 (FEAT_SPEv1p1). */
     2113# define ARMV8_ID_AA64DFR0_EL1_PMSVER_SUPPORTED_V1P1            2
     2114/** Statistical Profiling Extension supported, version 1.2 (FEAT_SPEv1p2). */
     2115# define ARMV8_ID_AA64DFR0_EL1_PMSVER_SUPPORTED_V1P2            3
     2116/** Statistical Profiling Extension supported, version 1.2 (FEAT_SPEv1p3). */
     2117# define ARMV8_ID_AA64DFR0_EL1_PMSVER_SUPPORTED_V1P3            4
     2118/** Bit 36 - 39 - OS Double Lock implemented. */
     2119#define ARMV8_ID_AA64DFR0_EL1_DOUBLELOCK_MASK                   (RT_BIT_64(36) | RT_BIT_64(37) | RT_BIT_64(38) | RT_BIT_64(39))
     2120#define ARMV8_ID_AA64DFR0_EL1_DOUBLELOCK_SHIFT                  36
     2121/** OS Double Lock is not implemented. */
     2122# define ARMV8_ID_AA64DFR0_EL1_DOUBLELOCK_NOT_IMPL              0xf
     2123/** OS Double Lock is supported (FEAT_DoubleLock). */
     2124# define ARMV8_ID_AA64DFR0_EL1_DOUBLELOCK_SUPPORTED             0
     2125/** Bit 40 - 43 - Indicates the Armv8.4 self-hosted Trace Extension. */
     2126#define ARMV8_ID_AA64DFR0_EL1_TRACEFILT_MASK                    (RT_BIT_64(40) | RT_BIT_64(41) | RT_BIT_64(42) | RT_BIT_64(43))
     2127#define ARMV8_ID_AA64DFR0_EL1_TRACEFILT_SHIFT                   40
     2128/** Armv8.4 self-hosted Trace Extension not implemented. */
     2129# define ARMV8_ID_AA64DFR0_EL1_TRACEFILT_NOT_IMPL               0
     2130/** Armv8.4 self-hosted Trace Extension is supported (FEAT_TRF). */
     2131# define ARMV8_ID_AA64DFR0_EL1_TRACEFILT_SUPPORTED              1
     2132/** Bit 44 - 47 - Indicates support for the Trace Buffer Extension. */
     2133#define ARMV8_ID_AA64DFR0_EL1_TRACEBUFFER_MASK                  (RT_BIT_64(44) | RT_BIT_64(45) | RT_BIT_64(46) | RT_BIT_64(47))
     2134#define ARMV8_ID_AA64DFR0_EL1_TRACEBUFFER_SHIFT                 44
     2135/** Trace Buffer Extension is not implemented. */
     2136# define ARMV8_ID_AA64DFR0_EL1_TRACEBUFFER_NOT_IMPL             0
     2137/** Trace Buffer Extension is supported (FEAT_TRBE). */
     2138# define ARMV8_ID_AA64DFR0_EL1_TRACEBUFFER_SUPPORTED            1
     2139/** Bit 48 - 51 - Indicates support for the multi-threaded PMU extension. */
     2140#define ARMV8_ID_AA64DFR0_EL1_MTPMU_MASK                        (RT_BIT_64(48) | RT_BIT_64(49) | RT_BIT_64(50) | RT_BIT_64(51))
     2141#define ARMV8_ID_AA64DFR0_EL1_MTPMU_SHIFT                       48
     2142/** Multi-threaded PMU extension is not implemented. */
     2143# define ARMV8_ID_AA64DFR0_EL1_MTPMU_NOT_IMPL                   0
     2144/** Multi-threaded PMU extension is supported (FEAT_MTPMU). */
     2145# define ARMV8_ID_AA64DFR0_EL1_MTPMU_SUPPORTED                  1
     2146/** Multi-threaded PMU extension is not implemented. */
     2147# define ARMV8_ID_AA64DFR0_EL1_MTPMU_NOT_IMPL_2                 0xf
     2148/** Bit 52 - 55 - Indicates support for the Branch Record Buffer extension. */
     2149#define ARMV8_ID_AA64DFR0_EL1_BRBE_MASK                         (RT_BIT_64(52) | RT_BIT_64(53) | RT_BIT_64(54) | RT_BIT_64(55))
     2150#define ARMV8_ID_AA64DFR0_EL1_BRBE_SHIFT                        52
     2151/** Branch Record Buffer extension is not implemented. */
     2152# define ARMV8_ID_AA64DFR0_EL1_BRBE_NOT_IMPL                    0
     2153/** Branch Record Buffer extension is supported (FEAT_BRBE). */
     2154# define ARMV8_ID_AA64DFR0_EL1_BRBE_SUPPORTED                   1
     2155/** Branch Record Buffer extension is supported and supports branch recording at EL3 (FEAT_BRBEv1p1). */
     2156# define ARMV8_ID_AA64DFR0_EL1_BRBE_SUPPORTED_V1P1              2
     2157/* Bit 56 - 59 - Reserved. */
     2158/** Bit 60 - 63 - Indicates support for Zero PMU event counters for guest operating systems. */
     2159#define ARMV8_ID_AA64DFR0_EL1_HPMN0_MASK                        (RT_BIT_64(60) | RT_BIT_64(61) | RT_BIT_64(62) | RT_BIT_64(63))
     2160#define ARMV8_ID_AA64DFR0_EL1_HPMN0_SHIFT                       60
     2161/** Setting MDCE_EL2.HPMN to zero has CONSTRAINED UNPREDICTABLE behavior. */
     2162# define ARMV8_ID_AA64DFR0_EL1_HPMN0_NOT_IMPL                   0
     2163/** Setting MDCE_EL2.HPMN to zero has defined behavior (FEAT_HPMN0). */
     2164# define ARMV8_ID_AA64DFR0_EL1_HPMN0_SUPPORTED                  1
     2165/** @} */
     2166
    19372167/** @} */
    19382168
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