Changeset 104784 in vbox for trunk/src/VBox
- Timestamp:
- May 26, 2024 5:45:30 PM (6 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap2.cpp.h
r104722 r104784 2275 2275 { 2276 2276 IEMOP_MNEMONIC3(VEX_RVM, ANDN, andn, Gy, By, Ey, DISOPTYPE_HARMLESS, IEMOPHINT_VEX_L_ZERO); 2277 IEMOP_HLP_IGNORE_VEX_W_PREFIX_IF_NOT_IN_64BIT(); 2277 2278 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF | X86_EFL_PF); 2278 2279 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); … … 2377 2378 /** Body for the vex group 17 instructions. */ 2378 2379 #define IEMOP_BODY_By_Ey(a_Instr) \ 2380 IEMOP_HLP_IGNORE_VEX_W_PREFIX_IF_NOT_IN_64BIT(); \ 2379 2381 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF | X86_EFL_PF); \ 2380 2382 if (IEM_IS_MODRM_REG_MODE(bRm)) \ … … 2545 2547 /** Body for BZHI, BEXTR, ++; assumes VEX.L must be 0. */ 2546 2548 #define IEMOP_BODY_Gy_Ey_By(a_Instr, a_fFeatureMember, a_fUndefFlags) \ 2549 IEMOP_HLP_IGNORE_VEX_W_PREFIX_IF_NOT_IN_64BIT(); \ 2547 2550 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(a_fUndefFlags); \ 2548 2551 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); \ … … 2641 2644 /** Body for SARX, SHLX, SHRX; assumes VEX.L must be 0. */ 2642 2645 #define IEMOP_BODY_Gy_Ey_By_NoEflags(a_Instr, a_fFeatureMember) \ 2646 IEMOP_HLP_IGNORE_VEX_W_PREFIX_IF_NOT_IN_64BIT(); \ 2643 2647 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); \ 2644 2648 if (IEM_IS_MODRM_REG_MODE(bRm)) \ … … 2740 2744 /** Body for PDEP and PEXT (similar to ANDN, except no EFLAGS). */ 2741 2745 #define IEMOP_BODY_Gy_By_Ey_NoEflags(a_Instr, a_fFeatureMember) \ 2746 IEMOP_HLP_IGNORE_VEX_W_PREFIX_IF_NOT_IN_64BIT(); \ 2742 2747 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); \ 2743 2748 if (IEM_IS_MODRM_REG_MODE(bRm)) \ … … 2855 2860 { 2856 2861 IEMOP_MNEMONIC4(VEX_RVM, MULX, mulx, Gy, By, Ey, rDX, DISOPTYPE_HARMLESS, IEMOPHINT_VEX_L_ZERO); 2862 IEMOP_HLP_IGNORE_VEX_W_PREFIX_IF_NOT_IN_64BIT(); 2857 2863 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 2858 2864 if (IEM_IS_MODRM_REG_MODE(bRm)) -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap3.cpp.h
r104369 r104784 1786 1786 { 1787 1787 IEMOP_MNEMONIC3(VEX_RMI, RORX, rorx, Gy, Ey, Ib, DISOPTYPE_HARMLESS, IEMOPHINT_VEX_L_ZERO | IEMOPHINT_VEX_V_ZERO); 1788 IEMOP_HLP_IGNORE_VEX_W_PREFIX_IF_NOT_IN_64BIT(); 1788 1789 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1789 1790 if (IEM_IS_MODRM_REG_MODE(bRm)) -
trunk/src/VBox/VMM/include/IEMOpHlp.h
r104272 r104784 411 411 } while (0) 412 412 413 /** The instruction ignores any REX.W/VEX.W prefix if not in 64-bit mode. */ 414 #define IEMOP_HLP_IGNORE_VEX_W_PREFIX_IF_NOT_IN_64BIT() \ 415 do \ 416 { \ 417 if (!IEM_IS_64BIT_CODE(pVCpu)) \ 418 pVCpu->iem.s.fPrefixes &= ~IEM_OP_PRF_SIZE_REX_W; \ 419 } while (0) 420 413 421 /** 414 422 * Done decoding. -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r104439 r104784 164 164 #define IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX() do { } while (0) 165 165 #define IEMOP_HLP_CLEAR_REX_NOT_BEFORE_OPCODE(a_szPrf) do { } while (0) 166 #define IEMOP_HLP_IGNORE_VEX_W_PREFIX_IF_NOT_IN_64BIT() do { } while (0) 166 167 #define IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX() do { } while (0) 167 168 #define IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(a_fFeature) do { } while (0)
Note:
See TracChangeset
for help on using the changeset viewer.