VirtualBox

Changeset 104016 in vbox


Ignore:
Timestamp:
Mar 23, 2024 10:46:33 PM (10 months ago)
Author:
vboxsync
Message:

VMM/IEM: IEM_MC_LOCAL_EFLAGS. bugref:10376

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

Legend:

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

    r103828 r104016  
    5050                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    5151                IEM_MC_STORE_GREG_U16_CONST(IEM_GET_MODRM_RM(pVCpu, a_bRm), 0); \
    52                 IEM_MC_LOCAL(uint32_t, fEFlags); \
    53                 IEM_MC_FETCH_EFLAGS(fEFlags); \
     52                IEM_MC_LOCAL_EFLAGS(fEFlags); \
    5453                IEM_MC_AND_LOCAL_U32(fEFlags, ~(uint32_t)X86_EFL_STATUS_BITS); \
    5554                IEM_MC_OR_LOCAL_U32(fEFlags, X86_EFL_PF | X86_EFL_ZF); \
     
    6362                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    6463                IEM_MC_STORE_GREG_U32_CONST(IEM_GET_MODRM_RM(pVCpu, a_bRm), 0); \
    65                 IEM_MC_LOCAL(uint32_t, fEFlags); \
    66                 IEM_MC_FETCH_EFLAGS(fEFlags); \
     64                IEM_MC_LOCAL_EFLAGS(fEFlags); \
    6765                IEM_MC_AND_LOCAL_U32(fEFlags, ~(uint32_t)X86_EFL_STATUS_BITS); \
    6866                IEM_MC_OR_LOCAL_U32(fEFlags, X86_EFL_PF | X86_EFL_ZF); \
     
    7674                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    7775                IEM_MC_STORE_GREG_U64_CONST(IEM_GET_MODRM_RM(pVCpu, a_bRm), 0); \
    78                 IEM_MC_LOCAL(uint32_t, fEFlags); \
    79                 IEM_MC_FETCH_EFLAGS(fEFlags); \
     76                IEM_MC_LOCAL_EFLAGS(fEFlags); \
    8077                IEM_MC_AND_LOCAL_U32(fEFlags, ~(uint32_t)X86_EFL_STATUS_BITS); \
    8178                IEM_MC_OR_LOCAL_U32(fEFlags, X86_EFL_PF | X86_EFL_ZF); \
     
    111108                    IEM_MC_LOCAL(uint16_t,  u16Dst); \
    112109                    IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    113                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    114                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    115                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     110                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    116111                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
    117112                    IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_REG(pVCpu, bRm), u16Dst); \
     
    136131                    IEM_MC_LOCAL(uint32_t,  u32Dst); \
    137132                    IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    138                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    139                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    140                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     133                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    141134                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
    142135                    IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_REG(pVCpu, bRm), u32Dst); \
     
    162155                    IEM_MC_LOCAL(uint64_t,  u64Dst); \
    163156                    IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    164                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    165                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    166                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     157                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    167158                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
    168159                    IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm), u64Dst); \
     
    199190                    IEM_MC_LOCAL(uint16_t,  u16Dst); \
    200191                    IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    201                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    202                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    203                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     192                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    204193                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
    205194                    IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_REG(pVCpu, bRm), u16Dst); \
     
    226215                    IEM_MC_LOCAL(uint32_t,  u32Dst); \
    227216                    IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    228                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    229                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    230                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     217                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    231218                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
    232219                    IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_REG(pVCpu, bRm), u32Dst); \
     
    254241                    IEM_MC_LOCAL(uint64_t,  u64Dst); \
    255242                    IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    256                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    257                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    258                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     243                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    259244                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
    260245                    IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm), u64Dst); \
     
    298283                    IEM_MC_LOCAL(uint16_t,  u16Dst); \
    299284                    IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    300                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    301                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    302                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     285                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    303286                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
    304287                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    322305                    IEM_MC_LOCAL(uint32_t,  u32Dst); \
    323306                    IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    324                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    325                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    326                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     307                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    327308                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
    328309                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    346327                    IEM_MC_LOCAL(uint64_t,  u64Dst); \
    347328                    IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    348                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    349                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    350                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     329                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    351330                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
    352331                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    382361                    IEM_MC_LOCAL(uint16_t,  u16Dst); \
    383362                    IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    384                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    385                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    386                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     363                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    387364                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
    388365                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    408385                    IEM_MC_LOCAL(uint32_t,  u32Dst); \
    409386                    IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    410                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    411                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    412                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     387                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    413388                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
    414389                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    434409                    IEM_MC_LOCAL(uint64_t,  u64Dst); \
    435410                    IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    436                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    437                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    438                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     411                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    439412                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
    440413                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h

    r103828 r104016  
    7171        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    7272        IEM_MC_STORE_GREG_U8_CONST(IEM_GET_MODRM_REG(pVCpu, a_bRm), 0); \
    73         IEM_MC_LOCAL(uint32_t, fEFlags); \
    74         IEM_MC_FETCH_EFLAGS(fEFlags); \
     73        IEM_MC_LOCAL_EFLAGS(fEFlags); \
    7574        IEM_MC_AND_LOCAL_U32(fEFlags, ~(uint32_t)X86_EFL_STATUS_BITS); \
    7675        IEM_MC_OR_LOCAL_U32(fEFlags, X86_EFL_PF | X86_EFL_ZF); \
     
    9796            IEM_MC_LOCAL(uint8_t,   u8Dst); \
    9897            IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
    99             /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    100             IEM_MC_LOCAL(uint32_t,  uEFlags); \
    101             IEM_MC_FETCH_EFLAGS(uEFlags); \
     98            IEM_MC_LOCAL_EFLAGS(uEFlags); \
    10299            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    103100            IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, a_bRm), u8Dst); \
     
    182179            IEM_MC_LOCAL(uint8_t,   u8Dst); \
    183180            IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
    184             /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    185             IEM_MC_LOCAL(uint32_t,  uEFlags); \
    186             IEM_MC_FETCH_EFLAGS(uEFlags); \
     181            IEM_MC_LOCAL_EFLAGS(uEFlags); \
    187182            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    188183            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    215210                IEM_MC_LOCAL(uint8_t,       u8SrcEmit); \
    216211                IEM_MC_FETCH_GREG_U8(u8SrcEmit, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    217                 /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    218                 IEM_MC_LOCAL(uint32_t,      uEFlags); \
    219                 IEM_MC_FETCH_EFLAGS(uEFlags); \
     212                IEM_MC_LOCAL_EFLAGS(uEFlags); \
    220213                IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u8Dst, u8SrcEmit, uEFlags, 8); \
    221214                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    261254            IEM_MC_LOCAL(uint8_t,   u8Dst); \
    262255            IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    263             /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    264             IEM_MC_LOCAL(uint32_t,  uEFlags); \
    265             IEM_MC_FETCH_EFLAGS(uEFlags); \
     256            IEM_MC_LOCAL_EFLAGS(uEFlags); \
    266257            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    267258            IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_REG(pVCpu, a_bRm), u8Dst); \
     
    291282            IEM_MC_LOCAL(uint8_t,   u8Dst); \
    292283            IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    293             /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    294             IEM_MC_LOCAL(uint32_t,  uEFlags); \
    295             IEM_MC_FETCH_EFLAGS(uEFlags); \
     284            IEM_MC_LOCAL_EFLAGS(uEFlags); \
    296285            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    297286            IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_REG(pVCpu, a_bRm), u8Dst); \
     
    325314            IEM_MC_LOCAL(uint8_t,   u8Dst); \
    326315            IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    327             /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    328             IEM_MC_LOCAL(uint32_t,  uEFlags); \
    329             IEM_MC_FETCH_EFLAGS(uEFlags); \
     316            IEM_MC_LOCAL_EFLAGS(uEFlags); \
    330317            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    331318            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    354341            IEM_MC_LOCAL(uint8_t,   u8Dst); \
    355342            IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    356             /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    357             IEM_MC_LOCAL(uint32_t,  uEFlags); \
    358             IEM_MC_FETCH_EFLAGS(uEFlags); \
     343            IEM_MC_LOCAL_EFLAGS(uEFlags); \
    359344            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    360345            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    392377                    IEM_MC_LOCAL(uint16_t,   u16Dst); \
    393378                    IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
    394                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    395                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    396                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     379                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    397380                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
    398381                    IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_RM(pVCpu, a_bRm), u16Dst); \
     
    417400                    IEM_MC_LOCAL(uint32_t,   u32Dst); \
    418401                    IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
    419                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    420                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    421                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     402                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    422403                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
    423404                    IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_RM(pVCpu, a_bRm), u32Dst); \
     
    443424                    IEM_MC_LOCAL(uint64_t,  u64Dst); \
    444425                    IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
    445                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    446                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    447                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     426                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    448427                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
    449428                    IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_RM(pVCpu, a_bRm), u64Dst); \
     
    636615                    IEM_MC_LOCAL(uint16_t,   u16Dst); \
    637616                    IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
    638                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    639                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    640                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     617                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    641618                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
    642619                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    660637                    IEM_MC_LOCAL(uint32_t,   u32Dst); \
    661638                    IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
    662                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    663                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    664                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     639                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    665640                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
    666641                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    684659                    IEM_MC_LOCAL(uint64_t,  u64Dst); \
    685660                    IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
    686                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    687                     IEM_MC_LOCAL(uint32_t,  uEFlags); \
    688                     IEM_MC_FETCH_EFLAGS(uEFlags); \
     661                    IEM_MC_LOCAL_EFLAGS(uEFlags); \
    689662                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
    690663                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    724697                        IEM_MC_LOCAL(uint16_t,      u16SrcEmit); \
    725698                        IEM_MC_FETCH_GREG_U16(u16SrcEmit, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    726                         /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    727                         IEM_MC_LOCAL(uint32_t,  uEFlags); \
    728                         IEM_MC_FETCH_EFLAGS(uEFlags); \
     699                        IEM_MC_LOCAL_EFLAGS(uEFlags); \
    729700                        IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16SrcEmit, uEFlags, 16); \
    730701                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    755726                        IEM_MC_LOCAL(uint32_t,      u32SrcEmit); \
    756727                        IEM_MC_FETCH_GREG_U32(u32SrcEmit, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    757                         /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    758                         IEM_MC_LOCAL(uint32_t,  uEFlags); \
    759                         IEM_MC_FETCH_EFLAGS(uEFlags); \
     728                        IEM_MC_LOCAL_EFLAGS(uEFlags); \
    760729                        IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32SrcEmit, uEFlags, 32); \
    761730                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    786755                        IEM_MC_LOCAL(uint64_t,      u64SrcEmit); \
    787756                        IEM_MC_FETCH_GREG_U64(u64SrcEmit, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    788                         /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
    789                         IEM_MC_LOCAL(uint32_t,  uEFlags); \
    790                         IEM_MC_FETCH_EFLAGS(uEFlags); \
     757                        IEM_MC_LOCAL_EFLAGS(uEFlags); \
    791758                        IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64SrcEmit, uEFlags, 64); \
    792759                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    56465613        IEM_MC_FETCH_GREG_U8(u8Src, IEM_GET_MODRM_REG(pVCpu, bRm));
    56475614        IEM_MC_NATIVE_IF(RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64) {
    5648             /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */
    5649             IEM_MC_LOCAL(uint32_t,  uEFlags);
    5650             IEM_MC_FETCH_EFLAGS(uEFlags);
     5615            IEM_MC_LOCAL_EFLAGS(uEFlags);
    56515616            IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u8Src, u8Src, uEFlags, 8);
    56525617            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags);
     
    56925657                IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm));
    56935658                IEM_MC_NATIVE_IF(RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64) {
    5694                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */
    5695                     IEM_MC_LOCAL(uint32_t,  uEFlags);
    5696                     IEM_MC_FETCH_EFLAGS(uEFlags);
     5659                    IEM_MC_LOCAL_EFLAGS(uEFlags);
    56975660                    IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u16Src, u16Src, uEFlags, 16);
    56985661                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags);
     
    57145677                IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm));
    57155678                IEM_MC_NATIVE_IF(RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64) {
    5716                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */
    5717                     IEM_MC_LOCAL(uint32_t,  uEFlags);
    5718                     IEM_MC_FETCH_EFLAGS(uEFlags);
     5679                    IEM_MC_LOCAL_EFLAGS(uEFlags);
    57195680                    IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u32Src, u32Src, uEFlags, 32);
    57205681                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags);
     
    57365697                IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm));
    57375698                IEM_MC_NATIVE_IF(RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64) {
    5738                     /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */
    5739                     IEM_MC_LOCAL(uint32_t,  uEFlags);
    5740                     IEM_MC_FETCH_EFLAGS(uEFlags);
     5699                    IEM_MC_LOCAL_EFLAGS(uEFlags);
    57415700                    IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u64Src, u64Src, uEFlags, 64);
    57425701                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags);
     
    1006810027/* Need to use a body macro here since the EFLAGS behaviour differs between
    1006910028   the shifts, rotates and rotate w/ carry. Sigh. */
    10070 #define GRP2_BODY_Ev_CL(a_pImplExpr) \
     10029#define GRP2_BODY_Ev_CL(a_Ins, a_pImplExpr, a_fRegNativeArchs, a_fMemNativeArchs) \
    1007110030        PCIEMOPSHIFTSIZES const pImpl = (a_pImplExpr); \
    1007210031        if (IEM_IS_MODRM_REG_MODE(bRm)) \
     
    1007810037                    IEM_MC_BEGIN(3, 0, 0, 0); \
    1007910038                    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    10080                     IEM_MC_ARG(uint16_t *,      pu16Dst,    0); \
    1008110039                    IEM_MC_ARG(uint8_t,         cShiftArg,  1); \
    10082                     IEM_MC_ARG(uint32_t *,      pEFlags,    2); \
    1008310040                    IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    10084                     IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    10085                     IEM_MC_REF_EFLAGS(pEFlags); \
    10086                     IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \
     10041                    /*IEM_MC_NATIVE_IF(a_fRegNativeArchs) { \
     10042                        IEM_MC_LOCAL(uint16_t,      u16Dst); \
     10043                        IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     10044                    } IEM_MC_NATIVE_ELSE() { */ \
     10045                        IEM_MC_ARG(uint16_t *,      pu16Dst,    0); \
     10046                        IEM_MC_ARG(uint32_t *,      pEFlags,    2); \
     10047                        IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     10048                        IEM_MC_REF_EFLAGS(pEFlags); \
     10049                        IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \
     10050                    /*}*/ \
    1008710051                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1008810052                    IEM_MC_END(); \
     
    1020210166{
    1020310167    IEMOP_MNEMONIC2EX(rol_Ev_CL, "rol Ev,CL", M_CL, ROL, rol, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    10204     GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags));
     10168    GRP2_BODY_Ev_CL(rol, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rol_eflags), 0, 0);
    1020510169}
    1020610170
     
    1021410178{
    1021510179    IEMOP_MNEMONIC2EX(ror_Ev_CL, "ror Ev,CL", M_CL, ROR, ror, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    10216     GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags));
     10180    GRP2_BODY_Ev_CL(ror, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_ror_eflags), 0, 0);
    1021710181}
    1021810182
     
    1022610190{
    1022710191    IEMOP_MNEMONIC2EX(rcl_Ev_CL, "rcl Ev,CL", M_CL, RCL, rcl, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    10228     GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags));
     10192    GRP2_BODY_Ev_CL(rcl, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcl_eflags), 0, 0);
    1022910193}
    1023010194
     
    1023810202{
    1023910203    IEMOP_MNEMONIC2EX(rcr_Ev_CL, "rcr Ev,CL", M_CL, RCR, rcr, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    10240     GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags));
     10204    GRP2_BODY_Ev_CL(rcr, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_rcr_eflags), 0, 0);
    1024110205}
    1024210206
     
    1025010214{
    1025110215    IEMOP_MNEMONIC2EX(shl_Ev_CL, "shl Ev,CL", M_CL, SHL, shl, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    10252     GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags));
     10216    GRP2_BODY_Ev_CL(shl, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shl_eflags), 0, 0);
    1025310217}
    1025410218
     
    1026210226{
    1026310227    IEMOP_MNEMONIC2EX(shr_Ev_CL, "shr Ev,CL", M_CL, SHR, shr, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    10264     GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags));
     10228    GRP2_BODY_Ev_CL(shr, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_shr_eflags), 0, 0);
    1026510229}
    1026610230
     
    1027410238{
    1027510239    IEMOP_MNEMONIC2EX(sar_Ev_CL, "sar Ev,CL", M_CL, SAR, sar, Ev, REG_CL, DISOPTYPE_HARMLESS, 0);
    10276     GRP2_BODY_Ev_CL(IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags));
     10240    GRP2_BODY_Ev_CL(sar, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_sar_eflags), 0, 0);
    1027710241}
    1027810242
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py

    r103995 r104016  
    23192319        """ IEM_MC_LOCAL_EFLAGS"""
    23202320        oSelf.checkStmtParamCount(sName, asParams, 1);
    2321         oStmt = McStmtVar(sName, asParams, 'uint32_t', asParams[0]);
    2322         oSelf.aoLocals.append(oStmt);
    2323         return oStmt;
     2321        # Note! We split this one up into IEM_MC_LOCAL_VAR and IEM_MC_FETCH_EFLAGS just like with IEM_MC_ARG_LOCAL_EFLAGS.
     2322        oStmtLocal = McStmtVar('IEM_MC_LOCAL', ['uint32_t', asParams[0]], 'uint32_t', asParams[0]);
     2323        oSelf.aoLocals.append(oStmtLocal);
     2324        oStmtFetch = McStmt('IEM_MC_FETCH_EFLAGS', [asParams[0]]);
     2325        return (oStmtLocal, oStmtFetch,);
    23242326
    23252327    @staticmethod
  • trunk/src/VBox/VMM/include/IEMMc.h

    r103984 r104016  
    207207    uint32_t a_Name; \
    208208    uint32_t *a_pName = &a_Name
     209/** @note IEMAllInstPython.py duplicates the expansion. */
    209210#define IEM_MC_LOCAL_EFLAGS(a_Name)                     uint32_t a_Name = pVCpu->cpum.GstCtx.eflags.u
    210211#define IEM_MC_COMMIT_EFLAGS(a_EFlags) \
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r103922 r104016  
    632632    a_Type a_Name = (a_Value); \
    633633    NOREF(a_Name)
     634#define IEM_MC_LOCAL_EFLAGS(a_Name)                     IEM_MC_LOCAL(uint32_t, a_Name); IEM_MC_FETCH_EFLAGS(a_Name)
    634635#define IEM_MC_NOREF(a_Name)                            RT_NOREF_PV(a_Name)
    635636
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