VirtualBox

Changeset 100889 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 16, 2023 10:31:44 PM (19 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158821
Message:

VMM/IEM: Adjusted IEM_MC_CALL_CIMPL_HLP_RET assertion to account for fExec not including the FLAT 32-bit flag if DS, ES or SS state is stored externally (HM, NEM). bugref:10369

Location:
trunk/src/VBox/VMM/include
Files:
3 edited

Legend:

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

    r100868 r100889  
    179179 * ASSUMES that the CPU is in 32-bit mode.
    180180 *
     181 * @note    Will return zero when if any of the segment register state is marked
     182 *          external, this must be factored into assertions checking fExec
     183 *          consistency.
     184 *
    181185 * @returns IEM_F_MODE_X86_32BIT_FLAT or zero.
    182186 * @param   pVCpu               The cross context virtual CPU structure of the
     
    213217 *
    214218 * This is used by sysenter.
     219 *
     220 * @note    Will return zero when if any of the segment register state is marked
     221 *          external, this must be factored into assertions checking fExec
     222 *          consistency.
    215223 *
    216224 * @returns IEM_F_MODE_X86_32BIT_FLAT or zero.
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r100869 r100889  
    12901290 * @param   a_fExtrnMbz     The mask of CPUMCTX_EXTRN_XXX flags that must be zero.
    12911291 */
    1292 #define IEM_CTX_ASSERT(a_pVCpu, a_fExtrnMbz)    AssertMsg(!((a_pVCpu)->cpum.GstCtx.fExtrn & (a_fExtrnMbz)), \
    1293                                                           ("fExtrn=%#RX64 fExtrnMbz=%#RX64\n", (a_pVCpu)->cpum.GstCtx.fExtrn, \
    1294                                                           (a_fExtrnMbz)))
     1292#define IEM_CTX_ASSERT(a_pVCpu, a_fExtrnMbz) \
     1293   AssertMsg(!((a_pVCpu)->cpum.GstCtx.fExtrn & (a_fExtrnMbz)), \
     1294             ("fExtrn=%#RX64 & fExtrnMbz=%#RX64 -> %#RX64\n", \
     1295             (a_pVCpu)->cpum.GstCtx.fExtrn, (a_fExtrnMbz), (a_pVCpu)->cpum.GstCtx.fExtrn & (a_fExtrnMbz) ))
    12951296
    12961297/** @def IEM_CTX_IMPORT_RET
  • trunk/src/VBox/VMM/include/IEMMc.h

    r100860 r100889  
    20672067            { \
    20682068                uint32_t fExecRecalc = iemCalcExecFlags(pVCpu) | (pVCpu->iem.s.fExec & IEM_F_USER_OPTS); \
    2069                 AssertMsg(fExecBefore == fExecRecalc, \
     2069                AssertMsg(   fExecBefore == fExecRecalc \
     2070                             /* in case ES, DS or SS was external initially (happens alot with HM): */ \
     2071                          || (   fExecBefore == (fExecRecalc & ~IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK) \
     2072                              && (fExecRecalc & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT), \
    20702073                          ("fExec=%#x -> %#x (diff %#x)\n", fExecBefore, fExecRecalc, fExecBefore ^ fExecRecalc)); \
    20712074            } \
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