VirtualBox

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


Ignore:
Timestamp:
Mar 29, 2017 2:54:09 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
114270
Message:

IEM: Unused entries in grp 8 completes ModR/M decoding and takes a 8-bit immediate, even on AMD it seems.

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

Legend:

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

    r66159 r66336  
    572572
    573573
     574/** Invalid with RM byte where intel requires 8-byte immediate.
     575 * Both AMD and Intel also needs SIB and displacement according to bRm. */
     576FNIEMOPRM_DEF(iemOp_InvalidWithRMAllNeedImm8)
     577{
     578    IEMOP_MNEMONIC(InvalidWithRMAllNeedImm8, "InvalidWithRMAllNeedImm8");
     579#ifndef TST_IEM_CHECK_MC
     580    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
     581    {
     582        RTGCPTR      GCPtrEff;
     583        VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff);
     584        if (rcStrict != VINF_SUCCESS)
     585            return rcStrict;
     586    }
     587#endif
     588    uint8_t bImm8;  IEM_OPCODE_GET_NEXT_U8(&bImm8);  RT_NOREF(bRm);
     589    IEMOP_HLP_DONE_DECODING();
     590    return IEMOP_RAISE_INVALID_OPCODE();
     591}
     592
     593
    574594/** Invalid opcode where intel requires Mod R/M sequence. */
    575595FNIEMOP_DEF(iemOp_InvalidNeedRM)
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r66334 r66336  
    65836583    {
    65846584        case 0: case 1: case 2: case 3:
    6585             return IEMOP_RAISE_INVALID_OPCODE();
     6585            /* Both AMD and Intel want full modr/m decoding and imm8. */
     6586            return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeedImm8, bRm);
    65866587        case 4: pImpl = &g_iemAImpl_bt;  IEMOP_MNEMONIC(bt_Ev_Ib,  "bt  Ev,Ib"); break;
    65876588        case 5: pImpl = &g_iemAImpl_bts; IEMOP_MNEMONIC(bts_Ev_Ib, "bts Ev,Ib"); break;
     
    67436744        }
    67446745    }
    6745 
    67466746}
    67476747
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