VirtualBox

Changeset 99304 in vbox for trunk/src


Ignore:
Timestamp:
Apr 6, 2023 1:38:19 AM (22 months ago)
Author:
vboxsync
Message:

VMM/IEM: More work on processing MC blocks, mainly related to reducing number of parameters for MC blocks in threaded function mode. bugref:10369

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

Legend:

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

    r99303 r99304  
    28342834
    28352835                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    2836                 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    2837                 IEM_MC_ASSIGN(u64Src, u64Imm);
     2836                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); /* Not using IEM_OPCODE_GET_NEXT_S32_SX_U64 to reduce the */
     2837                IEM_MC_ASSIGN_U32_SX_U64(u64Src, u32Imm);          /* parameter count for the threaded function for this block. */
    28382838                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    28392839                IEM_MC_FETCH_MEM_U64(u64Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffDst);
     
    30373037
    30383038                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    3039                 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S8_SX_U64(&u64Imm);
    3040                 IEM_MC_ASSIGN(u64Src, u64Imm);
     3039                uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); /* Not using IEM_OPCODE_GET_NEXT_S8_SX_U64 to reduce the */
     3040                IEM_MC_ASSIGN_U8_SX_U64(u64Src, u8Imm);        /* parameter count for the threaded function for this block. */
    30413041                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    30423042                IEM_MC_FETCH_MEM_U64(u64Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffDst);
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py

    r99299 r99304  
    24772477    'IEM_MC_ASSIGN':                                             McBlock.parseMcGeneric,
    24782478    'IEM_MC_ASSIGN_TO_SMALLER':                                  McBlock.parseMcGeneric,
     2479    'IEM_MC_ASSIGN_U8_SX_U64':                                   McBlock.parseMcGeneric,
     2480    'IEM_MC_ASSIGN_U32_SX_U64':                                  McBlock.parseMcGeneric,
    24792481    'IEM_MC_BEGIN':                                              McBlock.parseMcGeneric,
    24802482    'IEM_MC_BSWAP_LOCAL_U16':                                    McBlock.parseMcGeneric,
  • trunk/src/VBox/VMM/include/IEMMc.h

    r98703 r99304  
    275275#define IEM_MC_ASSIGN(a_VarOrArg, a_CVariableOrConst)   (a_VarOrArg) = (a_CVariableOrConst)
    276276#define IEM_MC_ASSIGN_TO_SMALLER                        IEM_MC_ASSIGN
     277#define IEM_MC_ASSIGN_U8_SX_U64(a_u64VarOrArg, a_u8CVariableOrConst) \
     278   (a_u64VarOrArg) = (int8_t)(a_u8CVariableOrConst)
     279#define IEM_MC_ASSIGN_U32_SX_U64(a_u64VarOrArg, a_u32CVariableOrConst) \
     280   (a_u64VarOrArg) = (int32_t)(a_u32CVariableOrConst)
    277281
    278282#define IEM_MC_FETCH_GREG_U8(a_u8Dst, a_iGReg)          (a_u8Dst)  = iemGRegFetchU8(pVCpu, (a_iGReg))
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r98915 r99304  
    656656#define IEM_MC_ASSIGN(a_VarOrArg, a_CVariableOrConst)   do { (a_VarOrArg) = (0); (void)fMcBegin; } while (0)
    657657#define IEM_MC_ASSIGN_TO_SMALLER                        IEM_MC_ASSIGN
     658#define IEM_MC_ASSIGN_U8_SX_U64                         IEM_MC_ASSIGN
     659#define IEM_MC_ASSIGN_U32_SX_U64                        IEM_MC_ASSIGN
    658660
    659661#define IEM_MC_FETCH_GREG_U8(a_u8Dst, a_iGReg)          do { (a_u8Dst)  = 0; CHK_TYPE(uint8_t,  a_u8Dst);  CHK_GREG_IDX(a_iGReg); (void)fMcBegin; } while (0)
Note: See TracChangeset for help on using the changeset viewer.

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