- Timestamp:
- May 25, 2020 2:53:12 PM (5 years ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r83890 r84505 956 956 IEM_STATIC VBOXSTRICTRC iemMemCommitAndUnmap(PVMCPUCC pVCpu, void *pvMem, uint32_t fAccess); 957 957 IEM_STATIC VBOXSTRICTRC iemMemFetchDataU32(PVMCPUCC pVCpu, uint32_t *pu32Dst, uint8_t iSegReg, RTGCPTR GCPtrMem); 958 IEM_STATIC VBOXSTRICTRC iemMemFetchDataU32_ZX_U64(PVMCPUCC pVCpu, uint64_t *pu64Dst, uint8_t iSegReg, RTGCPTR GCPtrMem); 958 959 IEM_STATIC VBOXSTRICTRC iemMemFetchDataU64(PVMCPUCC pVCpu, uint64_t *pu64Dst, uint8_t iSegReg, RTGCPTR GCPtrMem); 959 960 IEM_STATIC VBOXSTRICTRC iemMemFetchSysU8(PVMCPUCC pVCpu, uint32_t *pu32Dst, uint8_t iSegReg, RTGCPTR GCPtrMem); … … 9160 9161 9161 9162 9163 /** 9164 * Fetches a data dword and zero extends it to a qword. 9165 * 9166 * @returns Strict VBox status code. 9167 * @param pVCpu The cross context virtual CPU structure of the calling thread. 9168 * @param pu64Dst Where to return the qword. 9169 * @param iSegReg The index of the segment register to use for 9170 * this access. The base and limits are checked. 9171 * @param GCPtrMem The address of the guest memory. 9172 */ 9173 IEM_STATIC VBOXSTRICTRC iemMemFetchDataU32_ZX_U64(PVMCPUCC pVCpu, uint64_t *pu64Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) 9174 { 9175 /* The lazy approach for now... */ 9176 uint32_t const *pu32Src; 9177 VBOXSTRICTRC rc = iemMemMap(pVCpu, (void **)&pu32Src, sizeof(*pu32Src), iSegReg, GCPtrMem, IEM_ACCESS_DATA_R); 9178 if (rc == VINF_SUCCESS) 9179 { 9180 *pu64Dst = *pu32Src; 9181 rc = iemMemCommitAndUnmap(pVCpu, (void *)pu32Src, IEM_ACCESS_DATA_R); 9182 } 9183 return rc; 9184 } 9185 9186 9162 9187 #ifdef IEM_WITH_SETJMP 9163 9188 -
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
r82968 r84505 7908 7908 rcStrict = iemMemFetchDataU64(pVCpu, &u64Val, iEffSeg, GCPtrVal); 7909 7909 else 7910 { 7911 uint32_t u32Val; 7912 rcStrict = iemMemFetchDataU32(pVCpu, &u32Val, iEffSeg, GCPtrVal); 7913 u64Val = u32Val; 7914 } 7910 rcStrict = iemMemFetchDataU32_ZX_U64(pVCpu, &u64Val, iEffSeg, GCPtrVal); 7915 7911 if (RT_UNLIKELY(rcStrict != VINF_SUCCESS)) 7916 7912 {
Note:
See TracChangeset
for help on using the changeset viewer.