Changeset 70643 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Jan 19, 2018 12:19:32 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 120373
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r70613 r70643 11274 11274 return iemRaiseUndefinedOpcode(pVCpu); \ 11275 11275 } while (0) 11276 #define IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0(a_u64Addr) \ 11277 do { \ 11278 if (!IEM_IS_CANONICAL(a_u64Addr)) \ 11279 return iemRaiseGeneralProtectionFault0(pVCpu); \ 11280 } while (0) 11276 11281 11277 11282 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r70612 r70643 6999 6999 IEM_MC_ARG(uint64_t, u64Dst, 0); 7000 7000 IEM_MC_FETCH_SREG_BASE_U64(u64Dst, X86_SREG_FS); 7001 IEM_MC_STORE_GREG_U64(( (bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, u64Dst);7001 IEM_MC_STORE_GREG_U64((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, u64Dst); 7002 7002 IEM_MC_ADVANCE_RIP(); 7003 7003 IEM_MC_END(); … … 7009 7009 IEM_MC_ARG(uint32_t, u32Dst, 0); 7010 7010 IEM_MC_FETCH_SREG_BASE_U32(u32Dst, X86_SREG_FS); 7011 IEM_MC_STORE_GREG_U32(( (bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, u32Dst);7011 IEM_MC_STORE_GREG_U32((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, u32Dst); 7012 7012 IEM_MC_ADVANCE_RIP(); 7013 7013 IEM_MC_END(); … … 7027 7027 IEM_MC_ARG(uint64_t, u64Dst, 0); 7028 7028 IEM_MC_FETCH_SREG_BASE_U64(u64Dst, X86_SREG_GS); 7029 IEM_MC_STORE_GREG_U64(( (bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, u64Dst);7029 IEM_MC_STORE_GREG_U64((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, u64Dst); 7030 7030 IEM_MC_ADVANCE_RIP(); 7031 7031 IEM_MC_END(); … … 7037 7037 IEM_MC_ARG(uint32_t, u32Dst, 0); 7038 7038 IEM_MC_FETCH_SREG_BASE_U32(u32Dst, X86_SREG_GS); 7039 IEM_MC_STORE_GREG_U32(( (bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, u32Dst);7039 IEM_MC_STORE_GREG_U32((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, u32Dst); 7040 7040 IEM_MC_ADVANCE_RIP(); 7041 7041 IEM_MC_END(); … … 7054 7054 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 7055 7055 IEM_MC_ARG(uint64_t, u64Dst, 0); 7056 IEM_MC_FETCH_GREG_U64(u64Dst, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 7056 IEM_MC_FETCH_GREG_U64(u64Dst, (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB); 7057 IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0(u64Dst); 7057 7058 IEM_MC_STORE_SREG_BASE_U64(X86_SREG_FS, u64Dst); 7058 7059 IEM_MC_ADVANCE_RIP(); … … 7064 7065 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 7065 7066 IEM_MC_ARG(uint32_t, u32Dst, 0); 7066 IEM_MC_FETCH_GREG_U32(u32Dst, ( (bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);7067 IEM_MC_FETCH_GREG_U32(u32Dst, (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB); 7067 7068 IEM_MC_STORE_SREG_BASE_U64(X86_SREG_FS, u32Dst); 7068 7069 IEM_MC_ADVANCE_RIP(); … … 7082 7083 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 7083 7084 IEM_MC_ARG(uint64_t, u64Dst, 0); 7084 IEM_MC_FETCH_GREG_U64(u64Dst, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg); 7085 IEM_MC_FETCH_GREG_U64(u64Dst, (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB); 7086 IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0(u64Dst); 7085 7087 IEM_MC_STORE_SREG_BASE_U64(X86_SREG_GS, u64Dst); 7086 7088 IEM_MC_ADVANCE_RIP(); … … 7092 7094 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 7093 7095 IEM_MC_ARG(uint32_t, u32Dst, 0); 7094 IEM_MC_FETCH_GREG_U32(u32Dst, ( (bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);7096 IEM_MC_FETCH_GREG_U32(u32Dst, (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB); 7095 7097 IEM_MC_STORE_SREG_BASE_U64(X86_SREG_GS, u32Dst); 7096 7098 IEM_MC_ADVANCE_RIP(); -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r70612 r70643 363 363 do { AssertCompile(RT_IS_POWER_OF_TWO(a_cbAlign)); CHK_TYPE(RTGCPTR, a_EffAddr); } while (0) 364 364 #define IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT() do {} while (0) 365 #define IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0(a_u64Addr) do {} while (0) 365 366 366 367 #define IEM_MC_LOCAL(a_Type, a_Name) \
Note:
See TracChangeset
for help on using the changeset viewer.