VirtualBox

Ignore:
Timestamp:
Mar 23, 2024 11:24:52 PM (8 months ago)
Author:
vboxsync
Message:

VMM/IEM: Modified the IEM_MC_ARG_LOCAL_EFLAGS behaviour to also include IEM_MC_FETCH_EFLAGS. bugref:10369

File:
1 edited

Legend:

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

    r103909 r104017  
    92449244                    \
    92459245                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9246                     IEM_MC_FETCH_EFLAGS(EFlags); \
    92479246                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
    92489247                    \
     
    92729271                    \
    92739272                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9274                     IEM_MC_FETCH_EFLAGS(EFlags); \
    92759273                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    92769274                    \
     
    93009298                    \
    93019299                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9302                     IEM_MC_FETCH_EFLAGS(EFlags); \
    93039300                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
    93049301                    \
     
    93389335                    \
    93399336                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9340                     IEM_MC_FETCH_EFLAGS(EFlags); \
    93419337                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \
    93429338                    \
     
    93669362                    \
    93679363                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9368                     IEM_MC_FETCH_EFLAGS(EFlags); \
    93699364                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \
    93709365                    \
     
    93949389                    \
    93959390                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9396                     IEM_MC_FETCH_EFLAGS(EFlags); \
    93979391                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \
    93989392                    \
     
    95009494                    \
    95019495                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9502                     IEM_MC_FETCH_EFLAGS(EFlags); \
    95039496                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
    95049497                    \
     
    95289521                    \
    95299522                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9530                     IEM_MC_FETCH_EFLAGS(EFlags); \
    95319523                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    95329524                    \
     
    95569548                    \
    95579549                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9558                     IEM_MC_FETCH_EFLAGS(EFlags); \
    95599550                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
    95609551                    \
     
    96809671                IEM_MC_ARG_CONST(uint8_t,           cShiftArg,/*=*/ cShift, 2); \
    96819672                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    9682                 IEM_MC_FETCH_EFLAGS(EFlags); \
    96839673                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU16, pu16Dst, u16Src, cShiftArg, pEFlags); \
    96849674                \
     
    97059695                IEM_MC_ARG_CONST(uint8_t,           cShiftArg,/*=*/ cShift, 2); \
    97069696                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    9707                 IEM_MC_FETCH_EFLAGS(EFlags); \
    97089697                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU32, pu32Dst, u32Src, cShiftArg, pEFlags); \
    97099698                \
     
    97309719                IEM_MC_ARG_CONST(uint8_t,           cShiftArg,/*=*/ cShift, 2); \
    97319720                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    9732                 IEM_MC_FETCH_EFLAGS(EFlags); \
    97339721                \
    97349722                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU64, pu64Dst, u64Src, cShiftArg, pEFlags); \
     
    98259813                IEM_MC_ARG(uint16_t,                u16Src,                 1); \
    98269814                IEM_MC_ARG(uint8_t,                 cShiftArg,              2); \
    9827                 IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98289815                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst); \
    98299816                IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
     
    98339820                IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    98349821                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    9835                 IEM_MC_FETCH_EFLAGS(EFlags); \
     9822                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98369823                IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    98379824                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU16, pu16Dst, u16Src, cShiftArg, pEFlags); \
     
    98489835                IEM_MC_ARG(uint32_t,                u32Src,                 1); \
    98499836                IEM_MC_ARG(uint8_t,                 cShiftArg,              2); \
    9850                 IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98519837                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst); \
    98529838                IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
     
    98569842                IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    98579843                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    9858                 IEM_MC_FETCH_EFLAGS(EFlags); \
     9844                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98599845                IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    98609846                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU32, pu32Dst, u32Src, cShiftArg, pEFlags); \
     
    98719857                IEM_MC_ARG(uint64_t,                u64Src,                 1); \
    98729858                IEM_MC_ARG(uint8_t,                 cShiftArg,              2); \
    9873                 IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98749859                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst); \
    98759860                IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
     
    98799864                IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    98809865                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    9881                 IEM_MC_FETCH_EFLAGS(EFlags); \
     9866                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98829867                IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    98839868                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU64, pu64Dst, u64Src, cShiftArg, pEFlags); \
     
    1049810483            \
    1049910484            IEM_MC_ARG_LOCAL_EFLAGS(        pEFlags, EFlags,        3); \
    10500             IEM_MC_FETCH_EFLAGS(EFlags); \
    1050110485            IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker, pu8Dst, pu8Al, u8Src, pEFlags); \
    1050210486            \
     
    1062010604                    \
    1062110605                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    10622                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1062310606                    IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker16, pu16Dst, pu16Ax, u16Src, pEFlags); \
    1062410607                    \
     
    1064810631                    \
    1064910632                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    10650                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1065110633                    IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker32, pu32Dst, pu32Eax, u32Src, pEFlags); \
    1065210634                    \
     
    1068010662                    \
    1068110663                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    10682                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1068310664                    \
    1068410665                    IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker64, pu64Dst, pu64Rax, u64Src, pEFlags); \
     
    1105811039                    IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  1); \
    1105911040                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11060                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1106111041                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
    1106211042                    \
     
    1108111061                    IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  1); \
    1108211062                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11083                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1108411063                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    1108511064                    \
     
    1110411083                    IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  1); \
    1110511084                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11106                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1110711085                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
    1110811086                    \
     
    1113711115                    IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  1); \
    1113811116                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11139                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1114011117                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \
    1114111118                    \
     
    1116011137                    IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  1); \
    1116111138                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11162                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1116311139                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \
    1116411140                    \
     
    1118311159                    IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  1); \
    1118411160                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11185                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1118611161                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \
    1118711162                    \
     
    1127911254                    IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  1); \
    1128011255                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11281                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1128211256                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
    1128311257                    \
     
    1130211276                    IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  1); \
    1130311277                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11304                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1130511278                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    1130611279                    \
     
    1132511298                    IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  1); \
    1132611299                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11327                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1132811300                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
    1132911301                    \
     
    1190411876            \
    1190511877            IEM_MC_ARG_LOCAL_EFLAGS(        pEFlags,    EFlags,     2); \
    11906             IEM_MC_FETCH_EFLAGS(EFlags); \
    1190711878            IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker, pu8Dst, pu8Reg, pEFlags); \
    1190811879            \
     
    1201811989                    \
    1201911990                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    12020                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1202111991                    IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker16, pu16Dst, pu16Reg, pEFlags); \
    1202211992                    \
     
    1204312013                    \
    1204412014                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    12045                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1204612015                    IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker32, pu32Dst, pu32Reg, pEFlags); \
    1204712016                    \
     
    1206812037                    \
    1206912038                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    12070                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1207112039                    IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker64, pu64Dst, pu64Reg, pEFlags); \
    1207212040                    \
     
    1273412702        \
    1273512703        IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags,    EFlags,     3); \
    12736         IEM_MC_FETCH_EFLAGS(EFlags); \
    1273712704        IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker, pu64MemDst, pu64EaxEdx, pu64EbxEcx, pEFlags); \
    1273812705        \
     
    1279212759            IEM_MC_ARG_LOCAL_REF(PRTUINT128U,   pu128RbxRcx, u128RbxRcx,    2); \
    1279312760            \
    12794             IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags,     EFlags,        3); \
    12795             IEM_MC_FETCH_EFLAGS(EFlags)
     12761            IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags,     EFlags,        3)
    1279612762
    1279712763#define BODY_CMPXCHG16B_TAIL(a_Type) \
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