- Timestamp:
- Jan 6, 2019 7:29:53 AM (6 years ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
r76646 r76652 7327 7327 iemVmxVmentryInjectEvent(pVCpu, pszInstr); 7328 7328 7329 return VINF_SUCCESS; 7329 /* 7330 * We've successfully entered nested-guest execution at this point. 7331 * Return after setting nested-guest EM execution policy as necessary. 7332 */ 7333 IEM_VMX_R3_EXECPOLICY_IEM_ALL_ENABLE_RET(pVCpu, pszInstr); 7330 7334 } 7331 7335 return iemVmxVmexit(pVCpu, VMX_EXIT_ERR_MSR_LOAD | VMX_EXIT_REASON_ENTRY_FAILED); … … 7344 7348 iemVmxVmFail(pVCpu, VMXINSTRERR_VMENTRY_INVALID_CTLS); 7345 7349 iemRegAddToRipAndClearRF(pVCpu, cbInstr); 7346 IEM_VMX_R3_EXECPOLICY_IEM_ALL_ENABLE_RET(pVCpu, pszInstr);7350 return VINF_SUCCESS; 7347 7351 # endif 7348 7352 } … … 8445 8449 8446 8450 /** 8447 * Implements 'VMREAD' 64-bit register.8448 */ 8449 IEM_CIMPL_DEF_2(iemCImpl_vmread 64_reg, uint64_t *, pu64Dst, uint64_t, u64FieldEnc)8451 * Implements 'VMREAD' register (64-bit). 8452 */ 8453 IEM_CIMPL_DEF_2(iemCImpl_vmread_reg64, uint64_t *, pu64Dst, uint64_t, u64FieldEnc) 8450 8454 { 8451 8455 return iemVmxVmreadReg64(pVCpu, cbInstr, pu64Dst, u64FieldEnc, NULL /* pExitInfo */); … … 8454 8458 8455 8459 /** 8456 * Implements 'VMREAD' 32-bit register.8457 */ 8458 IEM_CIMPL_DEF_2(iemCImpl_vmread 32_reg, uint32_t *, pu32Dst, uint32_t, u32FieldEnc)8460 * Implements 'VMREAD' register (32-bit). 8461 */ 8462 IEM_CIMPL_DEF_2(iemCImpl_vmread_reg32, uint32_t *, pu32Dst, uint32_t, u32FieldEnc) 8459 8463 { 8460 8464 return iemVmxVmreadReg32(pVCpu, cbInstr, pu32Dst, u32FieldEnc, NULL /* pExitInfo */); … … 8463 8467 8464 8468 /** 8465 * Implements 'VMREAD' memory .8466 */ 8467 IEM_CIMPL_DEF_4(iemCImpl_vmread_mem , uint8_t, iEffSeg, IEMMODE, enmEffAddrMode, RTGCPTR, GCPtrDst, uint32_t, u64FieldEnc)8469 * Implements 'VMREAD' memory, 64-bit register. 8470 */ 8471 IEM_CIMPL_DEF_4(iemCImpl_vmread_mem_reg64, uint8_t, iEffSeg, IEMMODE, enmEffAddrMode, RTGCPTR, GCPtrDst, uint32_t, u64FieldEnc) 8468 8472 { 8469 8473 return iemVmxVmreadMem(pVCpu, cbInstr, iEffSeg, enmEffAddrMode, GCPtrDst, u64FieldEnc, NULL /* pExitInfo */); 8474 } 8475 8476 8477 /** 8478 * Implements 'VMREAD' memory, 32-bit register. 8479 */ 8480 IEM_CIMPL_DEF_4(iemCImpl_vmread_mem_reg32, uint8_t, iEffSeg, IEMMODE, enmEffAddrMode, RTGCPTR, GCPtrDst, uint32_t, u32FieldEnc) 8481 { 8482 return iemVmxVmreadMem(pVCpu, cbInstr, iEffSeg, enmEffAddrMode, GCPtrDst, u32FieldEnc, NULL /* pExitInfo */); 8470 8483 } 8471 8484 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r76645 r76652 4324 4324 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 4325 4325 IEM_MC_ARG(uint64_t, u64Enc, 1); 4326 IEM_MC_FETCH_GREG_U64(u64Enc, ( bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB);4327 IEM_MC_REF_GREG_U64(pu64Dst, ( (bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);4328 IEM_MC_CALL_CIMPL_2(iemCImpl_vmread 64_reg, pu64Dst, u64Enc);4326 IEM_MC_FETCH_GREG_U64(u64Enc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 4327 IEM_MC_REF_GREG_U64(pu64Dst, (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB); 4328 IEM_MC_CALL_CIMPL_2(iemCImpl_vmread_reg64, pu64Dst, u64Enc); 4329 4329 IEM_MC_END(); 4330 4330 } … … 4334 4334 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 4335 4335 IEM_MC_ARG(uint32_t, u32Enc, 1); 4336 IEM_MC_FETCH_GREG_U32(u32Enc, ( bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB);4337 IEM_MC_REF_GREG_U32(pu32Dst, ( (bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);4338 IEM_MC_CALL_CIMPL_2(iemCImpl_vmread 32_reg, pu32Dst, u32Enc);4336 IEM_MC_FETCH_GREG_U32(u32Enc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 4337 IEM_MC_REF_GREG_U32(pu32Dst, (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB); 4338 IEM_MC_CALL_CIMPL_2(iemCImpl_vmread_reg32, pu32Dst, u32Enc); 4339 4339 IEM_MC_END(); 4340 4340 } … … 4356 4356 IEM_MC_FETCH_GREG_U64(u64Enc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 4357 4357 IEM_MC_ASSIGN(iEffSeg, pVCpu->iem.s.iEffSeg); 4358 IEM_MC_CALL_CIMPL_4(iemCImpl_vmread_mem , iEffSeg, enmEffAddrMode, GCPtrVal, u64Enc);4358 IEM_MC_CALL_CIMPL_4(iemCImpl_vmread_mem_reg64, iEffSeg, enmEffAddrMode, GCPtrVal, u64Enc); 4359 4359 IEM_MC_END(); 4360 4360 } … … 4370 4370 IEM_MC_FETCH_GREG_U32(u32Enc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 4371 4371 IEM_MC_ASSIGN(iEffSeg, pVCpu->iem.s.iEffSeg); 4372 IEM_MC_CALL_CIMPL_4(iemCImpl_vmread_mem , iEffSeg, enmEffAddrMode, GCPtrVal, u32Enc);4372 IEM_MC_CALL_CIMPL_4(iemCImpl_vmread_mem_reg32, iEffSeg, enmEffAddrMode, GCPtrVal, u32Enc); 4373 4373 IEM_MC_END(); 4374 4374 }
Note:
See TracChangeset
for help on using the changeset viewer.