VirtualBox

Changeset 65618 in vbox for trunk/src


Ignore:
Timestamp:
Feb 6, 2017 9:26:53 AM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
113290
Message:

IEM: Fixed bug in the iemOp_InvalidNeed*RM* functions.

File:
1 edited

Legend:

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

    r65610 r65618  
    557557        uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); RT_NOREF(bRm);
    558558#ifndef TST_IEM_CHECK_MC
    559         RTGCPTR      GCPtrEff;
    560         VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff);
    561         if (rcStrict != VINF_SUCCESS)
    562             return rcStrict;
     559        if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
     560        {
     561            RTGCPTR      GCPtrEff;
     562            VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff);
     563            if (rcStrict != VINF_SUCCESS)
     564                return rcStrict;
     565        }
    563566#endif
    564567        IEMOP_HLP_DONE_DECODING();
     
    577580        uint8_t bRm;  IEM_OPCODE_GET_NEXT_U8(&bRm);  RT_NOREF(bRm);
    578581#ifndef TST_IEM_CHECK_MC
    579         RTGCPTR      GCPtrEff;
    580         VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff);
    581         if (rcStrict != VINF_SUCCESS)
    582             return rcStrict;
     582        if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
     583        {
     584            RTGCPTR      GCPtrEff;
     585            VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff);
     586            if (rcStrict != VINF_SUCCESS)
     587                return rcStrict;
     588        }
    583589#endif
    584590        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); RT_NOREF(bImm);
     
    599605        uint8_t bRm;  IEM_OPCODE_GET_NEXT_U8(&bRm);  RT_NOREF(bRm);
    600606#ifndef TST_IEM_CHECK_MC
    601         RTGCPTR      GCPtrEff;
    602         VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff);
    603         if (rcStrict != VINF_SUCCESS)
    604             return rcStrict;
     607        if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
     608        {
     609            RTGCPTR      GCPtrEff;
     610            VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff);
     611            if (rcStrict != VINF_SUCCESS)
     612                return rcStrict;
     613        }
    605614#endif
    606615        IEMOP_HLP_DONE_DECODING();
     
    620629        uint8_t bRm;  IEM_OPCODE_GET_NEXT_U8(&bRm);  RT_NOREF(bRm);
    621630#ifndef TST_IEM_CHECK_MC
    622         RTGCPTR      GCPtrEff;
    623         VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff);
    624         if (rcStrict != VINF_SUCCESS)
    625             return rcStrict;
     631        if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
     632        {
     633            RTGCPTR      GCPtrEff;
     634            VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 1, &GCPtrEff);
     635            if (rcStrict != VINF_SUCCESS)
     636                return rcStrict;
     637        }
    626638#endif
    627639        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); RT_NOREF(bImm);
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