- Timestamp:
- Nov 8, 2023 2:31:04 AM (16 months ago)
- svn:sync-xref-src-repo-rev:
- 160051
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h
r101949 r101954 3042 3042 /* memory operand */ 3043 3043 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 3044 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 3045 IEM_MC_ARG(uint64_t, u64Src, 1); 3046 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3044 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 3045 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); 3046 3047 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); /* Not using IEM_OPCODE_GET_NEXT_S32_SX_U64 to reduce the */ 3048 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /* parameter count for the threaded function for this block. */ 3049 3047 3050 IEM_MC_LOCAL(uint64_t, u64Tmp); 3048 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);3049 3050 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);3051 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); /* Not using IEM_OPCODE_GET_NEXT_S32_SX_U64 to reduce the */3052 IEM_MC_ASSIGN_U32_SX_U64(u64Src, u32Imm); /* parameter count for the threaded function for this block. */3053 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();3054 3051 IEM_MC_FETCH_MEM_U64(u64Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 3055 IEM_MC_REF_LOCAL(pu64Dst, u64Tmp); 3052 3053 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Tmp, 0); 3054 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ (int64_t)(int32_t)u32Imm, 1); 3055 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3056 3056 IEM_MC_REF_EFLAGS(pEFlags); 3057 3057 IEM_MC_CALL_VOID_AIMPL_3(pfnAImplU64, pu64Dst, u64Src, pEFlags); … … 3227 3227 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); 3228 3228 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3229 IEM_MC_ARG(uint64_t *, pu64Dst, 0);3230 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ (int8_t)u8Imm,1);3231 IEM_MC_ARG(uint32_t *, pEFlags, 2);3229 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 3230 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ (int64_t)(int8_t)u8Imm, 1); 3231 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3232 3232 IEM_MC_LOCAL(uint64_t, u64Tmp); 3233 3233 … … 3245 3245 /* memory operand */ 3246 3246 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 3247 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 3248 IEM_MC_ARG(uint64_t, u64Src, 1); 3249 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3247 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 3248 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); 3249 3250 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); /* Not using IEM_OPCODE_GET_NEXT_S8_SX_U64 to reduce the threaded parameter count. */ 3251 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3252 3250 3253 IEM_MC_LOCAL(uint64_t, u64Tmp); 3251 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);3252 3253 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);3254 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); /* Not using IEM_OPCODE_GET_NEXT_S8_SX_U64 to reduce the */3255 IEM_MC_ASSIGN_U8_SX_U64(u64Src, u8Imm); /* parameter count for the threaded function for this block. */3256 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();3257 3254 IEM_MC_FETCH_MEM_U64(u64Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 3258 IEM_MC_REF_LOCAL(pu64Dst, u64Tmp); 3255 3256 IEM_MC_ARG_LOCAL_REF(uint64_t *, pu64Dst, u64Tmp, 0); 3257 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ (int64_t)(int8_t)u8Imm, 1); 3258 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3259 3259 IEM_MC_REF_EFLAGS(pEFlags); 3260 3260 IEM_MC_CALL_VOID_AIMPL_3(pfnAImplU64, pu64Dst, u64Src, pEFlags); … … 5720 5720 IEM_MC_BEGIN(0, 2, 0, 0); 5721 5721 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 5722 IEM_MC_LOCAL(uint16_t, u16Cast);5723 5722 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 5724 5723 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5724 IEM_MC_LOCAL(uint16_t, u16Cast); 5725 5725 IEM_MC_ASSIGN_TO_SMALLER(u16Cast, GCPtrEffSrc); 5726 5726 IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_REG(pVCpu, bRm), u16Cast); … … 5732 5732 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 5733 5733 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 5734 IEM_MC_LOCAL(uint32_t, u32Cast);5735 5734 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 5736 5735 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5736 IEM_MC_LOCAL(uint32_t, u32Cast); 5737 5737 IEM_MC_ASSIGN_TO_SMALLER(u32Cast, GCPtrEffSrc); 5738 5738 IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_REG(pVCpu, bRm), u32Cast); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py
r101953 r101954 2747 2747 'IEM_MC_ARG_LOCAL_REF': (McBlock.parseMcArgLocalRef, False, True, ), 2748 2748 'IEM_MC_ASSIGN_TO_SMALLER': (McBlock.parseMcGeneric, False, False, ), 2749 'IEM_MC_ASSIGN_U8_SX_U64': (McBlock.parseMcGeneric, False, False, ),2750 'IEM_MC_ASSIGN_U32_SX_U64': (McBlock.parseMcGeneric, False, False, ),2751 2749 'IEM_MC_BEGIN': (McBlock.parseMcBegin, False, True, ), 2752 2750 'IEM_MC_BROADCAST_XREG_U16_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), -
trunk/src/VBox/VMM/include/IEMMc.h
r101953 r101954 208 208 209 209 #define IEM_MC_ASSIGN_TO_SMALLER(a_VarOrArg, a_CVariableOrConst) (a_VarOrArg) = (a_CVariableOrConst) 210 #define IEM_MC_ASSIGN_U8_SX_U64(a_u64VarOrArg, a_u8CVariableOrConst) \211 (a_u64VarOrArg) = (int8_t)(a_u8CVariableOrConst)212 #define IEM_MC_ASSIGN_U32_SX_U64(a_u64VarOrArg, a_u32CVariableOrConst) \213 (a_u64VarOrArg) = (int32_t)(a_u32CVariableOrConst)214 210 215 211 #define IEM_MC_FETCH_GREG_U8(a_u8Dst, a_iGReg) (a_u8Dst) = iemGRegFetchU8(pVCpu, (a_iGReg)) -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r101953 r101954 633 633 #define IEM_MC_COMMIT_EFLAGS(a_EFlags) do { CHK_TYPE(uint32_t, a_EFlags); (void)fMcBegin; } while (0) 634 634 #define IEM_MC_ASSIGN_TO_SMALLER(a_VarOrArg, a_CVariableOrConst) do { (a_VarOrArg) = (0); (void)fMcBegin; } while (0) 635 #define IEM_MC_ASSIGN_U8_SX_U64(a_VarOrArg, a_CVariableOrConst) do { (a_VarOrArg) = (0); (void)fMcBegin; } while (0)636 #define IEM_MC_ASSIGN_U32_SX_U64(a_VarOrArg, a_CVariableOrConst) do { (a_VarOrArg) = (0); (void)fMcBegin; } while (0)637 635 638 636 #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.