Changeset 103772 in vbox
- Timestamp:
- Mar 11, 2024 3:27:51 PM (13 months ago)
- svn:sync-xref-src-repo-rev:
- 162141
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h
r103764 r103772 5078 5078 * iemOp_Grp1_Ev_Ib. 5079 5079 */ 5080 #define IEMOP_BODY_BINARY_Ev_Ib_RW(a_ fnNormalU16, a_fnNormalU32, a_fnNormalU64) \5080 #define IEMOP_BODY_BINARY_Ev_Ib_RW(a_InsNm, a_fRegNativeArchs, a_fMemNativeArchs) \ 5081 5081 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 5082 5082 { \ … … 5096 5096 IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 5097 5097 IEM_MC_REF_EFLAGS(pEFlags); \ 5098 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU16, pu16Dst, u16Src, pEFlags); \5098 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 5099 5099 \ 5100 5100 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 5111 5111 IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 5112 5112 IEM_MC_REF_EFLAGS(pEFlags); \ 5113 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU32, pu32Dst, u32Src, pEFlags); \5113 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 5114 5114 IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm)); \ 5115 5115 \ … … 5127 5127 IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 5128 5128 IEM_MC_REF_EFLAGS(pEFlags); \ 5129 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU64, pu64Dst, u64Src, pEFlags); \5129 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 5130 5130 \ 5131 5131 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 5160 5160 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5161 5161 IEM_MC_FETCH_EFLAGS(EFlags); \ 5162 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU16, pu16Dst, u16Src, pEFlags); \5162 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 5163 5163 \ 5164 5164 IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \ … … 5183 5183 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5184 5184 IEM_MC_FETCH_EFLAGS(EFlags); \ 5185 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU32, pu32Dst, u32Src, pEFlags); \5185 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 5186 5186 \ 5187 5187 IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \ … … 5206 5206 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5207 5207 IEM_MC_FETCH_EFLAGS(EFlags); \ 5208 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU64, pu64Dst, u64Src, pEFlags); \5208 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 5209 5209 \ 5210 5210 IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \ … … 5219 5219 else \ 5220 5220 { \ 5221 (void)05222 /* Separate macro to work around parsing issue in IEMAllInstPython.py */5223 #define IEMOP_BODY_BINARY_Ev_Ib_LOCKED(a_fnLockedU16, a_fnLockedU32, a_fnLockedU64) \5224 5221 switch (pVCpu->iem.s.enmEffOpSize) \ 5225 5222 { \ … … 5239 5236 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5240 5237 IEM_MC_FETCH_EFLAGS(EFlags); \ 5241 IEM_MC_CALL_VOID_AIMPL_3( a_fnLockedU16, pu16Dst, u16Src, pEFlags); \5238 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16_locked), pu16Dst, u16Src, pEFlags); \ 5242 5239 \ 5243 5240 IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \ … … 5262 5259 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5263 5260 IEM_MC_FETCH_EFLAGS(EFlags); \ 5264 IEM_MC_CALL_VOID_AIMPL_3( a_fnLockedU32, pu32Dst, u32Src, pEFlags); \5261 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32_locked), pu32Dst, u32Src, pEFlags); \ 5265 5262 \ 5266 5263 IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \ … … 5285 5282 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5286 5283 IEM_MC_FETCH_EFLAGS(EFlags); \ 5287 IEM_MC_CALL_VOID_AIMPL_3( a_fnLockedU64, pu64Dst, u64Src, pEFlags); \5284 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64_locked), pu64Dst, u64Src, pEFlags); \ 5288 5285 \ 5289 5286 IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \ … … 5300 5297 5301 5298 /* read-only variant */ 5302 #define IEMOP_BODY_BINARY_Ev_Ib_RO(a_ fnNormalU16, a_fnNormalU32, a_fnNormalU64) \5299 #define IEMOP_BODY_BINARY_Ev_Ib_RO(a_InsNm, a_fNativeArchs) \ 5303 5300 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 5304 5301 { \ … … 5312 5309 IEM_MC_BEGIN(3, 0, 0, 0); \ 5313 5310 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 5314 IEM_MC_ARG(uint16_t *,pu16Dst, 0); \5315 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ (uint16_t)(int16_t)(int8_t)u8Imm, 1); \5316 IEM_MC_ARG(uint32_t *, pEFlags, 2); \5311 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 5312 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ (uint16_t)(int16_t)(int8_t)u8Imm, 1); \ 5313 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 5317 5314 \ 5318 IEM_MC_REF_GREG_U16 (pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \5315 IEM_MC_REF_GREG_U16_CONST(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 5319 5316 IEM_MC_REF_EFLAGS(pEFlags); \ 5320 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU16, pu16Dst, u16Src, pEFlags); \5317 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 5321 5318 \ 5322 5319 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 5327 5324 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 5328 5325 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 5329 IEM_MC_ARG(uint32_t *,pu32Dst, 0); \5330 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ (uint32_t)(int32_t)(int8_t)u8Imm, 1); \5331 IEM_MC_ARG(uint32_t *, pEFlags, 2); \5326 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 5327 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ (uint32_t)(int32_t)(int8_t)u8Imm, 1); \ 5328 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 5332 5329 \ 5333 IEM_MC_REF_GREG_U32 (pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \5330 IEM_MC_REF_GREG_U32_CONST(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 5334 5331 IEM_MC_REF_EFLAGS(pEFlags); \ 5335 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU32, pu32Dst, u32Src, pEFlags); \5332 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 5336 5333 \ 5337 5334 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 5342 5339 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 5343 5340 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 5344 IEM_MC_ARG(uint64_t *,pu64Dst, 0); \5345 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ (uint64_t)(int64_t)(int8_t)u8Imm, 1); \5346 IEM_MC_ARG(uint32_t *, pEFlags, 2); \5341 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 5342 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ (uint64_t)(int64_t)(int8_t)u8Imm, 1); \ 5343 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 5347 5344 \ 5348 IEM_MC_REF_GREG_U64 (pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \5345 IEM_MC_REF_GREG_U64_CONST(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 5349 5346 IEM_MC_REF_EFLAGS(pEFlags); \ 5350 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU64, pu64Dst, u64Src, pEFlags); \5347 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 5351 5348 \ 5352 5349 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 5381 5378 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5382 5379 IEM_MC_FETCH_EFLAGS(EFlags); \ 5383 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU16, pu16Dst, u16Src, pEFlags); \5380 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 5384 5381 \ 5385 5382 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ … … 5404 5401 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5405 5402 IEM_MC_FETCH_EFLAGS(EFlags); \ 5406 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU32, pu32Dst, u32Src, pEFlags); \5403 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 5407 5404 \ 5408 5405 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ … … 5427 5424 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 5428 5425 IEM_MC_FETCH_EFLAGS(EFlags); \ 5429 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU64, pu64Dst, u64Src, pEFlags); \5426 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 5430 5427 \ 5431 5428 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ … … 5454 5451 { 5455 5452 IEMOP_MNEMONIC(add_Ev_Ib, "add Ev,Ib"); 5456 IEMOP_BODY_BINARY_Ev_Ib_RW( iemAImpl_add_u16, iemAImpl_add_u32, iemAImpl_add_u64); 5457 IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_add_u16_locked, iemAImpl_add_u32_locked, iemAImpl_add_u64_locked); 5453 IEMOP_BODY_BINARY_Ev_Ib_RW(add, 0, 0); 5458 5454 } 5459 5455 … … 5467 5463 { 5468 5464 IEMOP_MNEMONIC(or_Ev_Ib, "or Ev,Ib"); 5469 IEMOP_BODY_BINARY_Ev_Ib_RW( iemAImpl_or_u16, iemAImpl_or_u32, iemAImpl_or_u64); 5470 IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_or_u16_locked, iemAImpl_or_u32_locked, iemAImpl_or_u64_locked); 5465 IEMOP_BODY_BINARY_Ev_Ib_RW(or, 0, 0); 5471 5466 } 5472 5467 … … 5480 5475 { 5481 5476 IEMOP_MNEMONIC(adc_Ev_Ib, "adc Ev,Ib"); 5482 IEMOP_BODY_BINARY_Ev_Ib_RW( iemAImpl_adc_u16, iemAImpl_adc_u32, iemAImpl_adc_u64); 5483 IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_adc_u16_locked, iemAImpl_adc_u32_locked, iemAImpl_adc_u64_locked); 5477 IEMOP_BODY_BINARY_Ev_Ib_RW(adc, 0, 0); 5484 5478 } 5485 5479 … … 5493 5487 { 5494 5488 IEMOP_MNEMONIC(sbb_Ev_Ib, "sbb Ev,Ib"); 5495 IEMOP_BODY_BINARY_Ev_Ib_RW( iemAImpl_sbb_u16, iemAImpl_sbb_u32, iemAImpl_sbb_u64); 5496 IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_sbb_u16_locked, iemAImpl_sbb_u32_locked, iemAImpl_sbb_u64_locked); 5489 IEMOP_BODY_BINARY_Ev_Ib_RW(sbb, 0, 0); 5497 5490 } 5498 5491 … … 5506 5499 { 5507 5500 IEMOP_MNEMONIC(and_Ev_Ib, "and Ev,Ib"); 5508 IEMOP_BODY_BINARY_Ev_Ib_RW( iemAImpl_and_u16, iemAImpl_and_u32, iemAImpl_and_u64); 5509 IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_and_u16_locked, iemAImpl_and_u32_locked, iemAImpl_and_u64_locked); 5501 IEMOP_BODY_BINARY_Ev_Ib_RW(and, 0, 0); 5510 5502 } 5511 5503 … … 5519 5511 { 5520 5512 IEMOP_MNEMONIC(sub_Ev_Ib, "sub Ev,Ib"); 5521 IEMOP_BODY_BINARY_Ev_Ib_RW( iemAImpl_sub_u16, iemAImpl_sub_u32, iemAImpl_sub_u64); 5522 IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_sub_u16_locked, iemAImpl_sub_u32_locked, iemAImpl_sub_u64_locked); 5513 IEMOP_BODY_BINARY_Ev_Ib_RW(sub, 0, 0); 5523 5514 } 5524 5515 … … 5532 5523 { 5533 5524 IEMOP_MNEMONIC(xor_Ev_Ib, "xor Ev,Ib"); 5534 IEMOP_BODY_BINARY_Ev_Ib_RW( iemAImpl_xor_u16, iemAImpl_xor_u32, iemAImpl_xor_u64); 5535 IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_xor_u16_locked, iemAImpl_xor_u32_locked, iemAImpl_xor_u64_locked); 5525 IEMOP_BODY_BINARY_Ev_Ib_RW(xor, 0, 0); 5536 5526 } 5537 5527 … … 5545 5535 { 5546 5536 IEMOP_MNEMONIC(cmp_Ev_Ib, "cmp Ev,Ib"); 5547 IEMOP_BODY_BINARY_Ev_Ib_RO( iemAImpl_cmp_u16, iemAImpl_cmp_u32, iemAImpl_cmp_u64);5537 IEMOP_BODY_BINARY_Ev_Ib_RO(cmp, 0); 5548 5538 } 5549 5539
Note:
See TracChangeset
for help on using the changeset viewer.