VirtualBox

Changeset 65195 in vbox for trunk/src


Ignore:
Timestamp:
Jan 8, 2017 11:54:01 PM (8 years ago)
Author:
vboxsync
Message:

IEM: Fixed BT implementation (memory access is R, not R/W).

File:
1 edited

Legend:

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

    r65194 r65195  
    49114911            fAccess = IEM_ACCESS_DATA_R;
    49124912
    4913         NOREF(fAccess);
    4914 
    49154913        /** @todo test negative bit offsets! */
    49164914        switch (pVCpu->iem.s.enmEffOpSize)
     
    49374935                IEM_MC_FETCH_EFLAGS(EFlags);
    49384936
    4939                 IEM_MC_MEM_MAP(pu16Dst, IEM_ACCESS_DATA_RW, pVCpu->iem.s.iEffSeg, GCPtrEffDst, 0);
     4937                IEM_MC_MEM_MAP(pu16Dst, fAccess, pVCpu->iem.s.iEffSeg, GCPtrEffDst, 0);
    49404938                if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK))
    49414939                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, u16Src, pEFlags);
    49424940                else
    49434941                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnLockedU16, pu16Dst, u16Src, pEFlags);
    4944                 IEM_MC_MEM_COMMIT_AND_UNMAP(pu16Dst, IEM_ACCESS_DATA_RW);
     4942                IEM_MC_MEM_COMMIT_AND_UNMAP(pu16Dst, fAccess);
    49454943
    49464944                IEM_MC_COMMIT_EFLAGS(EFlags);
     
    49704968                IEM_MC_FETCH_EFLAGS(EFlags);
    49714969
    4972                 IEM_MC_MEM_MAP(pu32Dst, IEM_ACCESS_DATA_RW, pVCpu->iem.s.iEffSeg, GCPtrEffDst, 0);
     4970                IEM_MC_MEM_MAP(pu32Dst, fAccess, pVCpu->iem.s.iEffSeg, GCPtrEffDst, 0);
    49734971                if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK))
    49744972                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, u32Src, pEFlags);
    49754973                else
    49764974                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnLockedU32, pu32Dst, u32Src, pEFlags);
    4977                 IEM_MC_MEM_COMMIT_AND_UNMAP(pu32Dst, IEM_ACCESS_DATA_RW);
     4975                IEM_MC_MEM_COMMIT_AND_UNMAP(pu32Dst, fAccess);
    49784976
    49794977                IEM_MC_COMMIT_EFLAGS(EFlags);
     
    50035001                IEM_MC_FETCH_EFLAGS(EFlags);
    50045002
    5005                 IEM_MC_MEM_MAP(pu64Dst, IEM_ACCESS_DATA_RW, pVCpu->iem.s.iEffSeg, GCPtrEffDst, 0);
     5003                IEM_MC_MEM_MAP(pu64Dst, fAccess, pVCpu->iem.s.iEffSeg, GCPtrEffDst, 0);
    50065004                if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK))
    50075005                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, u64Src, pEFlags);
    50085006                else
    50095007                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnLockedU64, pu64Dst, u64Src, pEFlags);
    5010                 IEM_MC_MEM_COMMIT_AND_UNMAP(pu64Dst, IEM_ACCESS_DATA_RW);
     5008                IEM_MC_MEM_COMMIT_AND_UNMAP(pu64Dst, fAccess);
    50115009
    50125010                IEM_MC_COMMIT_EFLAGS(EFlags);
     
    50245022FNIEMOP_DEF(iemOp_bt_Ev_Gv)
    50255023{
    5026     IEMOP_MNEMONIC(bt_Gv_Gv, "bt  Gv,Gv");
     5024    IEMOP_MNEMONIC(bt_Ev_Gv, "bt  Ev,Gv");
    50275025    IEMOP_HLP_MIN_386();
    50285026    return FNIEMOP_CALL_1(iemOpCommonBit_Ev_Gv, &g_iemAImpl_bt);
     
    59285926{
    59295927    IEMOP_MNEMONIC(btr_Ev_Gv, "btr Ev,Gv");
     5928    IEMOP_HLP_MIN_386();
    59305929    return FNIEMOP_CALL_1(iemOpCommonBit_Ev_Gv, &g_iemAImpl_btr);
    59315930}
     
    74137412    /* 0xb9 */  iemOp_Grp10,
    74147413    /* 0xba */  iemOp_Grp8,
    7415     /* 0xbd */  iemOp_btc_Ev_Gv,
     7414    /* 0xbb */  iemOp_btc_Ev_Gv,
    74167415    /* 0xbc */  iemOp_bsf_Gv_Ev,
    74177416    /* 0xbd */  iemOp_bsr_Gv_Ev,
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