- Timestamp:
- Nov 8, 2023 12:10:31 AM (16 months ago)
- svn:sync-xref-src-repo-rev:
- 160046
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h
r101850 r101949 2944 2944 /* memory operand */ 2945 2945 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186, 0); 2946 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 2947 IEM_MC_ARG(uint16_t, u16Src, 1); 2948 IEM_MC_ARG(uint32_t *, pEFlags, 2); 2946 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 2947 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); 2948 2949 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 2950 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2951 2949 2952 IEM_MC_LOCAL(uint16_t, u16Tmp); 2950 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);2951 2952 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2);2953 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);2954 IEM_MC_ASSIGN(u16Src, u16Imm);2955 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();2956 2953 IEM_MC_FETCH_MEM_U16(u16Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 2957 IEM_MC_REF_LOCAL(pu16Dst, u16Tmp); 2954 2955 IEM_MC_ARG_LOCAL_REF(uint16_t *, pu16Dst, u16Tmp, 0); 2956 IEM_MC_ARG_CONST(uint16_t, u16Src, u16Imm, 1); 2957 IEM_MC_ARG(uint32_t *, pEFlags, 2); 2958 2958 IEM_MC_REF_EFLAGS(pEFlags); 2959 2959 IEM_MC_CALL_VOID_AIMPL_3(pfnAImplU16, pu16Dst, u16Src, pEFlags); … … 2993 2993 /* memory operand */ 2994 2994 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386, 0); 2995 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 2996 IEM_MC_ARG(uint32_t, u32Src, 1); 2997 IEM_MC_ARG(uint32_t *, pEFlags, 2); 2995 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 2996 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); 2997 2998 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 2999 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3000 2998 3001 IEM_MC_LOCAL(uint32_t, u32Tmp); 2999 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);3000 3001 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);3002 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);3003 IEM_MC_ASSIGN(u32Src, u32Imm);3004 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();3005 3002 IEM_MC_FETCH_MEM_U32(u32Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 3006 IEM_MC_REF_LOCAL(pu32Dst, u32Tmp); 3003 3004 IEM_MC_ARG_LOCAL_REF(uint32_t *, pu32Dst, u32Tmp, 0); 3005 IEM_MC_ARG_CONST(uint32_t, u32Src, u32Imm, 1); 3006 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3007 3007 IEM_MC_REF_EFLAGS(pEFlags); 3008 3008 IEM_MC_CALL_VOID_AIMPL_3(pfnAImplU32, pu32Dst, u32Src, pEFlags); … … 3146 3146 /* memory operand */ 3147 3147 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186, 0); 3148 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 3149 IEM_MC_ARG(uint16_t, u16Src, 1); 3150 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3148 3149 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 3150 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); 3151 3152 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_S8_SX_U16(&u16Imm); 3153 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3154 3151 3155 IEM_MC_LOCAL(uint16_t, u16Tmp); 3152 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);3153 3154 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);3155 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_S8_SX_U16(&u16Imm);3156 IEM_MC_ASSIGN(u16Src, u16Imm);3157 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();3158 3156 IEM_MC_FETCH_MEM_U16(u16Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 3159 IEM_MC_REF_LOCAL(pu16Dst, u16Tmp); 3157 3158 IEM_MC_ARG_LOCAL_REF(uint16_t *, pu16Dst, u16Tmp, 0); 3159 IEM_MC_ARG_CONST(uint16_t, u16Src, u16Imm, 1); 3160 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3160 3161 IEM_MC_REF_EFLAGS(pEFlags); 3161 3162 IEM_MC_CALL_VOID_AIMPL_3(pfnAImplU16, pu16Dst, u16Src, pEFlags); … … 3195 3196 /* memory operand */ 3196 3197 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386, 0); 3197 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 3198 IEM_MC_ARG(uint32_t, u32Src, 1); 3199 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3198 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 3199 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); 3200 3201 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_S8_SX_U32(&u32Imm); 3202 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3203 3200 3204 IEM_MC_LOCAL(uint32_t, u32Tmp); 3201 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);3202 3203 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);3204 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_S8_SX_U32(&u32Imm);3205 IEM_MC_ASSIGN(u32Src, u32Imm);3206 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();3207 3205 IEM_MC_FETCH_MEM_U32(u32Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 3208 IEM_MC_REF_LOCAL(pu32Dst, u32Tmp); 3206 3207 IEM_MC_ARG_LOCAL_REF(uint32_t *, pu32Dst, u32Tmp, 0); 3208 IEM_MC_ARG_CONST(uint32_t, u32Src, u32Imm, 1); 3209 IEM_MC_ARG(uint32_t *, pEFlags, 2); 3209 3210 IEM_MC_REF_EFLAGS(pEFlags); 3210 3211 IEM_MC_CALL_VOID_AIMPL_3(pfnAImplU32, pu32Dst, u32Src, pEFlags); … … 4167 4168 { \ 4168 4169 IEM_MC_BEGIN(3, 3, 0, 0); \ 4170 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4171 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); \ 4172 \ 4173 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \ 4174 IEMOP_HLP_DONE_DECODING(); \ 4175 \ 4176 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4169 4177 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4170 IEM_MC_ARG(uint16_t, u16Src, 1); \ 4178 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4179 \ 4180 IEM_MC_ARG_CONST(uint16_t, u16Src, u16Imm, 1); \ 4171 4181 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4172 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \4173 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \4174 \4175 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); \4176 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \4177 IEM_MC_ASSIGN(u16Src, u16Imm); \4178 IEMOP_HLP_DONE_DECODING(); \4179 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \4180 4182 IEM_MC_FETCH_EFLAGS(EFlags); \ 4181 4183 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ … … 4191 4193 { \ 4192 4194 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4195 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4196 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \ 4197 \ 4198 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \ 4199 IEMOP_HLP_DONE_DECODING(); \ 4200 \ 4201 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4193 4202 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4194 IEM_MC_ARG(uint32_t, u32Src, 1); \ 4195 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4196 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4197 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4203 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4198 4204 \ 4199 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \ 4200 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \ 4201 IEM_MC_ASSIGN(u32Src, u32Imm); \ 4202 IEMOP_HLP_DONE_DECODING(); \ 4203 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4205 IEM_MC_ARG_CONST(uint32_t, u32Src, u32Imm, 1); \ 4206 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4204 4207 IEM_MC_FETCH_EFLAGS(EFlags); \ 4205 4208 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ … … 4215 4218 { \ 4216 4219 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4217 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4218 IEM_MC_ARG(uint64_t, u64Src, 1); \ 4219 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4220 \ 4220 4221 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4221 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4222 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \ 4222 4223 \ 4223 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \4224 4224 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \ 4225 4225 IEMOP_HLP_DONE_DECODING(); \ 4226 IEM_MC_ASSIGN(u64Src, u64Imm); \ 4226 \ 4227 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4228 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4227 4229 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4230 \ 4231 IEM_MC_ARG_CONST(uint64_t, u64Src, u64Imm, 1); \ 4232 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4228 4233 IEM_MC_FETCH_EFLAGS(EFlags); \ 4229 4234 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ … … 4249 4254 { \ 4250 4255 IEM_MC_BEGIN(3, 3, 0, 0); \ 4256 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4257 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); \ 4258 \ 4259 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \ 4260 IEMOP_HLP_DONE_DECODING(); \ 4261 \ 4262 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4251 4263 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4252 IEM_MC_ARG(uint16_t, u16Src, 1); \ 4264 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4265 \ 4266 IEM_MC_ARG_CONST(uint16_t, u16Src, u16Imm, 1); \ 4253 4267 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4254 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \4255 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \4256 \4257 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); \4258 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \4259 IEM_MC_ASSIGN(u16Src, u16Imm); \4260 IEMOP_HLP_DONE_DECODING(); \4261 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \4262 4268 IEM_MC_FETCH_EFLAGS(EFlags); \ 4263 4269 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \ … … 4273 4279 { \ 4274 4280 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4281 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4282 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \ 4283 \ 4284 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \ 4285 IEMOP_HLP_DONE_DECODING(); \ 4286 \ 4287 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4275 4288 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4276 IEM_MC_ARG(uint32_t, u32Src, 1); \ 4289 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4290 \ 4291 IEM_MC_ARG_CONST(uint32_t, u32Src, u32Imm, 1); \ 4277 4292 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4278 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \4279 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \4280 \4281 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \4282 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \4283 IEM_MC_ASSIGN(u32Src, u32Imm); \4284 IEMOP_HLP_DONE_DECODING(); \4285 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \4286 4293 IEM_MC_FETCH_EFLAGS(EFlags); \ 4287 4294 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \ … … 4297 4304 { \ 4298 4305 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4299 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \4300 IEM_MC_ARG(uint64_t, u64Src, 1); \4301 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4302 4306 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4303 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4307 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \ 4304 4308 \ 4305 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \4306 4309 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \ 4307 4310 IEMOP_HLP_DONE_DECODING(); \ 4308 IEM_MC_ASSIGN(u64Src, u64Imm); \ 4311 \ 4312 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4313 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4309 4314 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4315 \ 4316 IEM_MC_ARG_CONST(uint64_t, u64Src, u64Imm, 1); \ 4317 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4310 4318 IEM_MC_FETCH_EFLAGS(EFlags); \ 4311 4319 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \ … … 4398 4406 { \ 4399 4407 IEM_MC_BEGIN(3, 3, 0, 0); \ 4408 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4409 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); \ 4410 \ 4411 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \ 4412 IEMOP_HLP_DONE_DECODING(); \ 4413 \ 4414 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4400 4415 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 4401 IEM_MC_ARG(uint16_t, u16Src, 1); \ 4416 IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4417 \ 4418 IEM_MC_ARG_CONST(uint16_t, u16Src, u16Imm, 1); \ 4402 4419 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4403 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \4404 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \4405 \4406 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); \4407 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \4408 IEM_MC_ASSIGN(u16Src, u16Imm); \4409 IEMOP_HLP_DONE_DECODING(); \4410 IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \4411 4420 IEM_MC_FETCH_EFLAGS(EFlags); \ 4412 4421 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ … … 4422 4431 { \ 4423 4432 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4433 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4434 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \ 4435 \ 4436 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \ 4437 IEMOP_HLP_DONE_DECODING(); \ 4438 \ 4439 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4424 4440 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 4425 IEM_MC_ARG(uint32_t, u32Src, 1); \ 4441 IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4442 \ 4443 IEM_MC_ARG_CONST(uint32_t, u32Src, u32Imm, 1); \ 4426 4444 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4427 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \4428 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \4429 \4430 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \4431 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \4432 IEM_MC_ASSIGN(u32Src, u32Imm); \4433 IEMOP_HLP_DONE_DECODING(); \4434 IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \4435 4445 IEM_MC_FETCH_EFLAGS(EFlags); \ 4436 4446 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ … … 4446 4456 { \ 4447 4457 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4448 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \4449 IEM_MC_ARG(uint64_t, u64Src, 1); \4450 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4451 4458 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4452 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4459 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \ 4453 4460 \ 4454 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); \4455 4461 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \ 4456 4462 IEMOP_HLP_DONE_DECODING(); \ 4457 IEM_MC_ASSIGN(u64Src, u64Imm); \ 4463 \ 4464 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4465 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 4458 4466 IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4467 \ 4468 IEM_MC_ARG_CONST(uint64_t, u64Src, u64Imm, 1); \ 4469 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4459 4470 IEM_MC_FETCH_EFLAGS(EFlags); \ 4460 4471 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ … … 4680 4691 case IEMMODE_16BIT: \ 4681 4692 IEM_MC_BEGIN(3, 3, 0, 0); \ 4682 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \4683 IEM_MC_ARG(uint16_t, u16Src, 1); \4684 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4685 4693 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4686 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4694 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4687 4695 \ 4688 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \4689 4696 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4690 IEM_MC_ASSIGN(u16Src, (int8_t)u8Imm); \4691 4697 IEMOP_HLP_DONE_DECODING(); \ 4698 \ 4699 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4700 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4692 4701 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4702 \ 4703 IEM_MC_ARG_CONST(uint16_t, u16Src, (int16_t)(int8_t)u8Imm, 1); \ 4704 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4693 4705 IEM_MC_FETCH_EFLAGS(EFlags); \ 4694 4706 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ … … 4702 4714 case IEMMODE_32BIT: \ 4703 4715 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4704 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \4705 IEM_MC_ARG(uint32_t, u32Src, 1); \4706 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4707 4716 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4708 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4717 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4709 4718 \ 4710 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \4711 4719 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4712 IEM_MC_ASSIGN(u32Src, (int8_t)u8Imm); \4713 4720 IEMOP_HLP_DONE_DECODING(); \ 4721 \ 4722 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4723 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4714 4724 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4725 \ 4726 IEM_MC_ARG_CONST(uint32_t, u32Src, (int32_t)(int8_t)u8Imm, 1); \ 4727 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4715 4728 IEM_MC_FETCH_EFLAGS(EFlags); \ 4716 4729 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ … … 4724 4737 case IEMMODE_64BIT: \ 4725 4738 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4726 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \4727 IEM_MC_ARG(uint64_t, u64Src, 1); \4728 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4729 4739 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4730 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4740 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4731 4741 \ 4732 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \4733 4742 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4734 IEM_MC_ASSIGN(u64Src, (int8_t)u8Imm); \4735 4743 IEMOP_HLP_DONE_DECODING(); \ 4744 \ 4745 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4746 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4736 4747 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4748 \ 4749 IEM_MC_ARG_CONST(uint64_t, u64Src, (int64_t)(int8_t)u8Imm, 1); \ 4750 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4737 4751 IEM_MC_FETCH_EFLAGS(EFlags); \ 4738 4752 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ … … 4756 4770 case IEMMODE_16BIT: \ 4757 4771 IEM_MC_BEGIN(3, 3, 0, 0); \ 4758 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \4759 IEM_MC_ARG(uint16_t, u16Src, 1); \4760 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4761 4772 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4762 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4773 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4763 4774 \ 4764 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \4765 4775 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4766 IEM_MC_ASSIGN(u16Src, (int8_t)u8Imm); \4767 4776 IEMOP_HLP_DONE_DECODING(); \ 4777 \ 4778 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4779 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4768 4780 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4781 \ 4782 IEM_MC_ARG_CONST(uint16_t, u16Src, (int16_t)(int8_t)u8Imm, 1); \ 4783 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4769 4784 IEM_MC_FETCH_EFLAGS(EFlags); \ 4770 4785 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \ … … 4778 4793 case IEMMODE_32BIT: \ 4779 4794 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4795 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4796 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4797 \ 4798 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4799 IEMOP_HLP_DONE_DECODING(); \ 4800 \ 4801 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4780 4802 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4781 IEM_MC_ARG(uint32_t, u32Src, 1); \ 4782 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4783 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4784 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4803 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4785 4804 \ 4786 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4787 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4788 IEM_MC_ASSIGN(u32Src, (int8_t)u8Imm); \ 4789 IEMOP_HLP_DONE_DECODING(); \ 4790 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4805 IEM_MC_ARG_CONST(uint32_t, u32Src, (int32_t)(int8_t)u8Imm, 1); \ 4806 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4791 4807 IEM_MC_FETCH_EFLAGS(EFlags); \ 4792 4808 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \ … … 4800 4816 case IEMMODE_64BIT: \ 4801 4817 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4802 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \4803 IEM_MC_ARG(uint64_t, u64Src, 1); \4804 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4805 4818 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4806 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4819 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4807 4820 \ 4808 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \4809 4821 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4810 IEM_MC_ASSIGN(u64Src, (int8_t)u8Imm); \4811 4822 IEMOP_HLP_DONE_DECODING(); \ 4823 \ 4824 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4825 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4812 4826 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4827 \ 4828 IEM_MC_ARG_CONST(uint64_t, u64Src, (int64_t)(int8_t)u8Imm, 1); \ 4829 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4813 4830 IEM_MC_FETCH_EFLAGS(EFlags); \ 4814 4831 IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \ … … 4895 4912 case IEMMODE_16BIT: \ 4896 4913 IEM_MC_BEGIN(3, 3, 0, 0); \ 4897 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \4898 IEM_MC_ARG(uint16_t, u16Src, 1); \4899 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4900 4914 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4901 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4915 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4902 4916 \ 4903 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \4904 4917 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4905 IEM_MC_ASSIGN(u16Src, (int8_t)u8Imm); \4906 4918 IEMOP_HLP_DONE_DECODING(); \ 4919 \ 4920 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4921 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 4907 4922 IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4923 \ 4924 IEM_MC_ARG_CONST(uint16_t, u16Src, (int16_t)(int8_t)u8Imm, 1); \ 4925 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4908 4926 IEM_MC_FETCH_EFLAGS(EFlags); \ 4909 4927 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ … … 4917 4935 case IEMMODE_32BIT: \ 4918 4936 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4919 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \4920 IEM_MC_ARG(uint32_t, u32Src, 1); \4921 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4922 4937 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4923 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4938 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4924 4939 \ 4925 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \4926 4940 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4927 IEM_MC_ASSIGN(u32Src, (int8_t)u8Imm); \4928 4941 IEMOP_HLP_DONE_DECODING(); \ 4942 \ 4943 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4944 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 4929 4945 IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4946 \ 4947 IEM_MC_ARG_CONST(uint32_t, u32Src, (int32_t)(int8_t)u8Imm, 1); \ 4948 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4930 4949 IEM_MC_FETCH_EFLAGS(EFlags); \ 4931 4950 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ … … 4939 4958 case IEMMODE_64BIT: \ 4940 4959 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4941 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \4942 IEM_MC_ARG(uint64_t, u64Src, 1); \4943 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \4944 4960 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \ 4945 IEM_MC_ LOCAL(uint8_t, bUnmapInfo); \4961 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \ 4946 4962 \ 4947 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \4948 4963 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 4949 IEM_MC_ASSIGN(u64Src, (int8_t)u8Imm); \4950 4964 IEMOP_HLP_DONE_DECODING(); \ 4965 \ 4966 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 4967 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 4951 4968 IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 4969 \ 4970 IEM_MC_ARG_CONST(uint64_t, u64Src, (int64_t)(int8_t)u8Imm, 1); \ 4971 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 4952 4972 IEM_MC_FETCH_EFLAGS(EFlags); \ 4953 4973 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ … … 5880 5900 case IEMMODE_16BIT: 5881 5901 IEM_MC_BEGIN(2, 0, 0, 0); 5882 IEM_MC_ARG(uint8_t, iEffSeg, 0); 5883 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); 5902 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); 5884 5903 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2 << 8); 5885 5904 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5886 IEM_MC_A SSIGN(iEffSeg, pVCpu->iem.s.iEffSeg);5905 IEM_MC_ARG_CONST(uint8_t, iEffSeg, pVCpu->iem.s.iEffSeg, 0); 5887 5906 IEM_MC_CALL_CIMPL_2(0, iemCImpl_pop_mem16, iEffSeg, GCPtrEffDst); 5888 5907 IEM_MC_END(); … … 5891 5910 case IEMMODE_32BIT: 5892 5911 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0); 5893 IEM_MC_ARG(uint8_t, iEffSeg, 0); 5894 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); 5912 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); 5895 5913 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4 << 8); 5896 5914 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5897 IEM_MC_A SSIGN(iEffSeg, pVCpu->iem.s.iEffSeg);5915 IEM_MC_ARG_CONST(uint8_t, iEffSeg, pVCpu->iem.s.iEffSeg, 0); 5898 5916 IEM_MC_CALL_CIMPL_2(0, iemCImpl_pop_mem32, iEffSeg, GCPtrEffDst); 5899 5917 IEM_MC_END(); … … 5902 5920 case IEMMODE_64BIT: 5903 5921 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); 5904 IEM_MC_ARG(uint8_t, iEffSeg, 0); 5905 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); 5922 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); 5906 5923 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 8 << 8); 5907 5924 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5908 IEM_MC_A SSIGN(iEffSeg, pVCpu->iem.s.iEffSeg);5925 IEM_MC_ARG_CONST(uint8_t, iEffSeg, pVCpu->iem.s.iEffSeg, 0); 5909 5926 IEM_MC_CALL_CIMPL_2(0, iemCImpl_pop_mem64, iEffSeg, GCPtrEffDst); 5910 5927 IEM_MC_END(); … … 7661 7678 /* memory */ 7662 7679 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_186, 0); 7680 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 7681 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); 7682 7683 uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift); 7684 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7685 7686 IEM_MC_LOCAL(uint8_t, bUnmapInfo); 7663 7687 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 7664 IEM_MC_ARG(uint8_t, cShiftArg, 1);7665 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2);7666 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);7667 IEM_MC_LOCAL(uint8_t, bUnmapInfo);7668 7669 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);7670 uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift);7671 IEM_MC_ASSIGN(cShiftArg, cShift);7672 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();7673 7688 IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 7689 7690 IEM_MC_ARG_CONST(uint8_t, cShiftArg, cShift, 1); 7691 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); 7674 7692 IEM_MC_FETCH_EFLAGS(EFlags); 7675 7693 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU8, pu8Dst, cShiftArg, pEFlags); … … 7761 7779 case IEMMODE_16BIT: 7762 7780 IEM_MC_BEGIN(3, 3, 0, 0); 7763 IEM_MC_ARG(uint16_t *, pu16Dst, 0);7764 IEM_MC_ARG(uint8_t, cShiftArg, 1);7765 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2);7766 7781 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 7767 IEM_MC_LOCAL(uint8_t, bUnmapInfo);7768 7769 7782 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); 7783 7770 7784 uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift); 7771 IEM_MC_ASSIGN(cShiftArg, cShift);7772 7785 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7786 7787 IEM_MC_LOCAL(uint8_t, bUnmapInfo); 7788 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 7773 7789 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 7790 7791 IEM_MC_ARG_CONST(uint8_t, cShiftArg, cShift, 1); 7792 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); 7774 7793 IEM_MC_FETCH_EFLAGS(EFlags); 7775 7794 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); … … 7783 7802 case IEMMODE_32BIT: 7784 7803 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); 7785 IEM_MC_ARG(uint32_t *, pu32Dst, 0);7786 IEM_MC_ARG(uint8_t, cShiftArg, 1);7787 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2);7788 7804 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 7789 IEM_MC_LOCAL(uint8_t, bUnmapInfo);7790 7791 7805 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); 7806 7792 7807 uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift); 7793 IEM_MC_ASSIGN(cShiftArg, cShift);7794 7808 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7809 7810 IEM_MC_LOCAL(uint8_t, bUnmapInfo); 7811 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 7795 7812 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 7813 7814 IEM_MC_ARG_CONST(uint8_t, cShiftArg, cShift, 1); 7815 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); 7796 7816 IEM_MC_FETCH_EFLAGS(EFlags); 7797 7817 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, cShiftArg, pEFlags); … … 7805 7825 case IEMMODE_64BIT: 7806 7826 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); 7807 IEM_MC_ARG(uint64_t *, pu64Dst, 0);7808 IEM_MC_ARG(uint8_t, cShiftArg, 1);7809 IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2);7810 7827 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 7811 IEM_MC_LOCAL(uint8_t, bUnmapInfo);7812 7813 7828 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); 7829 7814 7830 uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift); 7815 IEM_MC_ASSIGN(cShiftArg, cShift);7816 7831 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7832 7833 IEM_MC_LOCAL(uint8_t, bUnmapInfo); 7834 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 7817 7835 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 7836 7837 IEM_MC_ARG_CONST(uint8_t, cShiftArg, cShift, 1); 7838 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); 7818 7839 IEM_MC_FETCH_EFLAGS(EFlags); 7819 7840 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, cShiftArg, pEFlags); … … 9184 9205 IEMOP_MNEMONIC(fldenv, "fldenv m14/28byte"); 9185 9206 IEM_MC_BEGIN(3, 0, 0, 0); 9186 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 9187 IEM_MC_ARG(uint8_t, iEffSeg, 1); 9188 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 2); 9207 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 2); 9189 9208 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 9209 9190 9210 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9191 9211 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); 9192 9212 IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE(); 9193 IEM_MC_ASSIGN(iEffSeg, pVCpu->iem.s.iEffSeg); 9213 9214 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 9215 IEM_MC_ARG_CONST(uint8_t, iEffSeg, /*=*/ pVCpu->iem.s.iEffSeg, 1); 9194 9216 IEM_MC_CALL_CIMPL_3(IEM_CIMPL_F_FPU, iemCImpl_fldenv, enmEffOpSize, iEffSeg, GCPtrEffSrc); 9195 9217 IEM_MC_END(); … … 9203 9225 IEM_MC_BEGIN(1, 1, 0, 0); 9204 9226 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 9205 IEM_MC_ARG(uint16_t, u16Fsw, 0);9206 9227 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 9228 9207 9229 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9208 9230 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); 9209 9231 IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE(); 9232 9233 IEM_MC_ARG(uint16_t, u16Fsw, 0); 9210 9234 IEM_MC_FETCH_MEM_U16(u16Fsw, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 9235 9211 9236 IEM_MC_CALL_CIMPL_1(IEM_CIMPL_F_FPU, iemCImpl_fldcw, u16Fsw); 9212 9237 IEM_MC_END(); … … 9219 9244 IEMOP_MNEMONIC(fstenv, "fstenv m14/m28byte"); 9220 9245 IEM_MC_BEGIN(3, 0, 0, 0); 9221 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 9222 IEM_MC_ARG(uint8_t, iEffSeg, 1); 9223 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 2); 9246 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 2); 9224 9247 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); 9248 9225 9249 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9226 9250 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); 9227 9251 IEM_MC_ACTUALIZE_FPU_STATE_FOR_READ(); 9228 IEM_MC_ASSIGN(iEffSeg, pVCpu->iem.s.iEffSeg); 9252 9253 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 9254 IEM_MC_ARG_CONST(uint8_t, iEffSeg, /*=*/ pVCpu->iem.s.iEffSeg, 1); 9229 9255 IEM_MC_CALL_CIMPL_3(IEM_CIMPL_F_FPU, iemCImpl_fnstenv, enmEffOpSize, iEffSeg, GCPtrEffDst); 9230 9256 IEM_MC_END(); … … 11060 11086 IEMOP_MNEMONIC(frstor, "frstor m94/108byte"); 11061 11087 IEM_MC_BEGIN(3, 0, 0, 0); 11062 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 11063 IEM_MC_ARG(uint8_t, iEffSeg, 1); 11064 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 2); 11088 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 2); 11065 11089 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 11090 11066 11091 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11067 11092 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); 11068 11093 IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE(); 11069 IEM_MC_ASSIGN(iEffSeg, pVCpu->iem.s.iEffSeg); 11094 11095 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 11096 IEM_MC_ARG_CONST(uint8_t, iEffSeg, /*=*/ pVCpu->iem.s.iEffSeg, 1); 11070 11097 IEM_MC_CALL_CIMPL_3(IEM_CIMPL_F_FPU, iemCImpl_frstor, enmEffOpSize, iEffSeg, GCPtrEffSrc); 11071 11098 IEM_MC_END(); … … 11078 11105 IEMOP_MNEMONIC(fnsave, "fnsave m94/108byte"); 11079 11106 IEM_MC_BEGIN(3, 0, 0, 0); 11080 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 11081 IEM_MC_ARG(uint8_t, iEffSeg, 1); 11082 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 2); 11107 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 2); 11083 11108 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); 11109 11084 11110 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11085 11111 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); 11086 11112 IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE(); /* Note! Implicit fninit after the save, do not use FOR_READ here! */ 11087 IEM_MC_ASSIGN(iEffSeg, pVCpu->iem.s.iEffSeg); 11113 11114 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 11115 IEM_MC_ARG_CONST(uint8_t, iEffSeg, /*=*/ pVCpu->iem.s.iEffSeg, 1); 11088 11116 IEM_MC_CALL_CIMPL_3(IEM_CIMPL_F_FPU, iemCImpl_fnsave, enmEffOpSize, iEffSeg, GCPtrEffDst); 11089 11117 IEM_MC_END(); … … 12645 12673 /* memory access. */ 12646 12674 IEM_MC_BEGIN(3, 3, 0, 0); 12675 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 12676 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); 12677 12678 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 12679 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12680 12681 IEM_MC_LOCAL(uint8_t, bUnmapInfo); 12647 12682 IEM_MC_ARG(uint8_t const *, pu8Dst, 0); 12648 IEM_MC_ARG(uint8_t, u8Src, 1); 12683 IEM_MC_MEM_MAP_U8_RO(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 12684 12685 IEM_MC_ARG_CONST(uint8_t, u8Src, u8Imm, 1); 12649 12686 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); 12650 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);12651 IEM_MC_LOCAL(uint8_t, bUnmapInfo);12652 12653 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);12654 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);12655 IEM_MC_ASSIGN(u8Src, u8Imm);12656 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();12657 IEM_MC_MEM_MAP_U8_RO(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst);12658 12687 IEM_MC_FETCH_EFLAGS(EFlags); 12659 12688 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_test_u8, pu8Dst, u8Src, pEFlags); … … 13010 13039 case IEMMODE_16BIT: 13011 13040 IEM_MC_BEGIN(3, 3, 0, 0); 13041 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 13042 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); 13043 13044 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 13045 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13046 13047 IEM_MC_LOCAL(uint8_t, bUnmapInfo); 13012 13048 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); 13013 IEM_MC_ARG(uint16_t, u16Src, 1); 13049 IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 13050 13051 IEM_MC_ARG_CONST(uint16_t, u16Src, u16Imm, 1); 13014 13052 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); 13015 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);13016 IEM_MC_LOCAL(uint8_t, bUnmapInfo);13017 13018 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2);13019 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);13020 IEM_MC_ASSIGN(u16Src, u16Imm);13021 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();13022 IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst);13023 13053 IEM_MC_FETCH_EFLAGS(EFlags); 13024 13054 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_test_u16, pu16Dst, u16Src, pEFlags); … … 13032 13062 case IEMMODE_32BIT: 13033 13063 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); 13064 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 13065 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); 13066 13067 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 13068 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13069 13070 IEM_MC_LOCAL(uint8_t, bUnmapInfo); 13034 13071 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); 13035 IEM_MC_ARG(uint32_t, u32Src, 1); 13072 IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 13073 13074 IEM_MC_ARG_CONST(uint32_t, u32Src, u32Imm, 1); 13036 13075 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); 13037 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);13038 IEM_MC_LOCAL(uint8_t, bUnmapInfo);13039 13040 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);13041 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);13042 IEM_MC_ASSIGN(u32Src, u32Imm);13043 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();13044 IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst);13045 13076 IEM_MC_FETCH_EFLAGS(EFlags); 13046 13077 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_test_u32, pu32Dst, u32Src, pEFlags); … … 13054 13085 case IEMMODE_64BIT: 13055 13086 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); 13087 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 13088 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); 13089 13090 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); 13091 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13092 13056 13093 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); 13057 IEM_MC_ARG(uint64_t, u64Src, 1); 13094 IEM_MC_LOCAL(uint8_t, bUnmapInfo); 13095 IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 13096 13097 IEM_MC_ARG_CONST(uint64_t, u64Src, u64Imm, 1); 13058 13098 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); 13059 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);13060 IEM_MC_LOCAL(uint8_t, bUnmapInfo);13061 13062 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);13063 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);13064 IEM_MC_ASSIGN(u64Src, u64Imm);13065 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();13066 IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst);13067 13099 IEM_MC_FETCH_EFLAGS(EFlags); 13068 13100 IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_test_u64, pu64Dst, u64Src, pEFlags); -
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r101913 r101949 5479 5479 /** @todo Make the python script check that arguments aren't used after 5480 5480 * IEM_MC_CALL_XXXX. */ 5481 /** @todo There is a special with IEM_MC_MEM_MAP_U16_RW and friends requiring 5482 * a IEM_MC_MEM_COMMIT_AND_UNMAP_RW after a AIMPL call typically with 5483 * an argument value. */ 5481 5484 for (uint32_t i = cHiddenArgs; i < cArgs; i++) 5482 5485 { -
trunk/src/VBox/VMM/VMMAll/IEMAllThrdPython.py
r101732 r101949 1126 1126 or sRef.startswith('g_') 1127 1127 or sRef.startswith('iemAImpl_') 1128 or sRef in ( 'int8_t', 'int16_t', 'int32_t', 1128 or sRef in ( 'int8_t', 'int16_t', 'int32_t', 'int64_t', 1129 1129 'INT8_C', 'INT16_C', 'INT32_C', 'INT64_C', 1130 1130 'UINT8_C', 'UINT16_C', 'UINT32_C', 'UINT64_C',
Note:
See TracChangeset
for help on using the changeset viewer.