Changeset 101802 in vbox
- Timestamp:
- Nov 5, 2023 3:17:44 AM (15 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r101732 r101802 2693 2693 * XMM128, XMM64. 2694 2694 */ 2695 IEM_MC_BEGIN( 1, 0, 0, 0);2695 IEM_MC_BEGIN(0, 1, 0, 0); 2696 2696 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3); 2697 IEM_MC_ ARG(uint64_t, uSrc, 0);2697 IEM_MC_LOCAL(uint64_t, uSrc); 2698 2698 2699 2699 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 2712 2712 * XMM128, [mem64]. 2713 2713 */ 2714 IEM_MC_BEGIN( 1, 1, 0, 0);2714 IEM_MC_BEGIN(0, 2, 0, 0); 2715 2715 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2716 IEM_MC_ ARG(uint64_t, uSrc, 0);2716 IEM_MC_LOCAL(uint64_t, uSrc); 2717 2717 2718 2718 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); … … 10022 10022 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10023 10023 { 10024 IEM_MC_BEGIN( 1, 0, IEM_MC_F_64BIT, 0);10024 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 10025 10025 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10026 10026 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 10027 IEM_MC_ ARG(uint64_t, u64Dst, 0);10027 IEM_MC_LOCAL(uint64_t, u64Dst); 10028 10028 IEM_MC_FETCH_SREG_BASE_U64(u64Dst, X86_SREG_FS); 10029 10029 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm), u64Dst); … … 10033 10033 else 10034 10034 { 10035 IEM_MC_BEGIN( 1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);10035 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 10036 10036 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10037 10037 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 10038 IEM_MC_ ARG(uint32_t, u32Dst, 0);10038 IEM_MC_LOCAL(uint32_t, u32Dst); 10039 10039 IEM_MC_FETCH_SREG_BASE_U32(u32Dst, X86_SREG_FS); 10040 10040 IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_RM(pVCpu, bRm), u32Dst); … … 10051 10051 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10052 10052 { 10053 IEM_MC_BEGIN( 1, 0, IEM_MC_F_64BIT, 0);10053 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 10054 10054 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10055 10055 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 10056 IEM_MC_ ARG(uint64_t, u64Dst, 0);10056 IEM_MC_LOCAL(uint64_t, u64Dst); 10057 10057 IEM_MC_FETCH_SREG_BASE_U64(u64Dst, X86_SREG_GS); 10058 10058 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm), u64Dst); … … 10062 10062 else 10063 10063 { 10064 IEM_MC_BEGIN( 1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);10064 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 10065 10065 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10066 10066 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 10067 IEM_MC_ ARG(uint32_t, u32Dst, 0);10067 IEM_MC_LOCAL(uint32_t, u32Dst); 10068 10068 IEM_MC_FETCH_SREG_BASE_U32(u32Dst, X86_SREG_GS); 10069 10069 IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_RM(pVCpu, bRm), u32Dst); … … 10080 10080 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10081 10081 { 10082 IEM_MC_BEGIN( 1, 0, IEM_MC_F_64BIT, 0);10082 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 10083 10083 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10084 10084 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 10085 IEM_MC_ ARG(uint64_t, u64Dst, 0);10085 IEM_MC_LOCAL(uint64_t, u64Dst); 10086 10086 IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); 10087 10087 IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0(u64Dst); … … 10092 10092 else 10093 10093 { 10094 IEM_MC_BEGIN( 1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);10094 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 10095 10095 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10096 10096 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 10097 IEM_MC_ ARG(uint32_t, u32Dst, 0);10097 IEM_MC_LOCAL(uint32_t, u32Dst); 10098 10098 IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); 10099 10099 IEM_MC_STORE_SREG_BASE_U64(X86_SREG_FS, u32Dst); … … 10110 10110 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10111 10111 { 10112 IEM_MC_BEGIN( 1, 0, IEM_MC_F_64BIT, 0);10112 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 10113 10113 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10114 10114 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 10115 IEM_MC_ ARG(uint64_t, u64Dst, 0);10115 IEM_MC_LOCAL(uint64_t, u64Dst); 10116 10116 IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); 10117 10117 IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0(u64Dst); … … 10122 10122 else 10123 10123 { 10124 IEM_MC_BEGIN( 1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);10124 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 10125 10125 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10126 10126 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); 10127 IEM_MC_ ARG(uint32_t, u32Dst, 0);10127 IEM_MC_LOCAL(uint32_t, u32Dst); 10128 10128 IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); 10129 10129 IEM_MC_STORE_SREG_BASE_U64(X86_SREG_GS, u32Dst); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r101387 r101802 1217 1217 if (pVCpu->iem.s.uVexLength == 0) 1218 1218 { 1219 IEM_MC_BEGIN( 1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);1219 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1220 1220 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1221 IEM_MC_ ARG(uint64_t, uSrc, 0);1221 IEM_MC_LOCAL(uint64_t, uSrc); 1222 1222 1223 1223 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); … … 1255 1255 if (pVCpu->iem.s.uVexLength == 0) 1256 1256 { 1257 IEM_MC_BEGIN( 1, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);1257 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1258 1258 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1259 IEM_MC_ ARG(uint64_t, uSrc, 0);1259 IEM_MC_LOCAL(uint64_t, uSrc); 1260 1260 1261 1261 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r101707 r101802 100 100 101 101 #define CHK_CALL_ARG(a_Name, a_iArg) \ 102 do { RT_CONCAT3(iArgCheck_,a_iArg,a_Name) = 1; } while (0)102 do { RT_CONCAT3(iArgCheck_,a_iArg,a_Name) = 1; RT_NOREF(RT_CONCAT3(iArgCheck_,a_iArg,a_Name)); } while (0) 103 103 104 104 … … 600 600 #define IEM_MC_ARG(a_Type, a_Name, a_iArg) (void)fMcBegin; \ 601 601 RT_CONCAT(iArgCheck_,a_iArg) = 1; NOREF(RT_CONCAT(iArgCheck_,a_iArg)); \ 602 int RT_CONCAT3(iArgCheck_,a_iArg,a_Name); NOREF(RT_CONCAT3(iArgCheck_,a_iArg,a_Name));\602 int RT_CONCAT3(iArgCheck_,a_iArg,a_Name); \ 603 603 AssertCompile((a_iArg) < cArgs); \ 604 604 a_Type a_Name; \ … … 606 606 #define IEM_MC_ARG_CONST(a_Type, a_Name, a_Value, a_iArg) (void)fMcBegin; \ 607 607 RT_CONCAT(iArgCheck_, a_iArg) = 1; NOREF(RT_CONCAT(iArgCheck_,a_iArg)); \ 608 int RT_CONCAT3(iArgCheck_,a_iArg,a_Name); NOREF(RT_CONCAT3(iArgCheck_,a_iArg,a_Name));\608 int RT_CONCAT3(iArgCheck_,a_iArg,a_Name); \ 609 609 AssertCompile((a_iArg) < cArgs); \ 610 610 a_Type const a_Name = (a_Value); \ … … 615 615 #define IEM_MC_ARG_LOCAL_REF(a_Type, a_Name, a_Local, a_iArg) (void)fMcBegin; \ 616 616 RT_CONCAT(iArgCheck_, a_iArg) = 1; NOREF(RT_CONCAT(iArgCheck_,a_iArg)); \ 617 int RT_CONCAT3(iArgCheck_,a_iArg,a_Name); NOREF(RT_CONCAT3(iArgCheck_,a_iArg,a_Name));\617 int RT_CONCAT3(iArgCheck_,a_iArg,a_Name); \ 618 618 AssertCompile((a_iArg) < cArgs); \ 619 619 a_Type const a_Name = &(a_Local); \ … … 621 621 #define IEM_MC_ARG_LOCAL_EFLAGS(a_pName, a_Name, a_iArg) (void)fMcBegin; \ 622 622 RT_CONCAT(iArgCheck_, a_iArg) = 1; NOREF(RT_CONCAT(iArgCheck_,a_iArg)); \ 623 int RT_CONCAT3(iArgCheck_,a_iArg,a_pName); NOREF(RT_CONCAT3(iArgCheck_,a_iArg,a_pName));\623 int RT_CONCAT3(iArgCheck_,a_iArg,a_pName); \ 624 624 AssertCompile((a_iArg) < cArgs); \ 625 625 uint32_t a_Name; \ … … 999 999 #define IEM_MC_CALL_SSE_AIMPL_3(a_pfnAImpl, a0, a1, a2) \ 1000 1000 do { (void)fSseHost; (void)fSseWrite; CHK_CALL_ARG(a0, 0); CHK_CALL_ARG(a1, 1); CHK_CALL_ARG(a2, 2); (void)fMcBegin; } while (0) 1001 #define IEM_MC_IMPLICIT_AVX_AIMPL_ARGS() do { IEM_MC_ARG_CONST(PX86XSAVEAREA, pXState, &pVCpu->cpum.GstCtx.XState, 0);(void)fMcBegin; } while (0)1001 #define IEM_MC_IMPLICIT_AVX_AIMPL_ARGS() IEM_MC_ARG_CONST(PX86XSAVEAREA, pXState, &pVCpu->cpum.GstCtx.XState, 0); do { (void)fMcBegin; } while (0) 1002 1002 #define IEM_MC_CALL_AVX_AIMPL_2(a_pfnAImpl, a1, a2) \ 1003 do { (void)fAvxHost; (void)fAvxWrite; CHK_CALL_ARG( a1, 1); CHK_CALL_ARG(a2, 2); (void)fMcBegin; } while (0)1003 do { (void)fAvxHost; (void)fAvxWrite; CHK_CALL_ARG(pXState, 0); CHK_CALL_ARG(a1, 1); CHK_CALL_ARG(a2, 2); (void)fMcBegin; } while (0) 1004 1004 #define IEM_MC_CALL_AVX_AIMPL_3(a_pfnAImpl, a1, a2, a3) \ 1005 do { (void)fAvxHost; (void)fAvxWrite; CHK_CALL_ARG( a1, 1); CHK_CALL_ARG(a2, 2); CHK_CALL_ARG(a3, 3); (void)fMcBegin; } while (0)1005 do { (void)fAvxHost; (void)fAvxWrite; CHK_CALL_ARG(pXState, 0); CHK_CALL_ARG(a1, 1); CHK_CALL_ARG(a2, 2); CHK_CALL_ARG(a3, 3); (void)fMcBegin; } while (0) 1006 1006 #define IEM_MC_CALL_AVX_AIMPL_4(a_pfnAImpl, a1, a2, a3, a4) \ 1007 do { (void)fAvxHost; (void)fAvxWrite; CHK_CALL_ARG( a1, 1); CHK_CALL_ARG(a2, 2); CHK_CALL_ARG(a3, 3); CHK_CALL_ARG(a4, 4); (void)fMcBegin; } while (0)1007 do { (void)fAvxHost; (void)fAvxWrite; CHK_CALL_ARG(pXState, 0); CHK_CALL_ARG(a1, 1); CHK_CALL_ARG(a2, 2); CHK_CALL_ARG(a3, 3); CHK_CALL_ARG(a4, 4); (void)fMcBegin; } while (0) 1008 1008 1009 1009 #define IEM_MC_IF_EFL_BIT_SET(a_fBit) (void)fMcBegin; if (g_fRandom) {
Note:
See TracChangeset
for help on using the changeset viewer.