Changeset 104017 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Mar 23, 2024 11:24:52 PM (11 months ago)
- svn:sync-xref-src-repo-rev:
- 162405
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h
r104016 r104017 122 122 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 123 123 IEM_MC_ARG(uint8_t, u8Src, 1); \ 124 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \125 124 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 126 125 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 130 129 IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 131 130 IEM_MC_FETCH_GREG_U8(u8Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 132 IEM_MC_ FETCH_EFLAGS(EFlags); \131 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 133 132 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8), pu8Dst, u8Src, pEFlags); \ 134 133 \ … … 143 142 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 144 143 IEM_MC_ARG(uint8_t, u8Src, 1); \ 145 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \146 144 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 147 145 IEM_MC_LOCAL(uint8_t, bMapInfoDst); \ … … 151 149 IEM_MC_MEM_MAP_U8_ATOMIC(pu8Dst, bMapInfoDst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 152 150 IEM_MC_FETCH_GREG_U8(u8Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 153 IEM_MC_ FETCH_EFLAGS(EFlags); \151 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 154 152 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8_locked), pu8Dst, u8Src, pEFlags); \ 155 153 \ … … 220 218 IEM_MC_FETCH_GREG_U8(u8Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 221 219 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 222 IEM_MC_FETCH_EFLAGS(EFlags); \223 220 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU8, pu8Dst, u8Src, pEFlags); \ 224 221 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ … … 457 454 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 458 455 IEM_MC_ARG(uint16_t, u16Src, 1); \ 459 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \460 456 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 461 457 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 465 461 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 466 462 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 467 IEM_MC_ FETCH_EFLAGS(EFlags); \463 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 468 464 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 469 465 \ … … 478 474 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 479 475 IEM_MC_ARG(uint32_t, u32Src, 1); \ 480 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \481 476 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 482 477 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 486 481 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 487 482 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 488 IEM_MC_ FETCH_EFLAGS(EFlags); \483 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 489 484 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 490 485 \ … … 499 494 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 500 495 IEM_MC_ARG(uint64_t, u64Src, 1); \ 501 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \502 496 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 503 497 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 507 501 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 508 502 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 509 IEM_MC_ FETCH_EFLAGS(EFlags); \503 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 510 504 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 511 505 \ … … 530 524 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 531 525 IEM_MC_ARG(uint16_t, u16Src, 1); \ 532 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \533 526 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 534 527 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 538 531 IEM_MC_MEM_MAP_U16_ATOMIC(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 539 532 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 540 IEM_MC_ FETCH_EFLAGS(EFlags); \533 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 541 534 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16_locked), pu16Dst, u16Src, pEFlags); \ 542 535 \ … … 551 544 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 552 545 IEM_MC_ARG(uint32_t, u32Src, 1); \ 553 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \554 546 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 555 547 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 559 551 IEM_MC_MEM_MAP_U32_ATOMIC(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 560 552 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 561 IEM_MC_ FETCH_EFLAGS(EFlags); \553 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 562 554 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32_locked), pu32Dst, u32Src, pEFlags); \ 563 555 \ … … 572 564 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 573 565 IEM_MC_ARG(uint64_t, u64Src, 1); \ 574 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \575 566 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 576 567 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 580 571 IEM_MC_MEM_MAP_U64_ATOMIC(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 581 572 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 582 IEM_MC_ FETCH_EFLAGS(EFlags); \573 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 583 574 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64_locked), pu64Dst, u64Src, pEFlags); \ 584 575 \ … … 707 698 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 708 699 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 709 IEM_MC_FETCH_EFLAGS(EFlags); \710 700 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 711 701 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ … … 736 726 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 737 727 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 738 IEM_MC_FETCH_EFLAGS(EFlags); \739 728 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 740 729 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ … … 765 754 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 766 755 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 767 IEM_MC_FETCH_EFLAGS(EFlags); \768 756 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 769 757 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ … … 2966 2954 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 2967 2955 IEM_MC_ARG(uint16_t, u16Src, 1); 2968 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2);2969 2956 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 2970 2957 IEM_MC_LOCAL(uint8_t, bUnmapInfo); … … 2974 2961 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 2975 2962 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG_8(bRm)); 2976 IEM_MC_ FETCH_EFLAGS(EFlags);2963 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); 2977 2964 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_arpl, pu16Dst, u16Src, pEFlags); 2978 2965 … … 4207 4194 IEM_MC_LOCAL(uint8_t, u8Dst); \ 4208 4195 IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 4209 IEM_MC_LOCAL(uint32_t, uEFlags); \ 4210 IEM_MC_FETCH_EFLAGS(uEFlags); \ 4196 IEM_MC_LOCAL_EFLAGS( uEFlags); \ 4211 4197 IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \ 4212 4198 IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, bRm), u8Dst); \ … … 4229 4215 { \ 4230 4216 IEM_MC_BEGIN(3, 3, 0, 0); \ 4231 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \4232 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4233 4217 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4234 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4218 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4235 4219 \ 4236 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \4237 4220 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4238 4221 IEM_MC_ARG_CONST(uint8_t, u8Src, /*=*/ u8Imm, 1); \ 4239 4222 IEMOP_HLP_DONE_DECODING(); \ 4240 4223 \ 4224 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4225 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 4241 4226 IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4242 IEM_MC_ FETCH_EFLAGS(EFlags); \4227 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4243 4228 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8), pu8Dst, u8Src, pEFlags); \ 4244 4229 \ … … 4252 4237 IEM_MC_BEGIN(3, 3, 0, 0); \ 4253 4238 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 4254 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4255 4239 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4256 4240 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 4262 4246 \ 4263 4247 IEM_MC_MEM_MAP_U8_ATOMIC(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4264 IEM_MC_ FETCH_EFLAGS(EFlags); \4248 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4265 4249 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8_locked), pu8Dst, u8Src, pEFlags); \ 4266 4250 \ … … 4283 4267 IEM_MC_LOCAL(uint8_t, u8Dst); \ 4284 4268 IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 4285 IEM_MC_LOCAL(uint32_t, uEFlags); \ 4286 IEM_MC_FETCH_EFLAGS(uEFlags); \ 4269 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 4287 4270 IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \ 4288 4271 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 4311 4294 IEM_MC_LOCAL(uint8_t, u8Dst); \ 4312 4295 IEM_MC_FETCH_MEM_U8(u8Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4313 IEM_MC_LOCAL(uint32_t, uEFlags); \ 4314 IEM_MC_FETCH_EFLAGS(uEFlags); \ 4296 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 4315 4297 IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \ 4316 4298 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 4320 4302 IEM_MC_MEM_MAP_U8_RO(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4321 4303 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4322 IEM_MC_FETCH_EFLAGS(EFlags); \4323 4304 IEM_MC_ARG_CONST(uint8_t, u8Src, /*=*/ u8Imm, 1); \ 4324 4305 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8), pu8Dst, u8Src, pEFlags); \ … … 4569 4550 IEM_MC_ARG_CONST(uint16_t, u16Src, u16Imm, 1); \ 4570 4551 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4571 IEM_MC_FETCH_EFLAGS(EFlags); \4572 4552 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 4573 4553 \ … … 4594 4574 IEM_MC_ARG_CONST(uint32_t, u32Src, u32Imm, 1); \ 4595 4575 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4596 IEM_MC_FETCH_EFLAGS(EFlags); \4597 4576 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 4598 4577 \ … … 4620 4599 IEM_MC_ARG_CONST(uint64_t, u64Src, u64Imm, 1); \ 4621 4600 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4622 IEM_MC_FETCH_EFLAGS(EFlags); \4623 4601 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 4624 4602 \ … … 4652 4630 IEM_MC_ARG_CONST(uint16_t, u16Src, u16Imm, 1); \ 4653 4631 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4654 IEM_MC_FETCH_EFLAGS(EFlags); \4655 4632 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16_locked), pu16Dst, u16Src, pEFlags); \ 4656 4633 \ … … 4677 4654 IEM_MC_ARG_CONST(uint32_t, u32Src, u32Imm, 1); \ 4678 4655 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4679 IEM_MC_FETCH_EFLAGS(EFlags); \4680 4656 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32_locked), pu32Dst, u32Src, pEFlags); \ 4681 4657 \ … … 4702 4678 IEM_MC_ARG_CONST(uint64_t, u64Src, u64Imm, 1); \ 4703 4679 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4704 IEM_MC_FETCH_EFLAGS(EFlags); \4705 4680 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64_locked), pu64Dst, u64Src, pEFlags); \ 4706 4681 \ … … 4820 4795 IEM_MC_LOCAL(uint16_t, u16Dst); \ 4821 4796 IEM_MC_FETCH_MEM_U16(u16Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4822 IEM_MC_LOCAL(uint32_t, uEFlags); \ 4823 IEM_MC_FETCH_EFLAGS(uEFlags); \ 4797 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 4824 4798 IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, u16Imm, uEFlags, 16, 16); \ 4825 4799 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 4829 4803 IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4830 4804 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4831 IEM_MC_FETCH_EFLAGS(EFlags); \4832 4805 IEM_MC_ARG_CONST(uint16_t, u16Src, u16Imm, 1); \ 4833 4806 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ … … 4850 4823 IEM_MC_LOCAL(uint32_t, u32Dst); \ 4851 4824 IEM_MC_FETCH_MEM_U32(u32Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4852 IEM_MC_LOCAL(uint32_t, uEFlags); \ 4853 IEM_MC_FETCH_EFLAGS(uEFlags); \ 4825 IEM_MC_LOCAL_EFLAGS(uEFlags); \ 4854 4826 IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, u32Imm, uEFlags, 32, 32); \ 4855 4827 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 4859 4831 IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4860 4832 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4861 IEM_MC_FETCH_EFLAGS(EFlags); \4862 4833 IEM_MC_ARG_CONST(uint32_t, u32Src, u32Imm, 1); \ 4863 4834 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ … … 4880 4851 IEM_MC_LOCAL(uint64_t, u64Dst); \ 4881 4852 IEM_MC_FETCH_MEM_U64(u64Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4882 IEM_MC_LOCAL(uint32_t, uEFlags); \ 4883 IEM_MC_FETCH_EFLAGS(uEFlags); \ 4853 IEM_MC_LOCAL_EFLAGS( uEFlags); \ 4884 4854 IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, u64Imm, uEFlags, 64, 32); \ 4885 4855 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 4889 4859 IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4890 4860 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4891 IEM_MC_FETCH_EFLAGS(EFlags); \4892 4861 IEM_MC_ARG_CONST(uint64_t, u64Src, u64Imm, 1); \ 4893 4862 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ … … 5150 5119 IEM_MC_ARG_CONST(uint16_t, u16Src, (uint16_t)(int16_t)(int8_t)u8Imm, 1); \ 5151 5120 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5152 IEM_MC_FETCH_EFLAGS(EFlags); \5153 5121 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 5154 5122 \ … … 5173 5141 IEM_MC_ARG_CONST(uint32_t, u32Src, (uint32_t)(int32_t)(int8_t)u8Imm, 1); \ 5174 5142 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5175 IEM_MC_FETCH_EFLAGS(EFlags); \5176 5143 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 5177 5144 \ … … 5196 5163 IEM_MC_ARG_CONST(uint64_t, u64Src, (uint64_t)(int64_t)(int8_t)u8Imm, 1); \ 5197 5164 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5198 IEM_MC_FETCH_EFLAGS(EFlags); \5199 5165 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 5200 5166 \ … … 5226 5192 IEM_MC_ARG_CONST(uint16_t, u16Src, (uint16_t)(int16_t)(int8_t)u8Imm, 1); \ 5227 5193 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5228 IEM_MC_FETCH_EFLAGS(EFlags); \5229 5194 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16_locked), pu16Dst, u16Src, pEFlags); \ 5230 5195 \ … … 5249 5214 IEM_MC_ARG_CONST(uint32_t, u32Src, (uint32_t)(int32_t)(int8_t)u8Imm, 1); \ 5250 5215 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5251 IEM_MC_FETCH_EFLAGS(EFlags); \5252 5216 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32_locked), pu32Dst, u32Src, pEFlags); \ 5253 5217 \ … … 5272 5236 IEM_MC_ARG_CONST(uint64_t, u64Src, (uint64_t)(int64_t)(int8_t)u8Imm, 1); \ 5273 5237 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5274 IEM_MC_FETCH_EFLAGS(EFlags); \5275 5238 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64_locked), pu64Dst, u64Src, pEFlags); \ 5276 5239 \ … … 5384 5347 IEM_MC_LOCAL(uint16_t, u16Dst); \ 5385 5348 IEM_MC_FETCH_MEM_U16(u16Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 5386 IEM_MC_LOCAL(uint32_t, uEFlags); \ 5387 IEM_MC_FETCH_EFLAGS(uEFlags); \ 5349 IEM_MC_LOCAL_EFLAGS( uEFlags); \ 5388 5350 IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, (uint16_t)(int16_t)(int8_t)u8Imm, uEFlags, 16, 8); \ 5389 5351 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 5393 5355 IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 5394 5356 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5395 IEM_MC_FETCH_EFLAGS(EFlags); \5396 5357 IEM_MC_ARG_CONST(uint16_t, u16Src, (uint16_t)(int16_t)(int8_t)u8Imm, 1); \ 5397 5358 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ … … 5412 5373 IEM_MC_LOCAL(uint32_t, u32Dst); \ 5413 5374 IEM_MC_FETCH_MEM_U32(u32Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 5414 IEM_MC_LOCAL(uint32_t, uEFlags); \ 5415 IEM_MC_FETCH_EFLAGS(uEFlags); \ 5375 IEM_MC_LOCAL_EFLAGS( uEFlags); \ 5416 5376 IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, (uint32_t)(int32_t)(int8_t)u8Imm, uEFlags, 32, 8); \ 5417 5377 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 5421 5381 IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 5422 5382 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5423 IEM_MC_FETCH_EFLAGS(EFlags); \5424 5383 IEM_MC_ARG_CONST(uint32_t, u32Src, (uint32_t)(int32_t)(int8_t)u8Imm, 1); \ 5425 5384 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ … … 5440 5399 IEM_MC_LOCAL(uint64_t, u64Dst); \ 5441 5400 IEM_MC_FETCH_MEM_U64(u64Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 5442 IEM_MC_LOCAL(uint32_t, uEFlags); \ 5443 IEM_MC_FETCH_EFLAGS(uEFlags); \ 5401 IEM_MC_LOCAL_EFLAGS( uEFlags); \ 5444 5402 IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, (uint64_t)(int64_t)(int8_t)u8Imm, uEFlags, 64, 8); \ 5445 5403 IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \ … … 5449 5407 IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 5450 5408 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5451 IEM_MC_FETCH_EFLAGS(EFlags); \5452 5409 IEM_MC_ARG_CONST(uint64_t, u64Src, (uint64_t)(int64_t)(int8_t)u8Imm, 1); \ 5453 5410 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ … … 8673 8630 IEM_MC_ARG_CONST(uint8_t, cShiftArg, cShift, 1); \ 8674 8631 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 8675 IEM_MC_FETCH_EFLAGS(EFlags); \8676 8632 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU8, pu8Dst, cShiftArg, pEFlags); \ 8677 8633 \ … … 8856 8812 IEM_MC_ARG_CONST(uint8_t, cShiftArg, cShift, 1); \ 8857 8813 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 8858 IEM_MC_FETCH_EFLAGS(EFlags); \8859 8814 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \ 8860 8815 \ … … 8879 8834 IEM_MC_ARG_CONST(uint8_t, cShiftArg, cShift, 1); \ 8880 8835 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 8881 IEM_MC_FETCH_EFLAGS(EFlags); \8882 8836 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, cShiftArg, pEFlags); \ 8883 8837 \ … … 8902 8856 IEM_MC_ARG_CONST(uint8_t, cShiftArg, cShift, 1); \ 8903 8857 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 8904 IEM_MC_FETCH_EFLAGS(EFlags); \8905 8858 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, cShiftArg, pEFlags); \ 8906 8859 \ … … 9545 9498 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 9546 9499 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=*/1, 1); \ 9547 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \9548 9500 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 9549 9501 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 9552 9504 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9553 9505 IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9554 IEM_MC_ FETCH_EFLAGS(EFlags); \9506 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 9555 9507 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU8, pu8Dst, cShiftArg, pEFlags); \ 9556 9508 \ … … 9716 9668 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 9717 9669 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=1*/1, 1); \ 9718 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \9719 9670 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 9720 9671 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 9723 9674 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9724 9675 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9725 IEM_MC_ FETCH_EFLAGS(EFlags); \9676 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 9726 9677 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \ 9727 9678 \ … … 9736 9687 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 9737 9688 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=1*/1, 1); \ 9738 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \9739 9689 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 9740 9690 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 9743 9693 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9744 9694 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9745 IEM_MC_ FETCH_EFLAGS(EFlags); \9695 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 9746 9696 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, cShiftArg, pEFlags); \ 9747 9697 \ … … 9756 9706 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 9757 9707 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=1*/1, 1); \ 9758 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \9759 9708 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 9760 9709 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 9763 9712 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9764 9713 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9765 IEM_MC_ FETCH_EFLAGS(EFlags); \9714 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 9766 9715 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, cShiftArg, pEFlags); \ 9767 9716 \ … … 9914 9863 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 9915 9864 IEM_MC_ARG(uint8_t, cShiftArg, 1); \ 9916 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \9917 9865 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 9918 9866 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 9922 9870 IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \ 9923 9871 IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9924 IEM_MC_ FETCH_EFLAGS(EFlags); \9872 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 9925 9873 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU8, pu8Dst, cShiftArg, pEFlags); \ 9926 9874 \ … … 10094 10042 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 10095 10043 IEM_MC_ARG(uint8_t, cShiftArg, 1); \ 10096 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \10097 10044 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 10098 10045 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 10102 10049 IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \ 10103 10050 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10104 IEM_MC_ FETCH_EFLAGS(EFlags); \10051 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 10105 10052 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \ 10106 10053 \ … … 10115 10062 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 10116 10063 IEM_MC_ARG(uint8_t, cShiftArg, 1); \ 10117 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \10118 10064 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 10119 10065 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 10123 10069 IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \ 10124 10070 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10125 IEM_MC_ FETCH_EFLAGS(EFlags); \10071 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 10126 10072 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, cShiftArg, pEFlags); \ 10127 10073 \ … … 10136 10082 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 10137 10083 IEM_MC_ARG(uint8_t, cShiftArg, 1); \ 10138 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \10139 10084 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 10140 10085 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 10144 10089 IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \ 10145 10090 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10146 IEM_MC_ FETCH_EFLAGS(EFlags); \10091 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \ 10147 10092 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, cShiftArg, pEFlags); \ 10148 10093 \ … … 14139 14084 IEM_MC_BEGIN(2, 2, 0, 0); \ 14140 14085 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 14141 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \14142 14086 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 14143 14087 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 14146 14090 IEMOP_HLP_DONE_DECODING(); \ 14147 14091 IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 14148 IEM_MC_ FETCH_EFLAGS(EFlags); \14092 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ 14149 14093 IEM_MC_CALL_VOID_AIMPL_2(a_fnNormalU8, pu8Dst, pEFlags); \ 14150 14094 \ … … 14158 14102 IEM_MC_BEGIN(2, 2, 0, 0); \ 14159 14103 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 14160 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \14161 14104 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 14162 14105 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 14165 14108 IEMOP_HLP_DONE_DECODING(); \ 14166 14109 IEM_MC_MEM_MAP_U8_ATOMIC(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 14167 IEM_MC_ FETCH_EFLAGS(EFlags); \14110 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ 14168 14111 IEM_MC_CALL_VOID_AIMPL_2(a_fnLockedU8, pu8Dst, pEFlags); \ 14169 14112 \ … … 14240 14183 IEM_MC_BEGIN(2, 3, 0, 0); \ 14241 14184 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 14242 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \14243 14185 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 14244 14186 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 14247 14189 IEMOP_HLP_DONE_DECODING(); \ 14248 14190 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 14249 IEM_MC_ FETCH_EFLAGS(EFlags); \14191 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ 14250 14192 IEM_MC_CALL_VOID_AIMPL_2(a_fnNormalU16, pu16Dst, pEFlags); \ 14251 14193 \ … … 14259 14201 IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386, 0); \ 14260 14202 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 14261 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \14262 14203 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 14263 14204 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 14266 14207 IEMOP_HLP_DONE_DECODING(); \ 14267 14208 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 14268 IEM_MC_ FETCH_EFLAGS(EFlags); \14209 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ 14269 14210 IEM_MC_CALL_VOID_AIMPL_2(a_fnNormalU32, pu32Dst, pEFlags); \ 14270 14211 \ … … 14278 14219 IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT, 0); \ 14279 14220 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 14280 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \14281 14221 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 14282 14222 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 14285 14225 IEMOP_HLP_DONE_DECODING(); \ 14286 14226 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 14287 IEM_MC_ FETCH_EFLAGS(EFlags); \14227 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ 14288 14228 IEM_MC_CALL_VOID_AIMPL_2(a_fnNormalU64, pu64Dst, pEFlags); \ 14289 14229 \ … … 14307 14247 IEM_MC_BEGIN(2, 3, 0, 0); \ 14308 14248 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 14309 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \14310 14249 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 14311 14250 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 14314 14253 IEMOP_HLP_DONE_DECODING(); \ 14315 14254 IEM_MC_MEM_MAP_U16_ATOMIC(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 14316 IEM_MC_ FETCH_EFLAGS(EFlags); \14255 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ 14317 14256 IEM_MC_CALL_VOID_AIMPL_2(a_fnLockedU16, pu16Dst, pEFlags); \ 14318 14257 \ … … 14326 14265 IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386, 0); \ 14327 14266 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 14328 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \14329 14267 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 14330 14268 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 14333 14271 IEMOP_HLP_DONE_DECODING(); \ 14334 14272 IEM_MC_MEM_MAP_U32_ATOMIC(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 14335 IEM_MC_ FETCH_EFLAGS(EFlags); \14273 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ 14336 14274 IEM_MC_CALL_VOID_AIMPL_2(a_fnLockedU32, pu32Dst, pEFlags); \ 14337 14275 \ … … 14345 14283 IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT, 0); \ 14346 14284 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 14347 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \14348 14285 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 14349 14286 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 14352 14289 IEMOP_HLP_DONE_DECODING(); \ 14353 14290 IEM_MC_MEM_MAP_U64_ATOMIC(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 14354 IEM_MC_ FETCH_EFLAGS(EFlags); \14291 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ 14355 14292 IEM_MC_CALL_VOID_AIMPL_2(a_fnLockedU64, pu64Dst, pEFlags); \ 14356 14293 \ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py
r104016 r104017 2273 2273 """ IEM_MC_ARG_LOCAL_EFLAGS """ 2274 2274 oSelf.checkStmtParamCount(sName, asParams, 3); 2275 # Note! We split this one up into IEM_MC_LOCAL_VAR and IEM_MC_ARG_LOCAL_REF.2275 # Note! We split this one up into IEM_MC_LOCAL_VAR, IEM_MC_ARG_LOCAL_REF and IEM_MC_FETCH_EFLAGS. 2276 2276 oStmtLocal = McStmtVar('IEM_MC_LOCAL', ['uint32_t', asParams[1],], 'uint32_t', asParams[1]); 2277 2277 oSelf.aoLocals.append(oStmtLocal); … … 2279 2279 'uint32_t *', asParams[0], int(asParams[2]), sRef = asParams[1], sRefType = 'local'); 2280 2280 oSelf.aoArgs.append(oStmtArg); 2281 return (oStmtLocal, oStmtArg,); 2281 oStmtFetch = McStmt('IEM_MC_FETCH_EFLAGS', [asParams[1]]); 2282 return (oStmtLocal, oStmtArg, oStmtFetch,); 2282 2283 2283 2284 @staticmethod -
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r103909 r104017 9244 9244 \ 9245 9245 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 9246 IEM_MC_FETCH_EFLAGS(EFlags); \9247 9246 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ 9248 9247 \ … … 9272 9271 \ 9273 9272 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 9274 IEM_MC_FETCH_EFLAGS(EFlags); \9275 9273 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ 9276 9274 \ … … 9300 9298 \ 9301 9299 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 9302 IEM_MC_FETCH_EFLAGS(EFlags); \9303 9300 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ 9304 9301 \ … … 9338 9335 \ 9339 9336 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 9340 IEM_MC_FETCH_EFLAGS(EFlags); \9341 9337 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \ 9342 9338 \ … … 9366 9362 \ 9367 9363 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 9368 IEM_MC_FETCH_EFLAGS(EFlags); \9369 9364 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \ 9370 9365 \ … … 9394 9389 \ 9395 9390 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 9396 IEM_MC_FETCH_EFLAGS(EFlags); \9397 9391 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \ 9398 9392 \ … … 9500 9494 \ 9501 9495 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 9502 IEM_MC_FETCH_EFLAGS(EFlags); \9503 9496 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ 9504 9497 \ … … 9528 9521 \ 9529 9522 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 9530 IEM_MC_FETCH_EFLAGS(EFlags); \9531 9523 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ 9532 9524 \ … … 9556 9548 \ 9557 9549 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 9558 IEM_MC_FETCH_EFLAGS(EFlags); \9559 9550 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ 9560 9551 \ … … 9680 9671 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=*/ cShift, 2); \ 9681 9672 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 9682 IEM_MC_FETCH_EFLAGS(EFlags); \9683 9673 IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU16, pu16Dst, u16Src, cShiftArg, pEFlags); \ 9684 9674 \ … … 9705 9695 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=*/ cShift, 2); \ 9706 9696 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 9707 IEM_MC_FETCH_EFLAGS(EFlags); \9708 9697 IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU32, pu32Dst, u32Src, cShiftArg, pEFlags); \ 9709 9698 \ … … 9730 9719 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=*/ cShift, 2); \ 9731 9720 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 9732 IEM_MC_FETCH_EFLAGS(EFlags); \9733 9721 \ 9734 9722 IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU64, pu64Dst, u64Src, cShiftArg, pEFlags); \ … … 9825 9813 IEM_MC_ARG(uint16_t, u16Src, 1); \ 9826 9814 IEM_MC_ARG(uint8_t, cShiftArg, 2); \ 9827 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \9828 9815 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 9829 9816 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 9833 9820 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 9834 9821 IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \ 9835 IEM_MC_ FETCH_EFLAGS(EFlags); \9822 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 9836 9823 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9837 9824 IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU16, pu16Dst, u16Src, cShiftArg, pEFlags); \ … … 9848 9835 IEM_MC_ARG(uint32_t, u32Src, 1); \ 9849 9836 IEM_MC_ARG(uint8_t, cShiftArg, 2); \ 9850 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \9851 9837 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 9852 9838 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 9856 9842 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 9857 9843 IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \ 9858 IEM_MC_ FETCH_EFLAGS(EFlags); \9844 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 9859 9845 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9860 9846 IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU32, pu32Dst, u32Src, cShiftArg, pEFlags); \ … … 9871 9857 IEM_MC_ARG(uint64_t, u64Src, 1); \ 9872 9858 IEM_MC_ARG(uint8_t, cShiftArg, 2); \ 9873 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \9874 9859 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 9875 9860 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ … … 9879 9864 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 9880 9865 IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \ 9881 IEM_MC_ FETCH_EFLAGS(EFlags); \9866 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 9882 9867 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9883 9868 IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU64, pu64Dst, u64Src, cShiftArg, pEFlags); \ … … 10498 10483 \ 10499 10484 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 10500 IEM_MC_FETCH_EFLAGS(EFlags); \10501 10485 IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker, pu8Dst, pu8Al, u8Src, pEFlags); \ 10502 10486 \ … … 10620 10604 \ 10621 10605 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 10622 IEM_MC_FETCH_EFLAGS(EFlags); \10623 10606 IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker16, pu16Dst, pu16Ax, u16Src, pEFlags); \ 10624 10607 \ … … 10648 10631 \ 10649 10632 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 10650 IEM_MC_FETCH_EFLAGS(EFlags); \10651 10633 IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker32, pu32Dst, pu32Eax, u32Src, pEFlags); \ 10652 10634 \ … … 10680 10662 \ 10681 10663 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 10682 IEM_MC_FETCH_EFLAGS(EFlags); \10683 10664 \ 10684 10665 IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker64, pu64Dst, pu64Rax, u64Src, pEFlags); \ … … 11058 11039 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 1); \ 11059 11040 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11060 IEM_MC_FETCH_EFLAGS(EFlags); \11061 11041 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ 11062 11042 \ … … 11081 11061 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 1); \ 11082 11062 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11083 IEM_MC_FETCH_EFLAGS(EFlags); \11084 11063 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ 11085 11064 \ … … 11104 11083 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 1); \ 11105 11084 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11106 IEM_MC_FETCH_EFLAGS(EFlags); \11107 11085 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ 11108 11086 \ … … 11137 11115 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 1); \ 11138 11116 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11139 IEM_MC_FETCH_EFLAGS(EFlags); \11140 11117 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \ 11141 11118 \ … … 11160 11137 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 1); \ 11161 11138 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11162 IEM_MC_FETCH_EFLAGS(EFlags); \11163 11139 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \ 11164 11140 \ … … 11183 11159 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 1); \ 11184 11160 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11185 IEM_MC_FETCH_EFLAGS(EFlags); \11186 11161 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \ 11187 11162 \ … … 11279 11254 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 1); \ 11280 11255 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11281 IEM_MC_FETCH_EFLAGS(EFlags); \11282 11256 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ 11283 11257 \ … … 11302 11276 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 1); \ 11303 11277 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11304 IEM_MC_FETCH_EFLAGS(EFlags); \11305 11278 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ 11306 11279 \ … … 11325 11298 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 1); \ 11326 11299 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11327 IEM_MC_FETCH_EFLAGS(EFlags); \11328 11300 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ 11329 11301 \ … … 11904 11876 \ 11905 11877 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 11906 IEM_MC_FETCH_EFLAGS(EFlags); \11907 11878 IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker, pu8Dst, pu8Reg, pEFlags); \ 11908 11879 \ … … 12018 11989 \ 12019 11990 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 12020 IEM_MC_FETCH_EFLAGS(EFlags); \12021 11991 IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker16, pu16Dst, pu16Reg, pEFlags); \ 12022 11992 \ … … 12043 12013 \ 12044 12014 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 12045 IEM_MC_FETCH_EFLAGS(EFlags); \12046 12015 IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker32, pu32Dst, pu32Reg, pEFlags); \ 12047 12016 \ … … 12068 12037 \ 12069 12038 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 12070 IEM_MC_FETCH_EFLAGS(EFlags); \12071 12039 IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker64, pu64Dst, pu64Reg, pEFlags); \ 12072 12040 \ … … 12734 12702 \ 12735 12703 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 12736 IEM_MC_FETCH_EFLAGS(EFlags); \12737 12704 IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker, pu64MemDst, pu64EaxEdx, pu64EbxEcx, pEFlags); \ 12738 12705 \ … … 12792 12759 IEM_MC_ARG_LOCAL_REF(PRTUINT128U, pu128RbxRcx, u128RbxRcx, 2); \ 12793 12760 \ 12794 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3); \ 12795 IEM_MC_FETCH_EFLAGS(EFlags) 12761 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 3) 12796 12762 12797 12763 #define BODY_CMPXCHG16B_TAIL(a_Type) \ -
trunk/src/VBox/VMM/include/IEMMc.h
r104016 r104017 205 205 /** @note IEMAllInstPython.py duplicates the expansion. */ 206 206 #define IEM_MC_ARG_LOCAL_EFLAGS(a_pName, a_Name, a_iArg) \ 207 uint32_t a_Name; \207 uint32_t a_Name = pVCpu->cpum.GstCtx.eflags.u; \ 208 208 uint32_t *a_pName = &a_Name 209 209 /** @note IEMAllInstPython.py duplicates the expansion. */ -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r104016 r104017 665 665 int RT_CONCAT(iVarCheck_,a_Name) = 0; \ 666 666 int RT_CONCAT(iVarCheck_,a_pName) = 0; \ 667 uint32_t a_Name; \667 uint32_t a_Name = 0; \ 668 668 uint32_t *a_pName = &a_Name; \ 669 669 NOREF(a_pName)
Note:
See TracChangeset
for help on using the changeset viewer.