VirtualBox

Changeset 46953 in vbox for trunk


Ignore:
Timestamp:
Jul 3, 2013 8:46:10 PM (12 years ago)
Author:
vboxsync
Message:

rip addressing fix for instructions with immediates.

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

Legend:

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

    r46951 r46953  
    67486748
    67496749/** Calculate efficient address from R/M. */
    6750 #define IEM_MC_CALC_RM_EFF_ADDR(a_GCPtrEff, bRm) \
    6751     IEM_MC_RETURN_ON_FAILURE(iemOpHlpCalcRmEffAddr(pIemCpu, (bRm), &(a_GCPtrEff)))
     6750#define IEM_MC_CALC_RM_EFF_ADDR(a_GCPtrEff, bRm, cbImm) \
     6751    IEM_MC_RETURN_ON_FAILURE(iemOpHlpCalcRmEffAddr(pIemCpu, (bRm), (cbImm), &(a_GCPtrEff)))
    67526752
    67536753#define IEM_MC_CALL_VOID_AIMPL_1(a_pfn, a0)               (a_pfn)((a0))
     
    71667166 * @param   pIemCpu             The IEM per CPU data.
    71677167 * @param   bRm                 The ModRM byte.
     7168 * @param   cbImm               The size of any immediate following the
     7169 *                              effective address opcode bytes. Important for
     7170 *                              RIP relative addressing.
    71687171 * @param   pGCPtrEff           Where to return the effective address.
    71697172 */
    7170 static VBOXSTRICTRC iemOpHlpCalcRmEffAddr(PIEMCPU pIemCpu, uint8_t bRm, PRTGCPTR pGCPtrEff)
     7173static VBOXSTRICTRC iemOpHlpCalcRmEffAddr(PIEMCPU pIemCpu, uint8_t bRm, uint8_t cbImm, PRTGCPTR pGCPtrEff)
    71717174{
    71727175    Log5(("iemOpHlpCalcRmEffAddr: bRm=%#x\n", bRm));
     
    73287331            {
    73297332                IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64EffAddr);
    7330                 u64EffAddr += pCtx->rip + pIemCpu->offOpcode;
     7333                u64EffAddr += pCtx->rip + pIemCpu->offOpcode + cbImm;
    73317334            }
    73327335            else
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h

    r46951 r46953  
    6767        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    6868
    69         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     69        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    7070        IEM_MC_MEM_MAP(pu8Dst, fAccess, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    7171        IEM_MC_FETCH_GREG_U8(u8Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    167167                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    168168
    169                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     169                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    170170                IEM_MC_MEM_MAP(pu16Dst, fAccess, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    171171                IEM_MC_FETCH_GREG_U16(u16Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    189189                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    190190
    191                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     191                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    192192                IEM_MC_MEM_MAP(pu32Dst, fAccess, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    193193                IEM_MC_FETCH_GREG_U32(u32Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    211211                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    212212
    213                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     213                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    214214                IEM_MC_MEM_MAP(pu64Dst, fAccess, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    215215                IEM_MC_FETCH_GREG_U64(u64Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    271271        IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    272272
    273         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     273        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    274274        IEM_MC_FETCH_MEM_U8(u8Src, pIemCpu->iEffSeg, GCPtrEffDst);
    275275        IEM_MC_REF_GREG_U8(pu8Dst, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    362362                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    363363
    364                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     364                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    365365                IEM_MC_FETCH_MEM_U16(u16Src, pIemCpu->iEffSeg, GCPtrEffDst);
    366366                IEM_MC_REF_GREG_U16(pu16Dst, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    379379                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    380380
    381                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     381                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    382382                IEM_MC_FETCH_MEM_U32(u32Src, pIemCpu->iEffSeg, GCPtrEffDst);
    383383                IEM_MC_REF_GREG_U32(pu32Dst, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    396396                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    397397
    398                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     398                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    399399                IEM_MC_FETCH_MEM_U64(u64Src, pIemCpu->iEffSeg, GCPtrEffDst);
    400400                IEM_MC_REF_GREG_U64(pu64Dst, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    577577        IEM_MC_LOCAL(uint16_t, u16Ldtr);
    578578        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    579         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     579        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    580580        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    581581        IEM_MC_FETCH_LDTR_U16(u16Ldtr);
     
    634634        IEM_MC_LOCAL(uint16_t, u16Tr);
    635635        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    636         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     636        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    637637        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    638638        IEM_MC_FETCH_TR_U16(u16Tr);
     
    666666        IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    667667        IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO();
    668         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     668        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    669669        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    670670        IEM_MC_FETCH_MEM_U16(u16Sel, pIemCpu->iEffSeg, GCPtrEffSrc);
     
    697697        IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    698698        IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO();
    699         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     699        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    700700        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    701701        IEM_MC_FETCH_MEM_U16(u16Sel, pIemCpu->iEffSeg, GCPtrEffSrc);
     
    744744    IEM_MC_ARG(RTGCPTR,         GCPtrEffSrc,                                1);
    745745    IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSizeArg,/*=*/pIemCpu->enmEffOpSize, 2);
    746     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     746    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    747747    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    748748    IEM_MC_CALL_CIMPL_3(iemCImpl_sgdt, iEffSeg, GCPtrEffSrc, enmEffOpSizeArg);
     
    793793    IEM_MC_ARG(RTGCPTR,         GCPtrEffSrc,                                1);
    794794    IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSizeArg,/*=*/pIemCpu->enmEffOpSize, 2);
    795     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     795    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    796796    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    797797    IEM_MC_CALL_CIMPL_3(iemCImpl_sidt, iEffSeg, GCPtrEffSrc, enmEffOpSizeArg);
     
    829829    IEM_MC_ARG(RTGCPTR,         GCPtrEffSrc,                                1);
    830830    IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSizeArg,/*=*/pIemCpu->enmEffOpSize, 2);
    831     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     831    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    832832    IEM_MC_CALL_CIMPL_3(iemCImpl_lgdt, iEffSeg, GCPtrEffSrc, enmEffOpSizeArg);
    833833    IEM_MC_END();
     
    864864    IEM_MC_ARG(RTGCPTR,         GCPtrEffSrc,                        1);
    865865    IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSizeArg,/*=*/enmEffOpSize,  2);
    866     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     866    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    867867    IEM_MC_CALL_CIMPL_3(iemCImpl_lidt, iEffSeg, GCPtrEffSrc, enmEffOpSizeArg);
    868868    IEM_MC_END();
     
    939939        IEM_MC_LOCAL(uint16_t, u16Tmp);
    940940        IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    941         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     941        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    942942        IEM_MC_FETCH_CR0_U16(u16Tmp);
    943943        IEM_MC_STORE_MEM_U16(pIemCpu->iEffSeg, GCPtrEffDst, u16Tmp);
     
    968968        IEM_MC_ARG(uint16_t, u16Tmp, 0);
    969969        IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    970         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     970        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    971971        IEM_MC_FETCH_MEM_U16(u16Tmp, pIemCpu->iEffSeg, GCPtrEffDst);
    972972        IEM_MC_CALL_CIMPL_1(iemCImpl_lmsw, u16Tmp);
     
    983983    IEM_MC_BEGIN(1, 1);
    984984    IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 0);
    985     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     985    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    986986    IEM_MC_CALL_CIMPL_1(iemCImpl_invlpg, GCPtrEffDst);
    987987    IEM_MC_END();
     
    11591159    IEM_MC_BEGIN(0, 1);
    11601160    IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc);
    1161     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     1161    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    11621162    /* Currently a NOP. */
    11631163    IEM_MC_ADVANCE_RIP();
     
    13271327        IEM_MC_BEGIN(0, 1);
    13281328        IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc);
    1329         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     1329        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    13301330        /* Currently a NOP. */
    13311331        IEM_MC_ADVANCE_RIP();
     
    13531353        IEM_MC_BEGIN(0, 1);
    13541354        IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    1355         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     1355        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    13561356        /* Currently a NOP. */
    13571357        IEM_MC_ADVANCE_RIP();
     
    15921592                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc); \
    15931593                IEM_MC_LOCAL(uint16_t, u16Tmp); \
    1594                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm); \
     1594                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); \
    15951595                IEM_MC_FETCH_MEM_U16(u16Tmp, pIemCpu->iEffSeg, GCPtrEffSrc); \
    15961596                a_Cnd { \
     
    16051605                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc); \
    16061606                IEM_MC_LOCAL(uint32_t, u32Tmp); \
    1607                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm); \
     1607                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); \
    16081608                IEM_MC_FETCH_MEM_U32(u32Tmp, pIemCpu->iEffSeg, GCPtrEffSrc); \
    16091609                a_Cnd { \
     
    16201620                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc); \
    16211621                IEM_MC_LOCAL(uint64_t, u64Tmp); \
    1622                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm); \
     1622                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); \
    16231623                IEM_MC_FETCH_MEM_U64(u64Tmp, pIemCpu->iEffSeg, GCPtrEffSrc); \
    16241624                a_Cnd { \
     
    26102610        IEM_MC_BEGIN(0, 1);
    26112611        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2612         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2612        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    26132613        IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) {
    26142614            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 1);
     
    26502650        IEM_MC_BEGIN(0, 1);
    26512651        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2652         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2652        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    26532653        IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) {
    26542654            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    26902690        IEM_MC_BEGIN(0, 1);
    26912691        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2692         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2692        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    26932693        IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) {
    26942694            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 1);
     
    27302730        IEM_MC_BEGIN(0, 1);
    27312731        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2732         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2732        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    27332733        IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) {
    27342734            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    27702770        IEM_MC_BEGIN(0, 1);
    27712771        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2772         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2772        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    27732773        IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) {
    27742774            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 1);
     
    28102810        IEM_MC_BEGIN(0, 1);
    28112811        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2812         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2812        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    28132813        IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) {
    28142814            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    28502850        IEM_MC_BEGIN(0, 1);
    28512851        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2852         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2852        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    28532853        IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) {
    28542854            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 1);
     
    28902890        IEM_MC_BEGIN(0, 1);
    28912891        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2892         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2892        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    28932893        IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) {
    28942894            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    29302930        IEM_MC_BEGIN(0, 1);
    29312931        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2932         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2932        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    29332933        IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) {
    29342934            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 1);
     
    29702970        IEM_MC_BEGIN(0, 1);
    29712971        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    2972         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     2972        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    29732973        IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) {
    29742974            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    30103010        IEM_MC_BEGIN(0, 1);
    30113011        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    3012         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3012        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    30133013        IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) {
    30143014            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 1);
     
    30503050        IEM_MC_BEGIN(0, 1);
    30513051        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    3052         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3052        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    30533053        IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) {
    30543054            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    30903090        IEM_MC_BEGIN(0, 1);
    30913091        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    3092         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3092        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    30933093        IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) {
    30943094            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 1);
     
    31303130        IEM_MC_BEGIN(0, 1);
    31313131        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    3132         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3132        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    31333133        IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) {
    31343134            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    31703170        IEM_MC_BEGIN(0, 1);
    31713171        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    3172         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3172        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    31733173        IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) {
    31743174            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 1);
     
    32103210        IEM_MC_BEGIN(0, 1);
    32113211        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    3212         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3212        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    32133213        IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) {
    32143214            IEM_MC_STORE_MEM_U8_CONST(pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    33843384                IEM_MC_LOCAL(int16_t,               i16AddrAdj);
    33853385
    3386                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3386                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    33873387                IEM_MC_FETCH_GREG_U16(u16Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    33883388                IEM_MC_ASSIGN(i16AddrAdj, u16Src);
     
    34133413                IEM_MC_LOCAL(int32_t,               i32AddrAdj);
    34143414
    3415                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3415                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    34163416                IEM_MC_FETCH_GREG_U32(u32Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    34173417                IEM_MC_ASSIGN(i32AddrAdj, u32Src);
     
    34423442                IEM_MC_LOCAL(int64_t,               i64AddrAdj);
    34433443
    3444                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3444                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    34453445                IEM_MC_FETCH_GREG_U64(u64Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    34463446                IEM_MC_ASSIGN(i64AddrAdj, u64Src);
     
    35583558                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    35593559
    3560                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3560                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    35613561                uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift);
    35623562                IEM_MC_ASSIGN(cShiftArg, cShift);
     
    35803580                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    35813581
    3582                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3582                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    35833583                uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift);
    35843584                IEM_MC_ASSIGN(cShiftArg, cShift);
     
    36023602                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    36033603
    3604                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3604                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    36053605                uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift);
    36063606                IEM_MC_ASSIGN(cShiftArg, cShift);
     
    37053705                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    37063706
    3707                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3707                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    37083708                IEM_MC_FETCH_GREG_U16(u16Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    37093709                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX);
     
    37263726                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    37273727
    3728                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3728                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    37293729                IEM_MC_FETCH_GREG_U32(u32Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    37303730                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX);
     
    37473747                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    37483748
    3749                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     3749                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    37503750                IEM_MC_FETCH_GREG_U64(u64Src, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    37513751                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX);
     
    38413841    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
    38423842    IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSize,/*=*/pIemCpu->enmEffOpSize, 2);
    3843     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm);
     3843    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm, 0);
    38443844    IEM_MC_CALL_CIMPL_3(iemCImpl_fxsave, iEffSeg, GCPtrEff, enmEffOpSize);
    38453845    IEM_MC_END();
     
    38603860    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
    38613861    IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSize,/*=*/pIemCpu->enmEffOpSize, 2);
    3862     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm);
     3862    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm, 0);
    38633863    IEM_MC_CALL_CIMPL_3(iemCImpl_fxrstor, iEffSeg, GCPtrEff, enmEffOpSize);
    38643864    IEM_MC_END();
     
    40134013        IEM_MC_LOCAL(uint8_t,       u8Al);
    40144014
    4015         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4015        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    40164016        IEMOP_HLP_DONE_DECODING();
    40174017        IEM_MC_MEM_MAP(pu8Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    41354135                IEM_MC_LOCAL(uint16_t,      u16Ax);
    41364136
    4137                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4137                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    41384138                IEMOP_HLP_DONE_DECODING();
    41394139                IEM_MC_MEM_MAP(pu16Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    41634163                IEM_MC_LOCAL(uint32_t,      u32Eax);
    41644164
    4165                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4165                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    41664166                IEMOP_HLP_DONE_DECODING();
    41674167                IEM_MC_MEM_MAP(pu32Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    41954195                IEM_MC_LOCAL(uint64_t,      u64Rax);
    41964196
    4197                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4197                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    41984198                IEMOP_HLP_DONE_DECODING();
    41994199                IEM_MC_MEM_MAP(pu64Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0);
     
    42484248            IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSize,/*=*/pIemCpu->enmEffOpSize, 4);
    42494249            IEM_MC_LOCAL(RTGCPTR,       GCPtrEff);
    4250             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm);
     4250            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm, 0);
    42514251            IEM_MC_FETCH_MEM_U16(offSeg, pIemCpu->iEffSeg, GCPtrEff);
    42524252            IEM_MC_FETCH_MEM_U16_DISP(uSel, pIemCpu->iEffSeg, GCPtrEff, 2);
     
    42634263            IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSize,/*=*/pIemCpu->enmEffOpSize, 4);
    42644264            IEM_MC_LOCAL(RTGCPTR,       GCPtrEff);
    4265             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm);
     4265            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm, 0);
    42664266            IEM_MC_FETCH_MEM_U32(offSeg, pIemCpu->iEffSeg, GCPtrEff);
    42674267            IEM_MC_FETCH_MEM_U16_DISP(uSel, pIemCpu->iEffSeg, GCPtrEff, 4);
     
    42784278            IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSize,/*=*/pIemCpu->enmEffOpSize, 4);
    42794279            IEM_MC_LOCAL(RTGCPTR,       GCPtrEff);
    4280             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm);
     4280            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm, 0);
    42814281            IEM_MC_FETCH_MEM_U64(offSeg, pIemCpu->iEffSeg, GCPtrEff);
    42824282            IEM_MC_FETCH_MEM_U16_DISP(uSel, pIemCpu->iEffSeg, GCPtrEff, 8);
     
    43784378                IEM_MC_LOCAL(uint16_t, u16Value);
    43794379                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4380                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4380                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    43814381                IEM_MC_FETCH_MEM_U8_ZX_U16(u16Value, pIemCpu->iEffSeg, GCPtrEffDst);
    43824382                IEM_MC_STORE_GREG_U16(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u16Value);
     
    43894389                IEM_MC_LOCAL(uint32_t, u32Value);
    43904390                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4391                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4391                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    43924392                IEM_MC_FETCH_MEM_U8_ZX_U32(u32Value, pIemCpu->iEffSeg, GCPtrEffDst);
    43934393                IEM_MC_STORE_GREG_U32(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u32Value);
     
    44004400                IEM_MC_LOCAL(uint64_t, u64Value);
    44014401                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4402                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4402                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    44034403                IEM_MC_FETCH_MEM_U8_ZX_U64(u64Value, pIemCpu->iEffSeg, GCPtrEffDst);
    44044404                IEM_MC_STORE_GREG_U64(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u64Value);
     
    44584458            IEM_MC_LOCAL(uint32_t, u32Value);
    44594459            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4460             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4460            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    44614461            IEM_MC_FETCH_MEM_U16_ZX_U32(u32Value, pIemCpu->iEffSeg, GCPtrEffDst);
    44624462            IEM_MC_STORE_GREG_U32(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u32Value);
     
    44694469            IEM_MC_LOCAL(uint64_t, u64Value);
    44704470            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4471             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4471            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    44724472            IEM_MC_FETCH_MEM_U16_ZX_U64(u64Value, pIemCpu->iEffSeg, GCPtrEffDst);
    44734473            IEM_MC_STORE_GREG_U64(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u64Value);
     
    45854585                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    45864586
    4587                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4587                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    45884588                uint8_t u8Bit; IEM_OPCODE_GET_NEXT_U8(&u8Bit);
    45894589                IEM_MC_ASSIGN(u16Src, u8Bit & 0x0f);
     
    46084608                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    46094609
    4610                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4610                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    46114611                uint8_t u8Bit; IEM_OPCODE_GET_NEXT_U8(&u8Bit);
    46124612                IEM_MC_ASSIGN(u32Src, u8Bit & 0x1f);
     
    46314631                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    46324632
    4633                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4633                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    46344634                uint8_t u8Bit; IEM_OPCODE_GET_NEXT_U8(&u8Bit);
    46354635                IEM_MC_ASSIGN(u64Src, u8Bit & 0x3f);
     
    47364736                IEM_MC_LOCAL(uint16_t, u16Value);
    47374737                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4738                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4738                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    47394739                IEM_MC_FETCH_MEM_U8_SX_U16(u16Value, pIemCpu->iEffSeg, GCPtrEffDst);
    47404740                IEM_MC_STORE_GREG_U16(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u16Value);
     
    47474747                IEM_MC_LOCAL(uint32_t, u32Value);
    47484748                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4749                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4749                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    47504750                IEM_MC_FETCH_MEM_U8_SX_U32(u32Value, pIemCpu->iEffSeg, GCPtrEffDst);
    47514751                IEM_MC_STORE_GREG_U32(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u32Value);
     
    47584758                IEM_MC_LOCAL(uint64_t, u64Value);
    47594759                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4760                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4760                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    47614761                IEM_MC_FETCH_MEM_U8_SX_U64(u64Value, pIemCpu->iEffSeg, GCPtrEffDst);
    47624762                IEM_MC_STORE_GREG_U64(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u64Value);
     
    48164816            IEM_MC_LOCAL(uint32_t, u32Value);
    48174817            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4818             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4818            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    48194819            IEM_MC_FETCH_MEM_U16_SX_U32(u32Value, pIemCpu->iEffSeg, GCPtrEffDst);
    48204820            IEM_MC_STORE_GREG_U32(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u32Value);
     
    48274827            IEM_MC_LOCAL(uint64_t, u64Value);
    48284828            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    4829             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4829            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    48304830            IEM_MC_FETCH_MEM_U16_SX_U64(u64Value, pIemCpu->iEffSeg, GCPtrEffDst);
    48314831            IEM_MC_STORE_GREG_U64(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u64Value);
     
    48764876        IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    48774877
    4878         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4878        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    48794879        IEM_MC_MEM_MAP(pu8Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    48804880        IEM_MC_FETCH_GREG_U8(u8RegCopy, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    49754975                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    49764976
    4977                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     4977                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    49784978                IEM_MC_MEM_MAP(pu16Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    49794979                IEM_MC_FETCH_GREG_U16(u16RegCopy, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    50005000                IEM_MC_LOCAL(RTGCPTR,   GCPtrEffDst);
    50015001
    5002                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     5002                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    50035003                IEM_MC_MEM_MAP(pu32Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    50045004                IEM_MC_FETCH_GREG_U32(u32RegCopy, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    50255025                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    50265026
    5027                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     5027                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    50285028                IEM_MC_MEM_MAP(pu64Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    50295029                IEM_MC_FETCH_GREG_U64(u64RegCopy, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    50775077    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    50785078
    5079     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     5079    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    50805080    IEMOP_HLP_DONE_DECODING();
    50815081    IEM_MC_MEM_MAP(pu64MemDst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
     
    68466846        IEM_MC_LOCAL(uint64_t, u64Value);
    68476847        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    6848         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     6848        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    68496849        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    68506850        IEM_MC_FETCH_MEM_U32_SX_U64(u64Value, pIemCpu->iEffSeg, GCPtrEffDst);
     
    69946994                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    69956995
    6996                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     6996                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2);
    69976997                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    69986998                IEM_MC_ASSIGN(u16Src, u16Imm);
     
    70437043                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    70447044
    7045                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     7045                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    70467046                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    70477047                IEM_MC_ASSIGN(u32Src, u32Imm);
     
    70927092                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    70937093
    7094                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     7094                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    70957095                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    70967096                IEM_MC_ASSIGN(u64Src, u64Imm);
     
    71807180                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    71817181
    7182                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     7182                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    71837183                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_S8_SX_U16(&u16Imm);
    71847184                IEM_MC_ASSIGN(u16Src, u16Imm);
     
    72277227                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    72287228
    7229                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     7229                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    72307230                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_S8_SX_U32(&u32Imm);
    72317231                IEM_MC_ASSIGN(u32Src, u32Imm);
     
    72747274                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    72757275
    7276                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     7276                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    72777277                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S8_SX_U64(&u64Imm);
    72787278                IEM_MC_ASSIGN(u64Src, u64Imm);
     
    78167816        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    78177817
    7818         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     7818        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    78197819        uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    78207820        IEM_MC_ARG_CONST(uint8_t,   u8Src, /*=*/ u8Imm,     1);
     
    78817881                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    78827882
    7883                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     7883                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2);
    78847884                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    78857885                IEM_MC_ASSIGN(u16Src, u16Imm);
     
    79357935                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    79367936
    7937                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     7937                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    79387938                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    79397939                IEM_MC_ASSIGN(u32Src, u32Imm);
     
    79897989                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    79907990
    7991                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     7991                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    79927992                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    79937993                IEM_MC_ASSIGN(u64Src, u64Imm);
     
    81088108                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    81098109
    8110                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8110                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    81118111                uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    81128112                IEM_MC_ASSIGN(u16Src, (int8_t)u8Imm);
     
    81338133                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    81348134
    8135                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8135                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    81368136                uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    81378137                IEM_MC_ASSIGN(u32Src, (int8_t)u8Imm);
     
    81588158                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    81598159
    8160                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8160                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    81618161                uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    81628162                IEM_MC_ASSIGN(u64Src, (int8_t)u8Imm);
     
    82368236        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    82378237
    8238         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8238        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    82398239        IEM_MC_MEM_MAP(pu8Mem, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    82408240        IEM_MC_REF_GREG_U8(pu8Reg, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    83238323                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    83248324
    8325                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8325                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    83268326                IEM_MC_MEM_MAP(pu16Mem, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    83278327                IEM_MC_REF_GREG_U16(pu16Reg, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    83398339                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    83408340
    8341                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8341                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    83428342                IEM_MC_MEM_MAP(pu32Mem, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    83438343                IEM_MC_REF_GREG_U32(pu32Reg, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    83558355                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    83568356
    8357                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8357                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    83588358                IEM_MC_MEM_MAP(pu64Mem, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    83598359                IEM_MC_REF_GREG_U64(pu64Reg, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     
    84008400        IEM_MC_LOCAL(uint8_t, u8Value);
    84018401        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    8402         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8402        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    84038403        IEM_MC_FETCH_GREG_U8(u8Value, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    84048404        IEM_MC_STORE_MEM_U8(pIemCpu->iEffSeg, GCPtrEffDst, u8Value);
     
    84658465                IEM_MC_LOCAL(uint16_t, u16Value);
    84668466                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    8467                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8467                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    84688468                IEM_MC_FETCH_GREG_U16(u16Value, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    84698469                IEM_MC_STORE_MEM_U16(pIemCpu->iEffSeg, GCPtrEffDst, u16Value);
     
    84768476                IEM_MC_LOCAL(uint32_t, u32Value);
    84778477                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    8478                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8478                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    84798479                IEM_MC_FETCH_GREG_U32(u32Value, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    84808480                IEM_MC_STORE_MEM_U32(pIemCpu->iEffSeg, GCPtrEffDst, u32Value);
     
    84878487                IEM_MC_LOCAL(uint64_t, u64Value);
    84888488                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    8489                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8489                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    84908490                IEM_MC_FETCH_GREG_U64(u64Value, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
    84918491                IEM_MC_STORE_MEM_U64(pIemCpu->iEffSeg, GCPtrEffDst, u64Value);
     
    85278527        IEM_MC_LOCAL(uint8_t, u8Value);
    85288528        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    8529         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8529        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    85308530        IEM_MC_FETCH_MEM_U8(u8Value, pIemCpu->iEffSeg, GCPtrEffDst);
    85318531        IEM_MC_STORE_GREG_U8(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u8Value);
     
    85918591                IEM_MC_LOCAL(uint16_t, u16Value);
    85928592                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    8593                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8593                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    85948594                IEM_MC_FETCH_MEM_U16(u16Value, pIemCpu->iEffSeg, GCPtrEffDst);
    85958595                IEM_MC_STORE_GREG_U16(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u16Value);
     
    86028602                IEM_MC_LOCAL(uint32_t, u32Value);
    86038603                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    8604                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8604                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    86058605                IEM_MC_FETCH_MEM_U32(u32Value, pIemCpu->iEffSeg, GCPtrEffDst);
    86068606                IEM_MC_STORE_GREG_U32(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u32Value);
     
    86138613                IEM_MC_LOCAL(uint64_t, u64Value);
    86148614                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    8615                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8615                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    86168616                IEM_MC_FETCH_MEM_U64(u64Value, pIemCpu->iEffSeg, GCPtrEffDst);
    86178617                IEM_MC_STORE_GREG_U64(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u64Value);
     
    87008700        IEM_MC_LOCAL(uint16_t,  u16Value);
    87018701        IEM_MC_LOCAL(RTGCPTR,   GCPtrEffDst);
    8702         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8702        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    87038703        IEM_MC_FETCH_SREG_U16(u16Value, iSegReg);
    87048704        IEM_MC_STORE_MEM_U16(pIemCpu->iEffSeg, GCPtrEffDst, u16Value);
     
    87278727            IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc);
    87288728            IEM_MC_LOCAL(uint16_t, u16Cast);
    8729             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     8729            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    87308730            IEM_MC_ASSIGN_TO_SMALLER(u16Cast, GCPtrEffSrc);
    87318731            IEM_MC_STORE_GREG_U16(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u16Cast);
     
    87388738            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    87398739            IEM_MC_LOCAL(uint32_t, u32Cast);
    8740             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     8740            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    87418741            IEM_MC_ASSIGN_TO_SMALLER(u32Cast, GCPtrEffSrc);
    87428742            IEM_MC_STORE_GREG_U32(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, u32Cast);
     
    87488748            IEM_MC_BEGIN(0, 1);
    87498749            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    8750             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     8750            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    87518751            IEM_MC_STORE_GREG_U64(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg, GCPtrEffSrc);
    87528752            IEM_MC_ADVANCE_RIP();
     
    88048804        IEM_MC_ARG(uint16_t,      u16Value,          1);
    88058805        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    8806         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     8806        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    88078807        IEM_MC_FETCH_MEM_U16(u16Value, pIemCpu->iEffSeg, GCPtrEffDst);
    88088808        IEM_MC_CALL_CIMPL_2(iemCImpl_load_SReg, iSRegArg, u16Value);
     
    88518851    RTGCPTR         GCPtrEff;
    88528852    VBOXSTRICTRC    rcStrict;
    8853     rcStrict = iemOpHlpCalcRmEffAddr(pIemCpu, bRm, &GCPtrEff);
     8853    rcStrict = iemOpHlpCalcRmEffAddr(pIemCpu, bRm, 0, &GCPtrEff);
    88548854    if (rcStrict != VINF_SUCCESS)
    88558855        return rcStrict;
     
    88658865        IEM_NOT_REACHED_DEFAULT_CASE_RET();
    88668866    }
    8867     rcStrict = iemOpHlpCalcRmEffAddr(pIemCpu, bRm, &GCPtrEff);
     8867    rcStrict = iemOpHlpCalcRmEffAddr(pIemCpu, bRm, 0, &GCPtrEff);
    88688868    Assert(rcStrict == VINF_SUCCESS);
    88698869    pCtx->rsp = RspSaved;
     
    1045210452        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1045310453
    10454         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10454        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    1045510455        uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift);
    1045610456        IEM_MC_ASSIGN(cShiftArg, cShift);
     
    1054610546                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1054710547
    10548                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10548                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    1054910549                uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift);
    1055010550                IEM_MC_ASSIGN(cShiftArg, cShift);
     
    1056610566                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1056710567
    10568                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10568                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    1056910569                uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift);
    1057010570                IEM_MC_ASSIGN(cShiftArg, cShift);
     
    1058610586                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1058710587
    10588                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10588                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    1058910589                uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift);
    1059010590                IEM_MC_ASSIGN(cShiftArg, cShift);
     
    1066510665        IEM_MC_BEGIN(0, 1);
    1066610666        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    10667         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10667        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    1066810668        uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    1066910669        IEM_MC_STORE_MEM_U8(pIemCpu->iEffSeg, GCPtrEffDst, u8Imm);
     
    1072410724                IEM_MC_BEGIN(0, 1);
    1072510725                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    10726                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10726                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2);
    1072710727                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    1072810728                IEM_MC_STORE_MEM_U16(pIemCpu->iEffSeg, GCPtrEffDst, u16Imm);
     
    1073410734                IEM_MC_BEGIN(0, 1);
    1073510735                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    10736                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10736                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    1073710737                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    1073810738                IEM_MC_STORE_MEM_U32(pIemCpu->iEffSeg, GCPtrEffDst, u32Imm);
     
    1074410744                IEM_MC_BEGIN(0, 1);
    1074510745                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    10746                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10746                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    1074710747                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    1074810748                IEM_MC_STORE_MEM_U64(pIemCpu->iEffSeg, GCPtrEffDst, u64Imm);
     
    1088110881        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1088210882
    10883         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10883        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1088410884        IEM_MC_MEM_MAP(pu8Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    1088510885        IEM_MC_FETCH_EFLAGS(EFlags);
     
    1097310973                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1097410974
    10975                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10975                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1097610976                IEM_MC_MEM_MAP(pu16Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    1097710977                IEM_MC_FETCH_EFLAGS(EFlags);
     
    1099110991                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1099210992
    10993                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     10993                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1099410994                IEM_MC_MEM_MAP(pu32Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    1099510995                IEM_MC_FETCH_EFLAGS(EFlags);
     
    1100911009                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1101011010
    11011                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     11011                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1101211012                IEM_MC_MEM_MAP(pu64Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    1101311013                IEM_MC_FETCH_EFLAGS(EFlags);
     
    1107011070        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1107111071
    11072         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     11072        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1107311073        IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX);
    1107411074        IEM_MC_MEM_MAP(pu8Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
     
    1116511165                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1116611166
    11167                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     11167                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1116811168                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX);
    1116911169                IEM_MC_MEM_MAP(pu16Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
     
    1118411184                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1118511185
    11186                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     11186                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1118711187                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX);
    1118811188                IEM_MC_MEM_MAP(pu32Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
     
    1120311203                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1120411204
    11205                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     11205                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1120611206                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX);
    1120711207                IEM_MC_MEM_MAP(pu64Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
     
    1146811468    IEM_MC_ARG_LOCAL_REF(PCRTFLOAT32U,  pr32Val2,       r32Val2,    2);
    1146911469
    11470     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     11470    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1147111471    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1147211472
     
    1151811518    IEM_MC_ARG_LOCAL_REF(PCRTFLOAT32U,  pr32Val2,       r32Val2,    2);
    1151911519
    11520     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     11520    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1152111521    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1152211522
     
    1155211552    IEM_MC_ARG_LOCAL_REF(PCRTFLOAT32U,  pr32Val2,       r32Val2,    2);
    1155311553
    11554     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     11554    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1155511555    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1155611556
     
    1165711657    IEM_MC_ARG_LOCAL_REF(PCRTFLOAT32U,  pr32Val,    r32Val, 1);
    1165811658
    11659     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     11659    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1166011660    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1166111661
     
    1168911689    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1169011690
    11691     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     11691    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1169211692    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1169311693    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1172511725    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1172611726
    11727     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     11727    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1172811728    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1172911729    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1175811758    IEM_MC_ARG_CONST(uint8_t,           iEffSeg,      /*=*/ pIemCpu->iEffSeg,       1);
    1175911759    IEM_MC_ARG(RTGCPTR,                 GCPtrEffSrc,                                2);
    11760     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     11760    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1176111761    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1176211762    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1177411774    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    1177511775    IEM_MC_ARG(uint16_t,                u16Fsw,                                     0);
    11776     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     11776    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1177711777    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1177811778    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1179211792    IEM_MC_ARG_CONST(uint8_t,           iEffSeg,      /*=*/ pIemCpu->iEffSeg,       1);
    1179311793    IEM_MC_ARG(RTGCPTR,                 GCPtrEffDst,                                2);
    11794     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     11794    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1179511795    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1179611796    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1180811808    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1180911809    IEM_MC_LOCAL(uint16_t,              u16Fcw);
    11810     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     11810    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1181111811    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1181211812    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1258812588    IEM_MC_ARG_LOCAL_REF(int32_t const *,   pi32Val2,       i32Val2,    2);
    1258912589
    12590     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     12590    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1259112591    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1259212592
     
    1263812638    IEM_MC_ARG_LOCAL_REF(int32_t const *,   pi32Val2,       i32Val2,    2);
    1263912639
    12640     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     12640    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1264112641    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1264212642
     
    1267212672    IEM_MC_ARG_LOCAL_REF(int32_t const *,   pi32Val2,       i32Val2,    2);
    1267312673
    12674     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     12674    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1267512675    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1267612676
     
    1277812778    IEM_MC_ARG_LOCAL_REF(int32_t const *,   pi32Val,    i32Val, 1);
    1277912779
    12780     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     12780    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1278112781    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1278212782
     
    1281012810    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1281112811
    12812     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     12812    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1281312813    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1281412814    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1284612846    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1284712847
    12848     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     12848    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1284912849    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1285012850    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1288212882    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1288312883
    12884     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     12884    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1288512885    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1288612886    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1291912919    IEM_MC_ARG_LOCAL_REF(PCRTFLOAT80U,  pr80Val,    r80Val, 1);
    1292012920
    12921     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     12921    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1292212922    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1292312923
     
    1295112951    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1295212952
    12953     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     12953    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1295412954    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1295512955    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1333213332    IEM_MC_ARG_LOCAL_REF(PRTFLOAT64U,   pr64Factor2,    r64Factor2, 2);
    1333313333
    13334     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     13334    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1333513335    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1333613336    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1338113381    IEM_MC_ARG_LOCAL_REF(PCRTFLOAT64U,  pr64Val2,       r64Val2,    2);
    1338213382
    13383     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     13383    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1338413384    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1338513385
     
    1341513415    IEM_MC_ARG_LOCAL_REF(PCRTFLOAT64U,  pr64Val2,       r64Val2,    2);
    1341613416
    13417     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     13417    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1341813418    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1341913419
     
    1351913519    IEM_MC_ARG_LOCAL_REF(PCRTFLOAT64U,  pr64Val,    r64Val, 1);
    1352013520
    13521     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     13521    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1352213522    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1352313523    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1355013550    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1355113551
    13552     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     13552    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1355313553    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1355413554    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1358613586    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1358713587
    13588     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     13588    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1358913589    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1359013590    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1362413624    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1362513625
    13626     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     13626    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1362713627    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1362813628    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1365713657    IEM_MC_ARG_CONST(uint8_t,           iEffSeg,      /*=*/ pIemCpu->iEffSeg,       1);
    1365813658    IEM_MC_ARG(RTGCPTR,                 GCPtrEffSrc,                                2);
    13659     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     13659    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1366013660    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1366113661    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1367413674    IEM_MC_ARG_CONST(uint8_t,           iEffSeg,      /*=*/ pIemCpu->iEffSeg,       1);
    1367513675    IEM_MC_ARG(RTGCPTR,                 GCPtrEffDst,                                2);
    13676     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     13676    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1367713677    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1367813678    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1369213692    IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    1369313693
     13694    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     13695    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1369413696    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
    13695     IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    13696 
    13697     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     13697
    1369813698    IEM_MC_FETCH_FSW(u16Tmp);
    1369913699    IEM_MC_STORE_MEM_U16(pIemCpu->iEffSeg, GCPtrEffDst, u16Tmp);
     
    1388113881    IEM_MC_ARG_LOCAL_REF(int16_t const *,   pi16Val2,       i16Val2,    2);
    1388213882
    13883     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     13883    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1388413884    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1388513885
     
    1393113931    IEM_MC_ARG_LOCAL_REF(int16_t const *,   pi16Val2,       i16Val2,    2);
    1393213932
    13933     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     13933    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1393413934    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1393513935
     
    1396513965    IEM_MC_ARG_LOCAL_REF(int16_t const *,   pi16Val2,       i16Val2,    2);
    1396613966
    13967     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     13967    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1396813968    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1396913969
     
    1412914129    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1413014130
    14131     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14131    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1413214132    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1413314133    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1416514165    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1416614166
    14167     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14167    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1416814168    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1416914169    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1420114201    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1420214202
    14203     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14203    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1420414204    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1420514205    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1424714247    IEM_MC_ARG(PCRTFLOAT80U,            pr80Value,          2);
    1424814248
    14249     IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14249    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1425014250    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1425114251    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1475614756        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1475714757
    14758         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14758        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1475914759        IEM_MC_MEM_MAP(pu8Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    1476014760        IEM_MC_FETCH_EFLAGS(EFlags);
     
    1479414794            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1479514795
    14796             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14796            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1479714797            IEM_MC_MEM_MAP(pu16Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    1479814798            IEM_MC_FETCH_EFLAGS(EFlags);
     
    1481414814            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1481514815
    14816             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14816            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1481714817            IEM_MC_MEM_MAP(pu32Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    1481814818            IEM_MC_FETCH_EFLAGS(EFlags);
     
    1483414834            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1483514835
    14836             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14836            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1483714837            IEM_MC_MEM_MAP(pu64Dst, IEM_ACCESS_DATA_RW, pIemCpu->iEffSeg, GCPtrEffDst, 0 /*arg*/);
    1483814838            IEM_MC_FETCH_EFLAGS(EFlags);
     
    1488614886        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1488714887
    14888         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14888        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
    1488914889        uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    1489014890        IEM_MC_ASSIGN(u8Src, u8Imm);
     
    1497514975                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1497614976
    14977                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14977                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2);
    1497814978                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    1497914979                IEM_MC_ASSIGN(u16Src, u16Imm);
     
    1499714997                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1499814998
    14999                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     14999                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    1500015000                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    1500115001                IEM_MC_ASSIGN(u32Src, u32Imm);
     
    1501915019                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1502015020
    15021                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     15021                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
    1502215022                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    1502315023                IEM_MC_ASSIGN(u64Src, u64Imm);
     
    1507015070        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    1507115071
    15072         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     15072        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1507315073        IEM_MC_FETCH_MEM_U8(u8Value, pIemCpu->iEffSeg, GCPtrEffDst);
    1507415074        IEM_MC_REF_GREG_U16(pu16AX, X86_GREG_xAX);
     
    1518815188                IEM_MC_LOCAL(int32_t,       rc);
    1518915189
    15190                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     15190                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1519115191                IEM_MC_FETCH_MEM_U16(u16Value, pIemCpu->iEffSeg, GCPtrEffDst);
    1519215192                IEM_MC_REF_GREG_U16(pu16AX, X86_GREG_xAX);
     
    1521515215                IEM_MC_LOCAL(int32_t,       rc);
    1521615216
    15217                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     15217                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1521815218                IEM_MC_FETCH_MEM_U32(u32Value, pIemCpu->iEffSeg, GCPtrEffDst);
    1521915219                IEM_MC_REF_GREG_U32(pu32AX, X86_GREG_xAX);
     
    1524215242                IEM_MC_LOCAL(int32_t,       rc);
    1524315243
    15244                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm);
     15244                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    1524515245                IEM_MC_FETCH_MEM_U64(u64Value, pIemCpu->iEffSeg, GCPtrEffDst);
    1524615246                IEM_MC_REF_GREG_U64(pu64AX, X86_GREG_xAX);
     
    1547615476                IEM_MC_ARG(uint16_t,  u16Target, 0);
    1547715477                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    15478                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15478                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1547915479                IEM_MC_FETCH_MEM_U16(u16Target, pIemCpu->iEffSeg, GCPtrEffSrc);
    1548015480                IEM_MC_CALL_CIMPL_1(iemCImpl_call_16, u16Target);
     
    1548615486                IEM_MC_ARG(uint32_t,  u32Target, 0);
    1548715487                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    15488                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15488                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1548915489                IEM_MC_FETCH_MEM_U32(u32Target, pIemCpu->iEffSeg, GCPtrEffSrc);
    1549015490                IEM_MC_CALL_CIMPL_1(iemCImpl_call_32, u32Target);
     
    1549615496                IEM_MC_ARG(uint64_t,  u64Target, 0);
    1549715497                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    15498                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15498                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1549915499                IEM_MC_FETCH_MEM_U64(u64Target, pIemCpu->iEffSeg, GCPtrEffSrc);
    1550015500                IEM_MC_CALL_CIMPL_1(iemCImpl_call_64, u64Target);
     
    1552415524            IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSize, IEMMODE_16BIT,    2);
    1552515525            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    15526             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15526            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1552715527            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1552815528            IEM_MC_FETCH_MEM_U16(offSeg, pIemCpu->iEffSeg, GCPtrEffSrc);
     
    1553815538            IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSize, IEMMODE_32BIT,    2);
    1553915539            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    15540             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15540            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1554115541            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1554215542            IEM_MC_FETCH_MEM_U32(offSeg, pIemCpu->iEffSeg, GCPtrEffSrc);
     
    1555215552            IEM_MC_ARG_CONST(IEMMODE,   enmEffOpSize, IEMMODE_16BIT,    2);
    1555315553            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    15554             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15554            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1555515555            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1555615556            IEM_MC_FETCH_MEM_U64(offSeg, pIemCpu->iEffSeg, GCPtrEffSrc);
     
    1562715627                IEM_MC_LOCAL(uint16_t, u16Target);
    1562815628                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    15629                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15629                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1563015630                IEM_MC_FETCH_MEM_U16(u16Target, pIemCpu->iEffSeg, GCPtrEffSrc);
    1563115631                IEM_MC_SET_RIP_U16(u16Target);
     
    1563715637                IEM_MC_LOCAL(uint32_t, u32Target);
    1563815638                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    15639                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15639                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1564015640                IEM_MC_FETCH_MEM_U32(u32Target, pIemCpu->iEffSeg, GCPtrEffSrc);
    1564115641                IEM_MC_SET_RIP_U32(u32Target);
     
    1564715647                IEM_MC_LOCAL(uint32_t, u32Target);
    1564815648                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    15649                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15649                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1565015650                IEM_MC_FETCH_MEM_U32(u32Target, pIemCpu->iEffSeg, GCPtrEffSrc);
    1565115651                IEM_MC_SET_RIP_U32(u32Target);
     
    1569215692            IEM_MC_LOCAL(uint16_t,  u16Src);
    1569315693            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    15694             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15694            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1569515695            IEM_MC_FETCH_MEM_U16(u16Src, pIemCpu->iEffSeg, GCPtrEffSrc);
    1569615696            IEM_MC_PUSH_U16(u16Src);
     
    1570315703            IEM_MC_LOCAL(uint32_t,  u32Src);
    1570415704            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    15705             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15705            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1570615706            IEM_MC_FETCH_MEM_U32(u32Src, pIemCpu->iEffSeg, GCPtrEffSrc);
    1570715707            IEM_MC_PUSH_U32(u32Src);
     
    1571415714            IEM_MC_LOCAL(uint64_t,  u64Src);
    1571515715            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    15716             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm);
     15716            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    1571715717            IEM_MC_FETCH_MEM_U64(u64Src, pIemCpu->iEffSeg, GCPtrEffSrc);
    1571815718            IEM_MC_PUSH_U64(u64Src);
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r44529 r46953  
    498498#define IEM_MC_MEM_COMMIT_AND_UNMAP(a_pvMem, a_fAccess)                             do {} while (0)
    499499#define IEM_MC_MEM_COMMIT_AND_UNMAP_FOR_FPU_STORE(a_pvMem, a_fAccess, a_u16FSW)     do {} while (0)
    500 #define IEM_MC_CALC_RM_EFF_ADDR(a_GCPtrEff, bRm)                        do { (a_GCPtrEff) = 0; CHK_GCPTR(a_GCPtrEff); } while (0)
     500#define IEM_MC_CALC_RM_EFF_ADDR(a_GCPtrEff, bRm, cbImm)                 do { (a_GCPtrEff) = 0; CHK_GCPTR(a_GCPtrEff); } while (0)
    501501#define IEM_MC_CALL_VOID_AIMPL_1(a_pfn, a0)                             do {} while (0)
    502502#define IEM_MC_CALL_VOID_AIMPL_2(a_pfn, a0, a1)                         do {} 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