- Timestamp:
- Jun 11, 2018 3:00:30 PM (7 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
r72517 r72518 4903 4903 IEM_CIMPL_DEF_2(iemCImpl_sldt_reg, uint8_t, iGReg, uint8_t, enmEffOpSize) 4904 4904 { 4905 IEM OP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_LDTR_READS, SVM_EXIT_LDTR_READ, 0, 0);4905 IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_LDTR_READS, SVM_EXIT_LDTR_READ, 0, 0); 4906 4906 4907 4907 IEM_CTX_IMPORT_RET(pVCpu, CPUMCTX_EXTRN_LDTR); … … 4927 4927 IEM_CIMPL_DEF_2(iemCImpl_sldt_mem, uint8_t, iEffSeg, RTGCPTR, GCPtrEffDst) 4928 4928 { 4929 IEM OP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_LDTR_READS, SVM_EXIT_LDTR_READ, 0, 0);4929 IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_LDTR_READS, SVM_EXIT_LDTR_READ, 0, 0); 4930 4930 4931 4931 IEM_CTX_IMPORT_RET(pVCpu, CPUMCTX_EXTRN_LDTR); … … 5068 5068 IEM_CIMPL_DEF_2(iemCImpl_str_reg, uint8_t, iGReg, uint8_t, enmEffOpSize) 5069 5069 { 5070 IEM OP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_TR_READS, SVM_EXIT_TR_READ, 0, 0);5070 IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_TR_READS, SVM_EXIT_TR_READ, 0, 0); 5071 5071 5072 5072 IEM_CTX_IMPORT_RET(pVCpu, CPUMCTX_EXTRN_TR); … … 5092 5092 IEM_CIMPL_DEF_2(iemCImpl_str_mem, uint8_t, iEffSeg, RTGCPTR, GCPtrEffDst) 5093 5093 { 5094 IEM OP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_TR_READS, SVM_EXIT_TR_READ, 0, 0);5094 IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_TR_READS, SVM_EXIT_TR_READ, 0, 0); 5095 5095 5096 5096 IEM_CTX_IMPORT_RET(pVCpu, CPUMCTX_EXTRN_TR); … … 6048 6048 } 6049 6049 6050 IEM OP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_INVD, SVM_EXIT_INVD, 0, 0);6050 IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_INVD, SVM_EXIT_INVD, 0, 0); 6051 6051 6052 6052 /* We currently take no action here. */ … … 6067 6067 } 6068 6068 6069 IEM OP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_WBINVD, SVM_EXIT_WBINVD, 0, 0);6069 IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_WBINVD, SVM_EXIT_WBINVD, 0, 0); 6070 6070 6071 6071 /* We currently take no action here. */ 6072 6072 iemRegAddToRipAndClearRF(pVCpu, cbInstr); 6073 6073 return VINF_SUCCESS; 6074 } 6075 6076 6077 /** Opcode 0x0f 0xaa. */ 6078 IEM_CIMPL_DEF_0(iemCImpl_rsm) 6079 { 6080 IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_RSM, SVM_EXIT_RSM, 0, 0); 6081 NOREF(cbInstr); 6082 return iemRaiseUndefinedOpcode(pVCpu); 6074 6083 } 6075 6084 -
trunk/src/VBox/VMM/VMMAll/IEMAllCImplSvmInstr.cpp.h
r72506 r72518 20 20 /** Check and handles SVM nested-guest instruction intercept and updates 21 21 * NRIP if needed. 22 * @todo r=bird: This macro is conceptually wrong. 23 */ 24 # define IEMOP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(a_pVCpu, a_Intercept, a_uExitCode, a_uExitInfo1, a_uExitInfo2) \ 22 */ 23 # define IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(a_pVCpu, a_Intercept, a_uExitCode, a_uExitInfo1, a_uExitInfo2) \ 25 24 do \ 26 25 { \ … … 46 45 47 46 #else /* !VBOX_WITH_NESTED_HWVIRT_SVM */ 48 # define IEM OP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(a_pVCpu, a_Intercept, a_uExitCode, a_uExitInfo1, a_uExitInfo2) do { } while (0)47 # define IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(a_pVCpu, a_Intercept, a_uExitCode, a_uExitInfo1, a_uExitInfo2) do { } while (0) 49 48 # define IEMCIMPL_HLP_SVM_READ_CR_INTERCEPT(a_pVCpu, a_uCr, a_uExitInfo1, a_uExitInfo2) do { } while (0) 50 49 #endif /* !VBOX_WITH_NESTED_HWVIRT_SVM */ … … 1420 1419 1421 1420 if (fCheckIntercept) 1422 IEM OP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_PAUSE, SVM_EXIT_PAUSE, 0, 0);1421 IEMCIMPL_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_PAUSE, SVM_EXIT_PAUSE, 0, 0); 1423 1422 1424 1423 iemRegAddToRipAndClearRF(pVCpu, cbInstr); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r72517 r72518 6555 6555 FNIEMOP_DEF(iemOp_rsm) 6556 6556 { 6557 IEMOP_MNEMONIC(rsm, "rsm"); 6558 IEMOP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(pVCpu, SVM_CTRL_INTERCEPT_RSM, SVM_EXIT_RSM, 0, 0); 6559 /** @todo rsm - for the regular case (above handles only the SVM nested-guest 6560 * intercept). */ 6561 IEMOP_BITCH_ABOUT_STUB(); 6562 return IEMOP_RAISE_INVALID_OPCODE(); 6563 } 6564 6565 //IEMOP_HLP_MIN_386(); 6557 IEMOP_MNEMONIC0(FIXED, RSM, rsm, DISOPTYPE_HARMLESS, 0); 6558 IEMOP_HLP_MIN_386(); /* 386SL and later. */ 6559 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6560 return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_rsm); 6561 } 6562 6566 6563 6567 6564 -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r72515 r72518 129 129 130 130 #define IEMOP_HLP_DONE_DECODING() do { } while (0) 131 132 #define IEMOP_HLP_SVM_INSTR_INTERCEPT_AND_NRIP(a_pVCpu, a_Intercept, a_uExitCode, a_uExitInfo1, a_uExitInfo2) do { } while (0)133 #define IEMOP_HLP_SVM_READ_CR_INTERCEPT(a_pVCpu, a_uCr, a_uExitInfo1, a_uExitInfo2) do { } while (0)134 131 135 132 #define IEMOP_HLP_DECODED_NL_1(a_uDisOpNo, a_fIemOpFlags, a_uDisParam0, a_fDisOpType) do { } while (0)
Note:
See TracChangeset
for help on using the changeset viewer.