Changeset 55292 in vbox for trunk/src/VBox
- Timestamp:
- Apr 15, 2015 3:31:51 PM (10 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
r55289 r55292 2164 2164 { 2165 2165 pVCpu->cpum.s.Guest.aXcr[0] = uNewValue; 2166 pVCpu->cpum.s.Guest.fXStateMask = uNewValue;2166 pVCpu->cpum.s.Guest.fXStateMask |= uNewValue; 2167 2167 return VINF_SUCCESS; 2168 2168 } -
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r55289 r55292 11016 11016 11017 11017 11018 /** 11019 * Macro used by the IEMExec* method to check the given instruction length. 11020 * 11021 * Will return on failure! 11022 * 11023 * @param a_cbInstr The given instruction length. 11024 * @param a_cbMin The minimum length. 11025 */ 11026 #define IEMEXEC_ASSERT_INSTR_LEN_RETURN(a_cbInstr, a_cbMin) \ 11027 AssertMsgReturn((unsigned)(a_cbInstr) - (unsigned)(a_cbMin) <= (unsigned)15 - (unsigned)(a_cbMin), \ 11028 ("cbInstr=%u cbMin=%u\n", (a_cbInstr), (a_cbMin)), VERR_IEM_INVALID_INSTR_LENGTH) 11029 11018 11030 11019 11031 /** … … 11037 11049 { 11038 11050 AssertMsgReturn(iEffSeg < X86_SREG_COUNT, ("%#x\n", iEffSeg), VERR_IEM_INVALID_EFF_SEG); 11039 AssertReturn(cbInstr - 1U <= 14U, VERR_IEM_INVALID_INSTR_LENGTH);11051 IEMEXEC_ASSERT_INSTR_LEN_RETURN(cbInstr, 1); 11040 11052 11041 11053 /* … … 11154 11166 bool fRepPrefix, uint8_t cbInstr) 11155 11167 { 11156 AssertReturn(cbInstr - 1U <= 14U, VERR_IEM_INVALID_INSTR_LENGTH);11168 IEMEXEC_ASSERT_INSTR_LEN_RETURN(cbInstr, 1); 11157 11169 11158 11170 /* … … 11267 11279 VMM_INT_DECL(VBOXSTRICTRC) IEMExecDecodedMovCRxWrite(PVMCPU pVCpu, uint8_t cbInstr, uint8_t iCrReg, uint8_t iGReg) 11268 11280 { 11269 AssertReturn(cbInstr - 2U <= 15U - 2U, VERR_IEM_INVALID_INSTR_LENGTH);11281 IEMEXEC_ASSERT_INSTR_LEN_RETURN(cbInstr, 2); 11270 11282 Assert(iCrReg < 16); 11271 11283 Assert(iGReg < 16); … … 11291 11303 VMM_INT_DECL(VBOXSTRICTRC) IEMExecDecodedMovCRxRead(PVMCPU pVCpu, uint8_t cbInstr, uint8_t iGReg, uint8_t iCrReg) 11292 11304 { 11293 AssertReturn(cbInstr - 2U <= 15U - 2U, VERR_IEM_INVALID_INSTR_LENGTH);11305 IEMEXEC_ASSERT_INSTR_LEN_RETURN(cbInstr, 2); 11294 11306 Assert(iCrReg < 16); 11295 11307 Assert(iGReg < 16); … … 11313 11325 VMM_INT_DECL(VBOXSTRICTRC) IEMExecDecodedClts(PVMCPU pVCpu, uint8_t cbInstr) 11314 11326 { 11315 AssertReturn(cbInstr - 2U <= 15U - 2U, VERR_IEM_INVALID_INSTR_LENGTH);11327 IEMEXEC_ASSERT_INSTR_LEN_RETURN(cbInstr, 2); 11316 11328 11317 11329 PIEMCPU pIemCpu = &pVCpu->iem.s; … … 11334 11346 VMM_INT_DECL(VBOXSTRICTRC) IEMExecDecodedLmsw(PVMCPU pVCpu, uint8_t cbInstr, uint16_t uValue) 11335 11347 { 11336 AssertReturn(cbInstr - 3U <= 15U - 3U, VERR_IEM_INVALID_INSTR_LENGTH);11348 IEMEXEC_ASSERT_INSTR_LEN_RETURN(cbInstr, 3); 11337 11349 11338 11350 PIEMCPU pIemCpu = &pVCpu->iem.s; … … 11357 11369 VMM_INT_DECL(VBOXSTRICTRC) IEMExecDecodedXsetbv(PVMCPU pVCpu, uint8_t cbInstr) 11358 11370 { 11359 AssertReturn(cbInstr - 3U <= 15U - 3U, VERR_IEM_INVALID_INSTR_LENGTH);11371 IEMEXEC_ASSERT_INSTR_LEN_RETURN(cbInstr, 3); 11360 11372 11361 11373 PIEMCPU pIemCpu = &pVCpu->iem.s; -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r55290 r55292 10642 10642 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(); 10643 10643 10644 int rc = hmR0VmxReadE ntryInstrLenVmcs(pVmxTransient);10644 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 10645 10645 rc |= hmR0VmxSaveGuestRegsForIemExec(pVCpu, pMixedCtx, false /*fMemory*/, false /*fNeedRsp*/); 10646 10646 rc |= hmR0VmxSaveGuestCR4(pVCpu, pMixedCtx);
Note:
See TracChangeset
for help on using the changeset viewer.