VirtualBox

Changeset 102439 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Dec 3, 2023 12:06:50 PM (16 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160582
Message:

VMM/IEM: Simplified mem segmentation assertions as they didn't take address prefix bytes into account and would fire incorrectly during syslinux and such. bugref:10371

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp

    r102438 r102439  
    82048204    AssertCompile(IEMNATIVE_CALL_ARG_GREG_COUNT >= 4);
    82058205#ifdef VBOX_STRICT
    8206     if (   (   (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_64BIT
    8207             || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_PROT_FLAT
    8208             || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_FLAT)
    8209         && (   iSegReg == UINT8_MAX
    8210             || iSegReg == X86_SREG_DS
    8211             || iSegReg == X86_SREG_ES
    8212             || iSegReg == X86_SREG_SS
    8213             || (iSegReg == X86_SREG_CS && (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_64BIT) ))
    8214     {
    8215         Assert(iSegReg == UINT8_MAX);
     8206    if (iSegReg == UINT8_MAX)
     8207    {
     8208        Assert(   (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_64BIT
     8209               || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_PROT_FLAT
     8210               || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_FLAT);
    82168211        switch (cbMem)
    82178212        {
     
    87628757         ? (uintptr_t)RT_CONCAT(a_fnBase,Ro) : (uintptr_t)RT_CONCAT(a_fnBase,Wo) )
    87638758
    8764     if (   (   (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_64BIT
    8765             || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_PROT_FLAT
    8766             || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_FLAT)
    8767         && (   iSegReg == UINT8_MAX
    8768             || iSegReg == X86_SREG_DS
    8769             || iSegReg == X86_SREG_ES
    8770             || iSegReg == X86_SREG_SS
    8771             || (iSegReg == X86_SREG_CS && (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_64BIT) ))
    8772     {
    8773         Assert(iSegReg == UINT8_MAX);
     8759    if (iSegReg == UINT8_MAX)
     8760    {
     8761        Assert(   (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_64BIT
     8762               || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_PROT_FLAT
     8763               || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_FLAT);
    87748764        switch (cbMem)
    87758765        {
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