VirtualBox

Changeset 108950 in vbox


Ignore:
Timestamp:
Apr 11, 2025 1:04:57 PM (9 days ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168467
Message:

VMM/PGM: Prepare for 5 level paging (which has a -1 start level) and 52-bit output addresses, bugref:10388

Location:
trunk/src/VBox/VMM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAllGst-armv8.cpp.h

    r108943 r108950  
    191191 * Template variants for actual paging modes.
    192192 */
     193#define PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_MINUS_ONE 0
     194#define PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ZERO      1
     195#define PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ONE       2
     196#define PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_TWO       3
     197#define PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_THREE     4
     198#define PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_INVALID   5
     199
    193200
    194201/*
     
    231238
    232239
    233 template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd>
     240template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd, bool a_f52BitOa>
    234241DECL_FORCE_INLINE(int) pgmGstWalkWorker(PVMCPUCC pVCpu, RTGCPTR GCPtr, PPGMPTWALK pWalk, PPGMPTWALKGST pGstWalk)
    235242{
     
    242249    AssertCompile(ARMV8_TCR_EL1_AARCH64_TG0_64KB    == ARMV8_TCR_EL1_AARCH64_TG1_64KB);
    243250
    244     if RT_CONSTEXPR_IF(a_GranuleSz != ARMV8_TCR_EL1_AARCH64_TG0_INVALID)
     251    if RT_CONSTEXPR_IF(   a_GranuleSz        != ARMV8_TCR_EL1_AARCH64_TG0_INVALID
     252                       && a_InitialLookupLvl != PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_INVALID)
    245253    {
    246254        uint64_t fLookupMaskFull;
     
    319327        ARMV8VMSA64DESC  Desc;
    320328        int rc;
    321         if RT_CONSTEXPR_IF(a_InitialLookupLvl == 0)
     329        if RT_CONSTEXPR_IF(a_InitialLookupLvl == PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ZERO)
    322330        {
    323331            Assert(cLvl0Shift != 0);
     
    340348        }
    341349
    342         if RT_CONSTEXPR_IF(a_InitialLookupLvl <= 1)
     350        if RT_CONSTEXPR_IF(a_InitialLookupLvl <= PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ONE)
    343351        {
    344352            uint8_t const uLvl = 1;
     
    372380        }
    373381
    374         if RT_CONSTEXPR_IF(a_InitialLookupLvl <= 2)
     382        if RT_CONSTEXPR_IF(a_InitialLookupLvl <= PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_TWO)
    375383        {
    376384            uint8_t const uLvl = 2;
     
    399407        }
    400408
    401         AssertCompile(a_InitialLookupLvl <= 3);
     409        AssertCompile(a_InitialLookupLvl <= PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_THREE);
    402410        uint8_t const uLvl = 3;
    403411
     
    423431
    424432
    425 template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd>
     433template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd, bool a_f52BitOa>
    426434static PGM_CTX_DECL(int) PGM_CTX(pgm,GstGetPage)(PVMCPUCC pVCpu, RTGCPTR GCPtr, PPGMPTWALK pWalk)
    427435{
    428     return pgmGstWalkWorker<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd>(pVCpu, GCPtr, pWalk, NULL /*pGstWalk*/);
     436    return pgmGstWalkWorker<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa>(pVCpu, GCPtr, pWalk, NULL /*pGstWalk*/);
    429437}
    430438
     
    610618
    611619
    612 template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd>
     620template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd, bool a_f52BitOa>
    613621static PGM_CTX_DECL(int) PGM_CTX(pgm,GstQueryPageFast)(PVMCPUCC pVCpu, RTGCPTR GCPtr, uint32_t fFlags, PPGMPTWALKFAST pWalk)
    614622{
     
    621629    pWalk->GCPtr = GCPtr;
    622630
    623     if RT_CONSTEXPR_IF(a_GranuleSz != ARMV8_TCR_EL1_AARCH64_TG0_INVALID)
     631    if RT_CONSTEXPR_IF(   a_GranuleSz        != ARMV8_TCR_EL1_AARCH64_TG0_INVALID
     632                       && a_InitialLookupLvl != PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_INVALID)
    624633    {
    625634        uint64_t fLookupMaskFull;
     
    696705        ARMV8VMSA64DESC  Desc;
    697706        int rc;
    698         if RT_CONSTEXPR_IF(a_InitialLookupLvl == 0)
     707        if RT_CONSTEXPR_IF(a_InitialLookupLvl == PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ZERO)
    699708        {
    700709            Assert(cLvl0Shift != 0);
     
    717726        }
    718727
    719         if RT_CONSTEXPR_IF(a_InitialLookupLvl <= 1)
     728        if RT_CONSTEXPR_IF(a_InitialLookupLvl <= PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ONE)
    720729        {
    721730            uint8_t const uLvl = 1;
     
    748757        }
    749758
    750         if RT_CONSTEXPR_IF(a_InitialLookupLvl <= 2)
     759        if RT_CONSTEXPR_IF(a_InitialLookupLvl <= PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_TWO)
    751760        {
    752761            uint8_t const uLvl = 2;
     
    774783        }
    775784
    776         AssertCompile(a_InitialLookupLvl <= 3);
     785        AssertCompile(a_InitialLookupLvl <= PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_THREE);
    777786        uint8_t const uLvl = 3;
    778787
     
    797806
    798807
    799 template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd>
     808template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd, bool a_f52BitOa>
    800809static PGM_CTX_DECL(int) PGM_CTX(pgm,GstModifyPage)(PVMCPUCC pVCpu, RTGCPTR GCPtr, size_t cb, uint64_t fFlags, uint64_t fMask)
    801810{
     
    806815
    807816
    808 template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd>
     817template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd, bool a_f52BitOa>
    809818static PGM_CTX_DECL(int) PGM_CTX(pgm,GstWalk)(PVMCPUCC pVCpu, RTGCPTR GCPtr, PPGMPTWALK pWalk, PPGMPTWALKGST pGstWalk)
    810819{
    811820    pGstWalk->enmType = PGMPTWALKGSTTYPE_INVALID;
    812     return pgmGstWalkWorker<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd>(pVCpu, GCPtr, pWalk, pGstWalk);
    813 }
    814 
    815 
    816 template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd>
     821    return pgmGstWalkWorker<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa>(pVCpu, GCPtr, pWalk, pGstWalk);
     822}
     823
     824
     825template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd, bool a_f52BitOa>
    817826static PGM_CTX_DECL(int) PGM_CTX(pgm,GstEnter)(PVMCPUCC pVCpu)
    818827{
     
    823832
    824833
    825 template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd>
     834template<bool a_fTtbr0, uint8_t a_InitialLookupLvl, uint8_t a_GranuleSz, bool a_fTbi, bool a_fEpd, bool a_f52BitOa>
    826835static PGM_CTX_DECL(int) PGM_CTX(pgm,GstExit)(PVMCPUCC pVCpu)
    827836{
     
    848857    },
    849858
    850 #define PGM_MODE_TYPE_CREATE(a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd) \
    851         (2 + (  (a_fEpd ? RT_BIT_32(6) : 0)     \
    852               | (a_fTbi ? RT_BIT_32(5) : 0)     \
    853               | (a_GranuleSz << 3)              \
     859#define PGM_MODE_TYPE_CREATE(a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa) \
     860        (2 + (  (a_f52BitOa ? RT_BIT_32(8) : 0) \
     861              | (a_fEpd ? RT_BIT_32(7) : 0)     \
     862              | (a_fTbi ? RT_BIT_32(6) : 0)     \
     863              | (a_GranuleSz << 4)              \
    854864              | (a_InitialLookupLvl << 1)       \
    855865              | (a_fTtbr0 ? RT_BIT_32(0) : 0) ))
    856866
    857 #define PGM_MODE_CREATE_EX(a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd) \
     867#define PGM_MODE_CREATE_EX(a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa) \
    858868    { \
    859         PGM_MODE_TYPE_CREATE(a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd), \
    860         PGM_CTX(pgm,GstGetPage)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd>, \
    861         PGM_CTX(pgm,GstQueryPageFast)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd>, \
    862         PGM_CTX(pgm,GstModifyPage)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd>, \
    863         PGM_CTX(pgm,GstWalk)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd>, \
    864         PGM_CTX(pgm,GstEnter)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd>, \
    865         PGM_CTX(pgm,GstExit)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd> \
     869        PGM_MODE_TYPE_CREATE(a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa), \
     870        PGM_CTX(pgm,GstGetPage)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa>, \
     871        PGM_CTX(pgm,GstQueryPageFast)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa>, \
     872        PGM_CTX(pgm,GstModifyPage)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa>, \
     873        PGM_CTX(pgm,GstWalk)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa>, \
     874        PGM_CTX(pgm,GstEnter)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa>, \
     875        PGM_CTX(pgm,GstExit)<a_fTtbr0, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa> \
    866876    }
    867877
    868 #define PGM_MODE_CREATE_TTBR(a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd) \
    869     PGM_MODE_CREATE_EX(false, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd), \
    870     PGM_MODE_CREATE_EX(true,  a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd)
    871 
    872 #define PGM_MODE_CREATE_LOOKUP_LVL(a_GranuleSz, a_fTbi, a_fEpd) \
    873     PGM_MODE_CREATE_TTBR(0,  a_GranuleSz, a_fTbi, a_fEpd ), \
    874     PGM_MODE_CREATE_TTBR(1,  a_GranuleSz, a_fTbi, a_fEpd ), \
    875     PGM_MODE_CREATE_TTBR(2,  a_GranuleSz, a_fTbi, a_fEpd ), \
    876     PGM_MODE_CREATE_TTBR(3,  a_GranuleSz, a_fTbi, a_fEpd ) /* Invalid */
    877 
    878 #define PGM_MODE_CREATE_GRANULE_SZ(a_fTbi, a_fEpd) \
    879     PGM_MODE_CREATE_LOOKUP_LVL(ARMV8_TCR_EL1_AARCH64_TG1_INVALID, a_fTbi, a_fEpd), \
    880     PGM_MODE_CREATE_LOOKUP_LVL(ARMV8_TCR_EL1_AARCH64_TG1_16KB,    a_fTbi, a_fEpd), \
    881     PGM_MODE_CREATE_LOOKUP_LVL(ARMV8_TCR_EL1_AARCH64_TG1_4KB,     a_fTbi, a_fEpd), \
    882     PGM_MODE_CREATE_LOOKUP_LVL(ARMV8_TCR_EL1_AARCH64_TG1_64KB,    a_fTbi, a_fEpd)
    883 
    884 #define PGM_MODE_CREATE_TBI(a_fEpd) \
    885     PGM_MODE_CREATE_GRANULE_SZ(false, a_fEpd), \
    886     PGM_MODE_CREATE_GRANULE_SZ(true,  a_fEpd)
    887 
    888     /* Recursive expansion for the win, this will blow up to 128 entries covering all possible modes. */
    889     PGM_MODE_CREATE_TBI(false),
    890     PGM_MODE_CREATE_TBI(true)
    891 
     878#define PGM_MODE_CREATE_TTBR(a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa) \
     879    PGM_MODE_CREATE_EX(false, a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa), \
     880    PGM_MODE_CREATE_EX(true,  a_InitialLookupLvl, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa)
     881
     882#define PGM_MODE_CREATE_LOOKUP_LVL(a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa) \
     883    PGM_MODE_CREATE_TTBR(PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_MINUS_ONE, a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa), \
     884    PGM_MODE_CREATE_TTBR(PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ZERO,      a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa ), \
     885    PGM_MODE_CREATE_TTBR(PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ONE,       a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa ), \
     886    PGM_MODE_CREATE_TTBR(PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_TWO,       a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa ), \
     887    PGM_MODE_CREATE_TTBR(PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_THREE,     a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa ), \
     888    PGM_MODE_CREATE_TTBR(PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_INVALID,   a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa ),  /* Filler for 3 bit lookup level */ \
     889    PGM_MODE_CREATE_TTBR(PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_INVALID,   a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa ),  /* Filler for 3 bit lookup level */ \
     890    PGM_MODE_CREATE_TTBR(PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_INVALID,   a_GranuleSz, a_fTbi, a_fEpd, a_f52BitOa )   /* Filler for 3 bit lookup level */
     891
     892#define PGM_MODE_CREATE_GRANULE_SZ(a_fTbi, a_fEpd, a_f52BitOa) \
     893    PGM_MODE_CREATE_LOOKUP_LVL(ARMV8_TCR_EL1_AARCH64_TG1_INVALID, a_fTbi, a_fEpd, a_f52BitOa), \
     894    PGM_MODE_CREATE_LOOKUP_LVL(ARMV8_TCR_EL1_AARCH64_TG1_16KB,    a_fTbi, a_fEpd, a_f52BitOa), \
     895    PGM_MODE_CREATE_LOOKUP_LVL(ARMV8_TCR_EL1_AARCH64_TG1_4KB,     a_fTbi, a_fEpd, a_f52BitOa), \
     896    PGM_MODE_CREATE_LOOKUP_LVL(ARMV8_TCR_EL1_AARCH64_TG1_64KB,    a_fTbi, a_fEpd, a_f52BitOa)
     897
     898#define PGM_MODE_CREATE_TBI(a_fEpd, a_f52BitOa) \
     899    PGM_MODE_CREATE_GRANULE_SZ(false, a_fEpd, a_f52BitOa), \
     900    PGM_MODE_CREATE_GRANULE_SZ(true,  a_fEpd, a_f52BitOa)
     901
     902#define PGM_MODE_CREATE_EPD(a_f52BitOa) \
     903    PGM_MODE_CREATE_TBI(false, a_f52BitOa), \
     904    PGM_MODE_CREATE_TBI(true,  a_f52BitOa)
     905
     906    /* Recursive expansion for the win, this will blow up to 512 entries covering all possible modes. */
     907    PGM_MODE_CREATE_EPD(false),
     908    PGM_MODE_CREATE_EPD(true)
     909
     910#undef PGM_MODE_CREATE_EPD
    892911#undef PGM_MODE_CREATE_TBI
    893912#undef PGM_MODE_CREATE_GRANULE_SZ
     
    931950            if (u64Tsz <= 16)
    932951            {
    933                 uLookupLvl = 0;
     952                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ZERO;
    934953                *pfInitialLookupMask = 0x1;
    935954            }
    936955            else if (u64Tsz >= 17 && u64Tsz <= 27)
    937956            {
    938                 uLookupLvl = 1;
     957                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ONE;
    939958                *pfInitialLookupMask = RT_BIT_64(28 - u64Tsz + 1) - 1;
    940959            }
    941960            else if (u64Tsz >= 28 && u64Tsz <= 38)
    942961            {
    943                 uLookupLvl = 2;
     962                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_TWO;
    944963                *pfInitialLookupMask = RT_BIT_64(38 - u64Tsz + 1) - 1;
    945964            }
    946965            else /* if (u64Tsz == 39) */
    947966            {
    948                 uLookupLvl = 3;
     967                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_THREE;
    949968                *pfInitialLookupMask = 0x1;
    950969            }
     
    954973            if (/*u64Tsz >= 16 &&*/ u64Tsz <= 21)
    955974            {
    956                 uLookupLvl = 1;
     975                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ONE;
    957976                *pfInitialLookupMask = RT_BIT_64(21 - u64Tsz + 1) - 1;
    958977            }
    959978            else if (u64Tsz >= 22 && u64Tsz <= 34)
    960979            {
    961                 uLookupLvl = 2;
     980                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_TWO;
    962981                *pfInitialLookupMask = RT_BIT_64(34 - u64Tsz + 1) - 1;
    963982            }
    964983            else /*if (u64Tsz >= 35 && u64Tsz <= 39)*/
    965984            {
    966                 uLookupLvl = 3;
     985                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_THREE;
    967986                if (u64Tsz <= 39)
    968987                    *pfInitialLookupMask = RT_BIT_64(39 - u64Tsz + 1) - 1;
     
    9891008            if (/*u64Tsz >= 16 &&*/ u64Tsz <= 24)
    9901009            {
    991                 uLookupLvl = 0;
     1010                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ZERO;
    9921011                if (u64Tsz >= 16)
    9931012                    *pfInitialLookupMask = RT_BIT_64(24 - u64Tsz + 1) - 1;
     
    9971016            else if (u64Tsz >= 25 && u64Tsz <= 33)
    9981017            {
    999                 uLookupLvl = 1;
     1018                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_ONE;
    10001019                *pfInitialLookupMask = RT_BIT_64(33 - u64Tsz + 1) - 1;
    10011020            }
    10021021            else /*if (u64Tsz >= 34 && u64Tsz <= 39)*/
    10031022            {
    1004                 uLookupLvl = 2;
     1023                uLookupLvl = PGM_MODE_ARMV8_INITIAL_LOOKUP_LVL_TWO;
    10051024                if (u64Tsz <= 39)
    10061025                    *pfInitialLookupMask = RT_BIT_64(39 - u64Tsz + 1) - 1;
     
    10131032
    10141033        /* Build the index into the PGM mode callback table for the given config. */
    1015         idxNewGst = PGM_MODE_TYPE_CREATE(a_fTtbr0, uLookupLvl, u64Tg, fTbi, fEpd);
     1034        idxNewGst = PGM_MODE_TYPE_CREATE(a_fTtbr0, uLookupLvl, u64Tg, fTbi, fEpd, false /*f53BitOa*/);
    10161035    }
    10171036    else
  • trunk/src/VBox/VMM/include/PGMInternal.h

    r108843 r108950  
    28772877# endif
    28782878#elif defined(VBOX_VMM_TARGET_ARMV8)
    2879 # define PGM_GUEST_MODE_DATA_ARRAY_SIZE      (128 + 2) /** @todo Find a better way to express that. */
     2879# define PGM_GUEST_MODE_DATA_ARRAY_SIZE      (512 + 2) /** @todo Find a better way to express that. */
    28802880#else
    28812881# error "Port me"
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