Changeset 66463 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Apr 6, 2017 5:58:25 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 114448
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
r66336 r66463 549 549 550 550 551 /** Invalid with RM byte where both AMD and Intel decodes any additional 552 * address encoding bytes. */ 553 FNIEMOPRM_DEF(iemOp_InvalidWithRMAllNeeded) 554 { 555 IEMOP_MNEMONIC(InvalidWithRMAllNeeded, "InvalidWithRMAllNeeded"); 556 #ifndef TST_IEM_CHECK_MC 557 if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT)) 558 { 559 RTGCPTR GCPtrEff; 560 VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff); 561 if (rcStrict != VINF_SUCCESS) 562 return rcStrict; 563 } 564 #endif 565 IEMOP_HLP_DONE_DECODING(); 566 return IEMOP_RAISE_INVALID_OPCODE(); 567 } 568 569 551 570 /** Invalid with RM byte where intel requires 8-byte immediate. 552 571 * Intel will also need SIB and displacement if bRm indicates memory. */ … … 614 633 615 634 635 /** Invalid opcode where both AMD and Intel requires Mod R/M sequence. */ 636 FNIEMOP_DEF(iemOp_InvalidAllNeedRM) 637 { 638 IEMOP_MNEMONIC(InvalidAllNeedRM, "InvalidAllNeedRM"); 639 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); RT_NOREF(bRm); 640 #ifndef TST_IEM_CHECK_MC 641 if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT)) 642 { 643 RTGCPTR GCPtrEff; 644 VBOXSTRICTRC rcStrict = iemOpHlpCalcRmEffAddr(pVCpu, bRm, 0, &GCPtrEff); 645 if (rcStrict != VINF_SUCCESS) 646 return rcStrict; 647 } 648 #endif 649 IEMOP_HLP_DONE_DECODING(); 650 return IEMOP_RAISE_INVALID_OPCODE(); 651 } 652 653 616 654 /** Invalid opcode where intel requires Mod R/M sequence and 8-byte 617 655 * immediate. */ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsOneByte.cpp.h
r66462 r66463 1974 1974 { 1975 1975 Log(("evex not supported by the guest CPU!\n")); 1976 return FNIEMOP_CALL(iemOp_Invalid NeedRM);1976 return FNIEMOP_CALL(iemOp_InvalidAllNeedRM); 1977 1977 } 1978 1978 IEM_OPCODE_GET_NEXT_U8(&bRm); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r66462 r66463 6028 6028 IEMOP_MNEMONIC1(M_MEM, CLFLUSH, clflush, MbRO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 6029 6029 if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fClFlush) 6030 return IEMOP_RAISE_INVALID_OPCODE();6030 return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm); 6031 6031 6032 6032 IEM_MC_BEGIN(2, 0); … … 6053 6053 IEMOP_MNEMONIC1(M_MEM, CLFLUSHOPT, clflushopt, MbRO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 6054 6054 if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fClFlushOpt) 6055 return IEMOP_RAISE_INVALID_OPCODE();6055 return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm); 6056 6056 6057 6057 IEM_MC_BEGIN(2, 0);
Note:
See TracChangeset
for help on using the changeset viewer.