Changeset 72600 in vbox
- Timestamp:
- Jun 18, 2018 1:40:48 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 123096
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Config.kmk
r72536 r72600 404 404 # Enable the debugger GUI. 405 405 VBOX_WITH_DEBUGGER_GUI = 1 406 # Enables the second step using IEM (the interpreter).407 VBOX_WITH_2ND_IEM_STEP = 1408 406 # Enables the third step using IEM (the interpreter). 409 407 VBOX_WITH_3RD_IEM_STEP = 1 -
trunk/src/VBox/VMM/Config.kmk
r72503 r72600 30 30 # Can be prepended to by setting it in LocalConfig.kmk 31 31 VMM_COMMON_DEFS += VBOX_IN_VMM 32 ifdef VBOX_WITH_2ND_IEM_STEP33 VMM_COMMON_DEFS += VBOX_WITH_2ND_IEM_STEP34 endif35 32 ifdef VBOX_WITH_3RD_IEM_STEP 36 33 VMM_COMMON_DEFS += VBOX_WITH_3RD_IEM_STEP -
trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
r71081 r72600 1308 1308 } 1309 1309 else 1310 # ifdef VBOX_WITH_2ND_IEM_STEP1311 1310 *ppv = pVM->pgm.s.CTXALLSUFF(pvZeroPg); 1312 # else1313 {1314 /* This kind of screws up the TLB entry if accessed from a different section afterwards. */1315 static uint8_t s_abPlayItSafe[0x1000*2]; /* I don't dare return the zero page at the moment. */1316 *ppv = (uint8_t *)((uintptr_t)&s_abPlayItSafe[0x1000] & ~(uintptr_t)0xfff);1317 }1318 # endif1319 1311 *ppMap = NULL; 1320 1312 return VINF_SUCCESS; -
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r72596 r72600 6802 6802 if (IoExitInfo.n.u1Str) 6803 6803 { 6804 #ifdef VBOX_WITH_2ND_IEM_STEP6805 6804 /* INS/OUTS - I/O String instruction. */ 6806 6805 /** @todo Huh? why can't we use the segment prefix information given by AMD-V … … 6861 6860 } 6862 6861 fUpdateRipAlready = true; 6863 6864 #else6865 /* INS/OUTS - I/O String instruction. */6866 PDISCPUSTATE pDis = &pVCpu->hm.s.DisState;6867 6868 /** @todo Huh? why can't we use the segment prefix information given by AMD-V6869 * in EXITINFO1? Investigate once this thing is up and running. */6870 6871 rcStrict = EMInterpretDisasCurrent(pVM, pVCpu, pDis, NULL);6872 if (rcStrict == VINF_SUCCESS)6873 {6874 if (IoExitInfo.n.u1Type == SVM_IOIO_WRITE)6875 {6876 rcStrict = IOMInterpretOUTSEx(pVM, pVCpu, CPUMCTX2CORE(pCtx), IoExitInfo.n.u16Port, pDis->fPrefix,6877 (DISCPUMODE)pDis->uAddrMode, cbValue);6878 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIOStringWrite);6879 }6880 else6881 {6882 rcStrict = IOMInterpretINSEx(pVM, pVCpu, CPUMCTX2CORE(pCtx), IoExitInfo.n.u16Port, pDis->fPrefix,6883 (DISCPUMODE)pDis->uAddrMode, cbValue);6884 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIOStringRead);6885 }6886 }6887 else6888 rcStrict = VINF_EM_RAW_EMULATE_INSTR;6889 #endif6890 6862 } 6891 6863 else -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r72596 r72600 12732 12732 if (fIOString) 12733 12733 { 12734 #ifdef VBOX_WITH_2ND_IEM_STEP /* This used to gurus with debian 32-bit guest without NP (on ATA reads).12735 See @bugref{5752#c158}. Should work now. */12736 12734 /* 12737 12735 * INS/OUTS - I/O String instruction. … … 12779 12777 HMCPU_CF_SET(pVCpu, HM_CHANGED_GUEST_RIP); 12780 12778 fUpdateRipAlready = true; 12781 #else12782 PDISCPUSTATE pDis = &pVCpu->hm.s.DisState;12783 rcStrict = EMInterpretDisasCurrent(pVM, pVCpu, pDis, NULL /* pcbInstr */);12784 if (RT_SUCCESS(rcStrict))12785 {12786 if (fIOWrite)12787 {12788 rcStrict = IOMInterpretOUTSEx(pVM, pVCpu, CPUMCTX2CORE(pMixedCtx), uIOPort, pDis->fPrefix,12789 (DISCPUMODE)pDis->uAddrMode, cbValue);12790 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIOStringWrite);12791 }12792 else12793 {12794 rcStrict = IOMInterpretINSEx(pVM, pVCpu, CPUMCTX2CORE(pMixedCtx), uIOPort, pDis->fPrefix,12795 (DISCPUMODE)pDis->uAddrMode, cbValue);12796 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIOStringRead);12797 }12798 }12799 else12800 {12801 AssertMsg(rcStrict == VERR_EM_INTERPRETER, ("rcStrict=%Rrc RIP=%#RX64\n", VBOXSTRICTRC_VAL(rcStrict),12802 pMixedCtx->rip));12803 rcStrict = VINF_EM_RAW_EMULATE_INSTR;12804 }12805 #endif12806 12779 } 12807 12780 else
Note:
See TracChangeset
for help on using the changeset viewer.