VirtualBox

Changeset 108702 in vbox for trunk/include


Ignore:
Timestamp:
Mar 21, 2025 11:27:14 PM (4 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168119
Message:

VMM/IEM: More ARM target work. jiraref:VBP-1598

Location:
trunk/include
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpumctx-armv8.h

    r106567 r108702  
    169169typedef struct CPUMCTX
    170170{
    171     uint64_t            uPadding0;
    172171    /** The general purpose register array view. */
    173172    CPUMCTXGREG         aGRegs[31];
     173    CPUMCTXGREG         uPadding0;
    174174    /** The NEON SIMD & FP register array view. */
    175175    CPUMCTXVREG         aVRegs[32];
    176176    /** The stack registers (EL0, EL1). */
    177     CPUMCTXSYSREG       aSpReg[2];
     177    CPUMCTXSYSREG       aSpReg[2]; /**< @todo extend to 4 entries! */
    178178    /** The program counter. */
    179179    CPUMCTXSYSREG       Pc;
     
    234234    CPUMCTXSYSREG       TpIdrRoEl0;
    235235    /** The TPIDR_ELn registers. */
    236     CPUMCTXSYSREG       aTpIdr[2];
     236    CPUMCTXSYSREG       aTpIdr[2]; /**< @todo extend to 4 entries. */
    237237    /** TheMDCCINT_EL1 register. */
    238238    CPUMCTXSYSREG       MDccInt;
  • trunk/include/iprt/armv8.h

    r107933 r108702  
    14281428 * @{ */
    14291429/** Bit 0 - SS - Software step control bit. */
    1430 #define ARMV8_MDSCR_EL1_AARCH64_SS                              RT_BIT_64(0)
     1430#define ARMV8_MDSCR_EL1_AARCH64_SS                              RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_SS_BIT)
    14311431#define ARMV8_MDSCR_EL1_AARCH64_SS_BIT                          0
     1432/** Bit 6 - ERR. */
     1433#define ARMV8_MDSCR_EL1_AARCH64_ERR                             RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_ERR_BIT)
     1434#define ARMV8_MDSCR_EL1_AARCH64_ERR_BIT                         6
     1435/** Bit 12 - TDCC. */
     1436#define ARMV8_MDSCR_EL1_AARCH64_TDCC                            RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_TDCC_BIT)
     1437#define ARMV8_MDSCR_EL1_AARCH64_TDCC_BIT                        12
     1438/** Bit 13 - KDE - Kernel Debugging Enabled. */
     1439#define ARMV8_MDSCR_EL1_AARCH64_KDE                             RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_KDE_BIT)
     1440#define ARMV8_MDSCR_EL1_AARCH64_KDE_BIT                         13
     1441/** Bit 14 - HDE. */
     1442#define ARMV8_MDSCR_EL1_AARCH64_HDE                             RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_HDE_BIT)
     1443#define ARMV8_MDSCR_EL1_AARCH64_HDE_BIT                         14
     1444/** Bit 15 - MDE. */
     1445#define ARMV8_MDSCR_EL1_AARCH64_MDE                             RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_MDE_BIT)
     1446#define ARMV8_MDSCR_EL1_AARCH64_MDE_BIT                         15
     1447/** Bit 19 - SC2. */
     1448#define ARMV8_MDSCR_EL1_AARCH64_SC2                             RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_SC2_BIT)
     1449#define ARMV8_MDSCR_EL1_AARCH64_SC2_BIT                         19
     1450/** Bit 21 - TDA. */
     1451#define ARMV8_MDSCR_EL1_AARCH64_TDA                             RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_TDA_BIT)
     1452#define ARMV8_MDSCR_EL1_AARCH64_TDA_BIT                         21
     1453/** Bits 23:22 - INTdis. */
     1454#define ARMV8_MDSCR_EL1_AARCH64_INTDIS_MASK                     UINT64_C(0x00c00000)
     1455#define ARMV8_MDSCR_EL1_AARCH64_INTDIS_SHIFT                    22
     1456/** Bit 26 - TXU. */
     1457#define ARMV8_MDSCR_EL1_AARCH64_TXU                             RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_TXU_BIT)
     1458#define ARMV8_MDSCR_EL1_AARCH64_TXU_BIT                         26
     1459/** Bit 29 - TXfull. */
     1460#define ARMV8_MDSCR_EL1_AARCH64_TXFULL                          RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_TXFULL_BIT)
     1461#define ARMV8_MDSCR_EL1_AARCH64_TXFULL_BIT                      29
     1462/** Bit 30 - RXfull. */
     1463#define ARMV8_MDSCR_EL1_AARCH64_RXFULL                          RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_RXFULL_BIT)
     1464#define ARMV8_MDSCR_EL1_AARCH64_RXFULL_BIT                      30
     1465/** Bit 31 - TFO. */
     1466#define ARMV8_MDSCR_EL1_AARCH64_TFO                             RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_TFO_BIT)
     1467#define ARMV8_MDSCR_EL1_AARCH64_TFO_BIT                         31
     1468/** Bit 32 - EMBWE. */
     1469#define ARMV8_MDSCR_EL1_AARCH64_EMBWE                           RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_EMBWE_BIT)
     1470#define ARMV8_MDSCR_EL1_AARCH64_EMBWE_BIT                       32
     1471/** Bit 33 - TTA. */
     1472#define ARMV8_MDSCR_EL1_AARCH64_TTA                             RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_TTA_BIT)
     1473#define ARMV8_MDSCR_EL1_AARCH64_TTA_BIT                         33
     1474/** Bit 34 - EnSPM. */
     1475#define ARMV8_MDSCR_EL1_AARCH64_ENSPM                           RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_ENSPM_BIT)
     1476#define ARMV8_MDSCR_EL1_AARCH64_ENSPM_BIT                       34
     1477/** Bit 35 - EHBWE. */
     1478#define ARMV8_MDSCR_EL1_AARCH64_EHBWE                           RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_EHBWE_BIT)
     1479#define ARMV8_MDSCR_EL1_AARCH64_EHBWE_BIT                       35
     1480/** Bit 50 - EnSTEPOP. */
     1481#define ARMV8_MDSCR_EL1_AARCH64_ENSTEPOP                        RT_BIT_64(ARMV8_MDSCR_EL1_AARCH64_ENSTEPOP_BIT)
     1482#define ARMV8_MDSCR_EL1_AARCH64_ENSTEPOP_BIT                    50
    14321483/** @} */
    14331484
     
    27092760#define ARMV8_SCTLR_EL1_CP15BEN                                 RT_BIT_64(5)
    27102761/** Bit 6 - Non-aligned access enable. */
     2762#define ARMV8_SCTLR_EL1_NAA                                     RT_BIT_64(6)
    27112763#define ARMV8_SCTLR_EL1_nAA                                     RT_BIT_64(6)
    27122764/** Bit 7 - IT disable, disables some uses of IT instructions at EL0 using AArch32. */
     
    27172769#define ARMV8_SCTLR_EL1_UMA                                     RT_BIT_64(9)
    27182770/** Bit 10 - Enable EL0 acccess to the CFP*, DVP* and CPP* instructions if FEAT_SPECRES is supported. */
    2719 #define ARMV8_SCTLR_EL1_EnRCTX                                  RT_BIT_64(10)
     2771#define ARMV8_SCTLR_EL1_ENRCTX                                  RT_BIT_64(10)
     2772#define ARMV8_SCTLR_EL1_EnRCTX                                  ARMV8_SCTLR_EL1_ENRCTX
    27202773/** Bit 11 - Exception Exit is Context Synchronizing (FEAT_ExS required). */
    27212774#define ARMV8_SCTLR_EL1_EOS                                     RT_BIT_64(11)
     
    27262779
    27272780
    2728 /** @name SCTLR_EL2 - AArch64 System Control Register (EL2) - 32-bit.
     2781/** @name SCTLR_EL2 - AArch64 System Control Register (EL2).
    27292782 * @{ */
    27302783/** Bit 0 - MMU enable for EL2. */
     
    27362789/** Bit 3 - SP alignment check enable. */
    27372790#define ARMV8_SCTLR_EL2_SA                                      RT_BIT_64(3)
    2738 /* Bit 4 - 11 - Reserved. */
     2791/** Bit 4 - SA0. */
     2792#define ARMV8_SCTLR_EL2_SA0                                     RT_BIT_64(4)
     2793/** Bit 5 - CP15BEN. */
     2794#define ARMV8_SCTLR_EL2_CP15BEN                                 RT_BIT_64(5)
     2795/** Bit 6 - nAA. */
     2796#define ARMV8_SCTLR_EL2_NAA                                     RT_BIT_64(6)
     2797/** Bit 7 - IDT. */
     2798#define ARMV8_SCTLR_EL2_IDT                                     RT_BIT_64(7)
     2799/** Bit 8 - SED. */
     2800#define ARMV8_SCTLR_EL2_SED                                     RT_BIT_64(8)
     2801/*  Bit 9 - RES0 (2024-12). */
     2802/** Bit 10 - EnRCTX. */
     2803#define ARMV8_SCTLR_EL2_ENRCTX                                  RT_BIT_64(10)
     2804/** Bit 11 - EOS. */
     2805#define ARMV8_SCTLR_EL2_EOS                                     RT_BIT_64(11)
    27392806/** Bit 12 - Instruction cache enable. */
    27402807#define ARMV8_SCTLR_EL2_I                                       RT_BIT_64(12)
    2741 /* Bit 13 - 18 - Reserved. */
     2808/** Bit 13 - EnDB. */
     2809#define ARMV8_SCTLR_EL2_ENDB                                    RT_BIT_64(13)
     2810/** Bit 14 - DZE. */
     2811#define ARMV8_SCTLR_EL2_DZE                                     RT_BIT_64(14)
     2812/** Bit 15 - UCT. */
     2813#define ARMV8_SCTLR_EL2_UCT                                     RT_BIT_64(15)
     2814/** Bit 16 - nTWI. */
     2815#define ARMV8_SCTLR_EL2_NTWI                                    RT_BIT_64(16)
     2816/*  Bit 17 - RES0 (2024-12). */
     2817/** Bit 18 - nTWE. */
     2818#define ARMV8_SCTLR_EL2_NTWE                                    RT_BIT_64(18)
    27422819/** Bit 19 - Force treatment of all memory regions with write permissions as XN. */
    27432820#define ARMV8_SCTLR_EL2_WXN                                     RT_BIT_64(19)
    2744 /* Bit 20 - 24 - Reserved. */
     2821/** Bit 20 - TSCXT. */
     2822#define ARMV8_SCTLR_EL2_TSCXT                                   RT_BIT_64(20)
     2823/** Bit 21 - IESB. */
     2824#define ARMV8_SCTLR_EL2_IESB                                    RT_BIT_64(21)
     2825/** Bit 22 - EIS. */
     2826#define ARMV8_SCTLR_EL2_EIS                                     RT_BIT_64(22)
     2827/** Bit 23 - SPAN. */
     2828#define ARMV8_SCTLR_EL2_SPAN                                    RT_BIT_64(23)
     2829/** Bit 24 - E0E. */
     2830#define ARMV8_SCTLR_EL2_E0E                                     RT_BIT_64(24)
    27452831/** Bit 25 - Exception endianess - set means big endian, clear little endian. */
    27462832#define ARMV8_SCTLR_EL2_EE                                      RT_BIT_64(25)
    2747 /* Bit 26 - 31 - Reserved. */
     2833/** @todo Finish (lazy developer). */
     2834/** @} */
     2835
     2836
     2837/** @name HCR_EL2 - AArch64 Hypervisor Configuration Register (EL2).
     2838 * @{ */
     2839#define ARMV8_HCR_EL2_VM                                        RT_BIT_64(0)
     2840#define ARMV8_HCR_EL2_SWIO                                      RT_BIT_64(1)
     2841#define ARMV8_HCR_EL2_PTW                                       RT_BIT_64(2)
     2842#define ARMV8_HCR_EL2_FMO                                       RT_BIT_64(3)
     2843#define ARMV8_HCR_EL2_IMO                                       RT_BIT_64(4)
     2844#define ARMV8_HCR_EL2_AMO                                       RT_BIT_64(5)
     2845#define ARMV8_HCR_EL2_VF                                        RT_BIT_64(6)
     2846#define ARMV8_HCR_EL2_VI                                        RT_BIT_64(7)
     2847#define ARMV8_HCR_EL2_VSE                                       RT_BIT_64(8)
     2848#define ARMV8_HCR_EL2_FB                                        RT_BIT_64(9)
     2849#define ARMV8_HCR_EL2_BSU_MASK                                  (RT_BIT_64(10) | RT_BIT_64(11))
     2850#define ARMV8_HCR_EL2_DC                                        RT_BIT_64(12)
     2851#define ARMV8_HCR_EL2_TWI                                       RT_BIT_64(13)
     2852#define ARMV8_HCR_EL2_TWE                                       RT_BIT_64(14)
     2853#define ARMV8_HCR_EL2_TID0                                      RT_BIT_64(15)
     2854#define ARMV8_HCR_EL2_TID1                                      RT_BIT_64(16)
     2855#define ARMV8_HCR_EL2_TID2                                      RT_BIT_64(17)
     2856#define ARMV8_HCR_EL2_TID3                                      RT_BIT_64(18)
     2857#define ARMV8_HCR_EL2_TSC                                       RT_BIT_64(19)
     2858#define ARMV8_HCR_EL2_TIDCP                                     RT_BIT_64(20)
     2859#define ARMV8_HCR_EL2_TACR                                      RT_BIT_64(21)
     2860#define ARMV8_HCR_EL2_TSW                                       RT_BIT_64(22)
     2861#define ARMV8_HCR_EL2_TDCP                                      RT_BIT_64(23)
     2862#define ARMV8_HCR_EL2_TPU                                       RT_BIT_64(24)
     2863#define ARMV8_HCR_EL2_TTLB                                      RT_BIT_64(25)
     2864#define ARMV8_HCR_EL2_TVM                                       RT_BIT_64(26)
     2865#define ARMV8_HCR_EL2_TGE                                       RT_BIT_64(27)
     2866#define ARMV8_HCR_EL2_TDZ                                       RT_BIT_64(28)
     2867#define ARMV8_HCR_EL2_HCD                                       RT_BIT_64(29)
     2868#define ARMV8_HCR_EL2_TRVM                                      RT_BIT_64(30)
     2869#define ARMV8_HCR_EL2_RW                                        RT_BIT_64(31)
     2870#define ARMV8_HCR_EL2_CD                                        RT_BIT_64(32)
     2871#define ARMV8_HCR_EL2_IC                                        RT_BIT_64(33)
     2872#define ARMV8_HCR_EL2_E2H                                       RT_BIT_64(34)
     2873#define ARMV8_HCR_EL2_TLOR                                      RT_BIT_64(35)
     2874#define ARMV8_HCR_EL2_TERR                                      RT_BIT_64(36)
     2875#define ARMV8_HCR_EL2_TEA                                       RT_BIT_64(37)
     2876#define ARMV8_HCR_EL2_MIOCNCE                                   RT_BIT_64(38)
     2877#define ARMV8_HCR_EL2_TME                                       RT_BIT_64(39)
     2878#define ARMV8_HCR_EL2_APK                                       RT_BIT_64(40)
     2879#define ARMV8_HCR_EL2_API                                       RT_BIT_64(41)
     2880#define ARMV8_HCR_EL2_NV                                        RT_BIT_64(42)
     2881#define ARMV8_HCR_EL2_NV1                                       RT_BIT_64(43)
     2882#define ARMV8_HCR_EL2_AT                                        RT_BIT_64(44)
     2883#define ARMV8_HCR_EL2_NV2                                       RT_BIT_64(45)
     2884#define ARMV8_HCR_EL2_FWB                                       RT_BIT_64(46)
     2885#define ARMV8_HCR_EL2_FIEN                                      RT_BIT_64(47)
     2886#define ARMV8_HCR_EL2_GPF                                       RT_BIT_64(48)
     2887#define ARMV8_HCR_EL2_TID4                                      RT_BIT_64(49)
     2888#define ARMV8_HCR_EL2_TICAB                                     RT_BIT_64(50)
     2889#define ARMV8_HCR_EL2_AMVOFFEN                                  RT_BIT_64(51)
     2890#define ARMV8_HCR_EL2_TOCU                                      RT_BIT_64(52)
     2891#define ARMV8_HCR_EL2_ENSCXT                                    RT_BIT_64(53)
     2892#define ARMV8_HCR_EL2_TTLBIS                                    RT_BIT_64(54)
     2893#define ARMV8_HCR_EL2_TTLBOS                                    RT_BIT_64(55)
     2894#define ARMV8_HCR_EL2_ATA                                       RT_BIT_64(56)
     2895#define ARMV8_HCR_EL2_DCT                                       RT_BIT_64(57)
     2896#define ARMV8_HCR_EL2_TID5                                      RT_BIT_64(58)
     2897#define ARMV8_HCR_EL2_TWEDEN                                    RT_BIT_64(59)
     2898#define ARMV8_HCR_EL2_TWEDL_MASK                                UINT64_C(0xf000000000000000)
     2899/** @} */
     2900
     2901
     2902/** @name MDCR_EL2 - AArch64 Monitor Debug Configuration Register (EL2).
     2903 * @{ */
     2904#define ARMV8_MDCR_EL2_HPMN_MASK                                UINT64_C(0x1f)
     2905#define ARMV8_MDCR_EL2_TPMCR                                    RT_BIT_64(5)
     2906#define ARMV8_MDCR_EL2_TPM                                      RT_BIT_64(6)
     2907#define ARMV8_MDCR_EL2_HPME                                     RT_BIT_64(7)
     2908#define ARMV8_MDCR_EL2_TDE                                      RT_BIT_64(8)
     2909#define ARMV8_MDCR_EL2_TDA                                      RT_BIT_64(9)
     2910#define ARMV8_MDCR_EL2_TDOSA                                    RT_BIT_64(10)
     2911#define ARMV8_MDCR_EL2_TDRA                                     RT_BIT_64(11)
     2912#define ARMV8_MDCR_EL2_E2PB_MASK                                (RT_BIT_64(12) | RT_BIT_64(13))
     2913#define ARMV8_MDCR_EL2_TPMS                                     RT_BIT_64(14)
     2914#define ARMV8_MDCR_EL2_ENSPM                                    RT_BIT_64(15)
     2915/*  Bit 16 - RES0 (2024-12) */
     2916#define ARMV8_MDCR_EL2_HPMD                                     RT_BIT_64(17)
     2917/*  Bit 18 - RES0 (2024-12) */
     2918#define ARMV8_MDCR_EL2_TTRF                                     RT_BIT_64(19)
     2919/*  Bits 22:20 - RES0 (2024-12) */
     2920#define ARMV8_MDCR_EL2_HCCD                                     RT_BIT_64(23)
     2921#define ARMV8_MDCR_EL2_E2TB_MASK                                (RT_BIT_64(24) | RT_BIT_64(25))
     2922#define ARMV8_MDCR_EL2_HLP                                      RT_BIT_64(26)
     2923#define ARMV8_MDCR_EL2_TDCC                                     RT_BIT_64(27)
     2924#define ARMV8_MDCR_EL2_MTPME                                    RT_BIT_64(28)
     2925#define ARMV8_MDCR_EL2_HPMFZO                                   RT_BIT_64(29)
     2926#define ARMV8_MDCR_EL2_PMSSE_MASK                               (RT_BIT_64(30) | RT_BIT_64(31))
     2927/*  Bits 35:32 - RES0 (2024-12) */
     2928#define ARMV8_MDCR_EL2_HPMFZS                                   RT_BIT_64(36)
     2929/*  Bits 39:37 - RES0 (2024-12) */
     2930#define ARMV8_MDCR_EL2_PMEE_MASK                                (RT_BIT_64(40) | RT_BIT_64(41))
     2931/*  Bit 42 - RES0 (2024-12) */
     2932#define ARMV8_MDCR_EL2_EBWE                                     RT_BIT_64(43)
     2933/*  Bits 49:44 - RES0 (2024-12) */
     2934#define ARMV8_MDCR_EL2_ENSTEPOP                                 RT_BIT_64(50)
     2935/*  Bits 63:51 - RES0 (2024-12) */
    27482936/** @} */
    27492937
Note: See TracChangeset for help on using the changeset viewer.

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