VirtualBox

Changeset 101707 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Nov 2, 2023 12:54:18 AM (17 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
159801
Message:

VMM/IEM: Use IEM_MC_STORE_GREG_U*_CONST when storing an immediate value. Saves the need to go thru a variable. bugref:10371

Location:
trunk/src/VBox/VMM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h

    r101516 r101707  
    74147414{
    74157415    uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    7416     IEM_MC_BEGIN(0, 1, 0, 0);
    7417     IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    7418     IEM_MC_LOCAL_CONST(uint8_t, u8Value,/*=*/ u8Imm);
    7419     IEM_MC_STORE_GREG_U8(iFixedReg, u8Value);
     7416    IEM_MC_BEGIN(0, 0, 0, 0);
     7417    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     7418    IEM_MC_STORE_GREG_U8_CONST(iFixedReg, u8Imm);
    74207419    IEM_MC_ADVANCE_RIP_AND_FINISH();
    74217420    IEM_MC_END();
     
    75117510    {
    75127511        case IEMMODE_16BIT:
    7513             IEM_MC_BEGIN(0, 1, 0, 0);
     7512            IEM_MC_BEGIN(0, 0, 0, 0);
    75147513            uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    75157514            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    7516             IEM_MC_LOCAL_CONST(uint16_t, u16Value,/*=*/ u16Imm);
    7517             IEM_MC_STORE_GREG_U16(iFixedReg, u16Value);
     7515            IEM_MC_STORE_GREG_U16_CONST(iFixedReg, u16Imm);
    75187516            IEM_MC_ADVANCE_RIP_AND_FINISH();
    75197517            IEM_MC_END();
     
    75217519
    75227520        case IEMMODE_32BIT:
    7523             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
     7521            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    75247522            uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    75257523            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    7526             IEM_MC_LOCAL_CONST(uint32_t, u32Value,/*=*/ u32Imm);
    7527             IEM_MC_STORE_GREG_U32(iFixedReg, u32Value);
     7524            IEM_MC_STORE_GREG_U32_CONST(iFixedReg, u32Imm);
    75287525            IEM_MC_ADVANCE_RIP_AND_FINISH();
    75297526            IEM_MC_END();
     
    75347531            uint64_t u64Imm; IEM_OPCODE_GET_NEXT_U64(&u64Imm); /* 64-bit immediate! */
    75357532            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    7536             IEM_MC_LOCAL_CONST(uint64_t, u64Value,/*=*/ u64Imm);
    7537             IEM_MC_STORE_GREG_U64(iFixedReg, u64Value);
     7533            IEM_MC_STORE_GREG_U64_CONST(iFixedReg, u64Imm);
    75387534            IEM_MC_ADVANCE_RIP_AND_FINISH();
    75397535            IEM_MC_END();
     
    80108006        IEM_MC_BEGIN(0, 0, 0, 0);
    80118007        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    8012         IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, bRm), u8Imm);
     8008        IEM_MC_STORE_GREG_U8_CONST(IEM_GET_MODRM_RM(pVCpu, bRm), u8Imm);
    80138009        IEM_MC_ADVANCE_RIP_AND_FINISH();
    80148010        IEM_MC_END();
     
    80488044                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    80498045                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    8050                 IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_RM(pVCpu, bRm), u16Imm);
     8046                IEM_MC_STORE_GREG_U16_CONST(IEM_GET_MODRM_RM(pVCpu, bRm), u16Imm);
    80518047                IEM_MC_ADVANCE_RIP_AND_FINISH();
    80528048                IEM_MC_END();
     
    80578053                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    80588054                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    8059                 IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_RM(pVCpu, bRm), u32Imm);
     8055                IEM_MC_STORE_GREG_U32_CONST(IEM_GET_MODRM_RM(pVCpu, bRm), u32Imm);
    80608056                IEM_MC_ADVANCE_RIP_AND_FINISH();
    80618057                IEM_MC_END();
     
    80668062                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    80678063                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    8068                 IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm), u64Imm);
     8064                IEM_MC_STORE_GREG_U64_CONST(IEM_GET_MODRM_RM(pVCpu, bRm), u64Imm);
    80698065                IEM_MC_ADVANCE_RIP_AND_FINISH();
    80708066                IEM_MC_END();
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r101587 r101707  
    664664#define IEM_MC_STORE_GREG_U64(a_iGReg, a_u64Value)      do { CHK_GREG_IDX(a_iGReg); (void)fMcBegin; } while (0)
    665665#define IEM_MC_STORE_GREG_I64(a_iGReg, a_i64Value)      do { CHK_GREG_IDX(a_iGReg); (void)fMcBegin; } while (0)
    666 #define IEM_MC_STORE_GREG_U8_CONST(a_iGReg, a_u8C)      do { CHK_GREG_IDX(a_iGReg); AssertCompile((uint8_t )(a_u8C)  == (a_u8C) ); (void)fMcBegin; } while (0)
    667 #define IEM_MC_STORE_GREG_U16_CONST(a_iGReg, a_u16C)    do { CHK_GREG_IDX(a_iGReg); AssertCompile((uint16_t)(a_u16C) == (a_u16C)); (void)fMcBegin; } while (0)
    668 #define IEM_MC_STORE_GREG_U32_CONST(a_iGReg, a_u32C)    do { CHK_GREG_IDX(a_iGReg); AssertCompile((uint32_t)(a_u32C) == (a_u32C)); (void)fMcBegin; } while (0)
    669 #define IEM_MC_STORE_GREG_U64_CONST(a_iGReg, a_u64C)    do { CHK_GREG_IDX(a_iGReg); AssertCompile((uint64_t)(a_u64C) == (a_u64C)); (void)fMcBegin; } while (0)
     666#define IEM_MC_STORE_GREG_U8_CONST(a_iGReg, a_u8C)      do { CHK_GREG_IDX(a_iGReg); uint8_t  const uTmp = (a_u8C);  RT_NOREF_PV(uTmp); (void)fMcBegin; } while (0)
     667#define IEM_MC_STORE_GREG_U16_CONST(a_iGReg, a_u16C)    do { CHK_GREG_IDX(a_iGReg); uint16_t const uTmp = (a_u16C); RT_NOREF_PV(uTmp); (void)fMcBegin; } while (0)
     668#define IEM_MC_STORE_GREG_U32_CONST(a_iGReg, a_u32C)    do { CHK_GREG_IDX(a_iGReg); uint32_t const uTmp = (a_u32C); RT_NOREF_PV(uTmp); (void)fMcBegin; } while (0)
     669#define IEM_MC_STORE_GREG_U64_CONST(a_iGReg, a_u64C)    do { CHK_GREG_IDX(a_iGReg); uint64_t const uTmp = (a_u64C); RT_NOREF_PV(uTmp); (void)fMcBegin; } while (0)
    670670#define IEM_MC_STORE_FPUREG_R80_SRC_REF(a_iSt, a_pr80Src) do { CHK_PTYPE(PCRTFLOAT80U, a_pr80Src); Assert((a_iSt) < 8); (void)fMcBegin; } while (0)
    671671#define IEM_MC_CLEAR_HIGH_GREG_U64(a_iGReg)             do { CHK_GREG_IDX(a_iGReg); (void)fMcBegin;  } while (0)
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette