VirtualBox

Changeset 106445 in vbox for trunk/src/VBox/VMM/include


Ignore:
Timestamp:
Oct 17, 2024 12:31:32 PM (4 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165264
Message:

VMM/IEM: Pass down a_fFlat to the IEMNATIVEEMITTLBSTATE constructor used for memory read/write/map. bugref:10720

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/IEMN8veRecompilerTlbLookup.h

    r106443 r106445  
    9595
    9696    IEMNATIVEEMITTLBSTATE(PIEMRECOMPILERSTATE a_pReNative, uint32_t *a_poff, uint8_t a_idxVarGCPtrMem,
    97                           uint8_t a_iSegReg, uint8_t a_cbMem, uint8_t a_offDisp = 0)
     97                          uint8_t const a_iSegReg, bool const a_fFlat, uint8_t const a_cbMem, uint8_t const a_offDisp = 0)
    9898#ifdef IEMNATIVE_WITH_TLB_LOOKUP
    9999        /* 32-bit and 64-bit wraparound will require special handling, so skip these for absolute addresses. */
     
    123123                                                                      IEMNATIVE_CALL_ARG2_GREG)
    124124                          : idxRegPtrHlp)
    125         ,   idxRegSegBase(a_iSegReg == UINT8_MAX || fSkip
     125        ,   idxRegSegBase(a_fFlat || a_iSegReg == UINT8_MAX || fSkip
    126126                          ? UINT8_MAX
    127127                          : iemNativeRegAllocTmpForGuestReg(a_pReNative, a_poff, IEMNATIVEGSTREG_SEG_BASE(a_iSegReg)))
    128         ,  idxRegSegLimit((a_iSegReg == UINT8_MAX || (a_pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_64BIT) || fSkip
     128        ,  idxRegSegLimit(a_fFlat || a_iSegReg == UINT8_MAX || (a_pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_64BIT || fSkip
    129129                          ? UINT8_MAX
    130130                          : iemNativeRegAllocTmpForGuestReg(a_pReNative, a_poff, IEMNATIVEGSTREG_SEG_LIMIT(a_iSegReg)))
    131         , idxRegSegAttrib((a_iSegReg == UINT8_MAX || (a_pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_64BIT) || fSkip
     131        , idxRegSegAttrib(a_fFlat || a_iSegReg == UINT8_MAX || (a_pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_64BIT || fSkip
    132132                          ? UINT8_MAX
    133133                          : iemNativeRegAllocTmpForGuestReg(a_pReNative, a_poff, IEMNATIVEGSTREG_SEG_ATTRIB(a_iSegReg)))
     
    148148
    149149    {
    150         RT_NOREF(a_cbMem, a_offDisp);
     150        Assert(a_fFlat ? a_iSegReg == UINT8_MAX : a_iSegReg != UINT8_MAX);
     151        RT_NOREF(a_offDisp);
    151152    }
    152153
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