- Timestamp:
- Apr 5, 2024 8:57:55 PM (10 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r104206 r104207 1317 1317 ; coding. 1318 1318 ; 1319 ; All the functions takes a pointer to the destination memory operand in A 0,1320 ; the source register operand in A 1 and a pointer to eflags in A2.1319 ; All the functions takes a pointer to the destination memory operand in A1, 1320 ; the source register operand in A2 and incoming eflags in A0. 1321 1321 ; 1322 1322 ; @param 1 The instruction mnemonic. … … 1329 1329 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u16, 12 1330 1330 PROLOGUE_3_ARGS 1331 IEM_MAYBE_LOAD_FLAGS _OLD A2, %3, %4, 01332 %1 word [A 0], A1_161333 IEM_SAVE_FLAGS_ OLD A2, %3, %4, 01331 IEM_MAYBE_LOAD_FLAGS A0_32, %3, %4, 0 1332 %1 word [A1], A2_16 1333 IEM_SAVE_FLAGS_RETVAL A0_32, %3, %4, 0 1334 1334 EPILOGUE_3_ARGS 1335 1335 ENDPROC iemAImpl_ %+ %1 %+ _u16 … … 1337 1337 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u32, 12 1338 1338 PROLOGUE_3_ARGS 1339 IEM_MAYBE_LOAD_FLAGS _OLD A2, %3, %4, 01340 %1 dword [A 0], A1_321341 IEM_SAVE_FLAGS_ OLD A2, %3, %4, 01339 IEM_MAYBE_LOAD_FLAGS A0_32, %3, %4, 0 1340 %1 dword [A1], A2_32 1341 IEM_SAVE_FLAGS_RETVAL A0_32, %3, %4, 0 1342 1342 EPILOGUE_3_ARGS 1343 1343 ENDPROC iemAImpl_ %+ %1 %+ _u32 … … 1346 1346 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 16 1347 1347 PROLOGUE_3_ARGS 1348 IEM_MAYBE_LOAD_FLAGS _OLD A2, %3, %4, 01349 %1 qword [A 0], A11350 IEM_SAVE_FLAGS_ OLD A2, %3, %4, 01348 IEM_MAYBE_LOAD_FLAGS A0_32, %3, %4, 0 1349 %1 qword [A1], A2 1350 IEM_SAVE_FLAGS_RETVAL A0_32, %3, %4, 0 1351 1351 EPILOGUE_3_ARGS_EX 8 1352 1352 ENDPROC iemAImpl_ %+ %1 %+ _u64 … … 1357 1357 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u16_locked, 12 1358 1358 PROLOGUE_3_ARGS 1359 IEM_MAYBE_LOAD_FLAGS _OLD A2, %3, %4, 01360 lock %1 word [A 0], A1_161361 IEM_SAVE_FLAGS_ OLD A2, %3, %4, 01359 IEM_MAYBE_LOAD_FLAGS A0_32, %3, %4, 0 1360 lock %1 word [A1], A2_16 1361 IEM_SAVE_FLAGS_RETVAL A0_32, %3, %4, 0 1362 1362 EPILOGUE_3_ARGS 1363 1363 ENDPROC iemAImpl_ %+ %1 %+ _u16_locked … … 1365 1365 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u32_locked, 12 1366 1366 PROLOGUE_3_ARGS 1367 IEM_MAYBE_LOAD_FLAGS _OLD A2, %3, %4, 01368 lock %1 dword [A 0], A1_321369 IEM_SAVE_FLAGS_ OLD A2, %3, %4, 01367 IEM_MAYBE_LOAD_FLAGS A0_32, %3, %4, 0 1368 lock %1 dword [A1], A2_32 1369 IEM_SAVE_FLAGS_RETVAL A0_32, %3, %4, 0 1370 1370 EPILOGUE_3_ARGS 1371 1371 ENDPROC iemAImpl_ %+ %1 %+ _u32_locked … … 1374 1374 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64_locked, 16 1375 1375 PROLOGUE_3_ARGS 1376 IEM_MAYBE_LOAD_FLAGS _OLD A2, %3, %4, 01377 lock %1 qword [A 0], A11378 IEM_SAVE_FLAGS_ OLD A2, %3, %4, 01376 IEM_MAYBE_LOAD_FLAGS A0_32, %3, %4, 0 1377 lock %1 qword [A1], A2 1378 IEM_SAVE_FLAGS_RETVAL A0_32, %3, %4, 0 1379 1379 EPILOGUE_3_ARGS_EX 8 1380 1380 ENDPROC iemAImpl_ %+ %1 %+ _u64_locked -
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r104206 r104207 1205 1205 */ 1206 1206 1207 IEM_DECL_IMPL_DEF( void, iemAImpl_bt_u64,(uint64_t const *puDst, uint64_t uSrc, uint32_t *pfEFlags))1207 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bt_u64,(uint32_t fEFlags, uint64_t const *puDst, uint64_t uSrc)) 1208 1208 { 1209 1209 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. However, it seems they're … … 1212 1212 uint64_t uDst = *puDst; 1213 1213 if (uDst & RT_BIT_64(uSrc)) 1214 *pfEFlags |= X86_EFL_CF;1214 fEFlags |= X86_EFL_CF; 1215 1215 else 1216 *pfEFlags &= ~X86_EFL_CF; 1216 fEFlags &= ~X86_EFL_CF; 1217 return fEFlags; 1217 1218 } 1218 1219 1219 1220 # if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) 1220 1221 1221 IEM_DECL_IMPL_DEF( void, iemAImpl_bt_u32,(uint32_t const *puDst, uint32_t uSrc, uint32_t *pfEFlags))1222 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bt_u32,(uint32_t fEFlags, uint32_t const *puDst, uint32_t uSrc)) 1222 1223 { 1223 1224 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. However, it seems they're … … 1226 1227 uint32_t uDst = *puDst; 1227 1228 if (uDst & RT_BIT_32(uSrc)) 1228 *pfEFlags |= X86_EFL_CF;1229 fEFlags |= X86_EFL_CF; 1229 1230 else 1230 *pfEFlags &= ~X86_EFL_CF; 1231 } 1232 1233 IEM_DECL_IMPL_DEF(void, iemAImpl_bt_u16,(uint16_t const *puDst, uint16_t uSrc, uint32_t *pfEFlags)) 1231 fEFlags &= ~X86_EFL_CF; 1232 return fEFlags; 1233 } 1234 1235 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bt_u16,(uint32_t fEFlags, uint16_t const *puDst, uint16_t uSrc)) 1234 1236 { 1235 1237 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. However, it seems they're … … 1238 1240 uint16_t uDst = *puDst; 1239 1241 if (uDst & RT_BIT_32(uSrc)) 1240 *pfEFlags |= X86_EFL_CF;1242 fEFlags |= X86_EFL_CF; 1241 1243 else 1242 *pfEFlags &= ~X86_EFL_CF; 1244 fEFlags &= ~X86_EFL_CF; 1245 return fEFlags; 1243 1246 } 1244 1247 … … 1249 1252 */ 1250 1253 1251 IEM_DECL_IMPL_DEF( void, iemAImpl_btc_u64,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))1254 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btc_u64,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc)) 1252 1255 { 1253 1256 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. However, it seems they're … … 1260 1263 uDst &= ~fMask; 1261 1264 *puDst = uDst; 1262 *pfEFlags |= X86_EFL_CF;1265 fEFlags |= X86_EFL_CF; 1263 1266 } 1264 1267 else … … 1266 1269 uDst |= fMask; 1267 1270 *puDst = uDst; 1268 *pfEFlags &= ~X86_EFL_CF; 1269 } 1271 fEFlags &= ~X86_EFL_CF; 1272 } 1273 return fEFlags; 1270 1274 } 1271 1275 1272 1276 # if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) 1273 1277 1274 IEM_DECL_IMPL_DEF( void, iemAImpl_btc_u32,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))1278 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btc_u32,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc)) 1275 1279 { 1276 1280 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. However, it seems they're … … 1283 1287 uDst &= ~fMask; 1284 1288 *puDst = uDst; 1285 *pfEFlags |= X86_EFL_CF;1289 fEFlags |= X86_EFL_CF; 1286 1290 } 1287 1291 else … … 1289 1293 uDst |= fMask; 1290 1294 *puDst = uDst; 1291 *pfEFlags &= ~X86_EFL_CF; 1292 } 1293 } 1294 1295 1296 IEM_DECL_IMPL_DEF(void, iemAImpl_btc_u16,(uint16_t *puDst, uint16_t uSrc, uint32_t *pfEFlags)) 1295 fEFlags &= ~X86_EFL_CF; 1296 } 1297 return fEFlags; 1298 } 1299 1300 1301 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btc_u16,(uint32_t fEFlags, uint16_t *puDst, uint16_t uSrc)) 1297 1302 { 1298 1303 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. However, it seems they're … … 1305 1310 uDst &= ~fMask; 1306 1311 *puDst = uDst; 1307 *pfEFlags |= X86_EFL_CF;1312 fEFlags |= X86_EFL_CF; 1308 1313 } 1309 1314 else … … 1311 1316 uDst |= fMask; 1312 1317 *puDst = uDst; 1313 *pfEFlags &= ~X86_EFL_CF; 1314 } 1318 fEFlags &= ~X86_EFL_CF; 1319 } 1320 return fEFlags; 1315 1321 } 1316 1322 … … 1321 1327 */ 1322 1328 1323 IEM_DECL_IMPL_DEF( void, iemAImpl_btr_u64,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))1329 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btr_u64,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc)) 1324 1330 { 1325 1331 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. We set them as after an … … 1332 1338 uDst &= ~fMask; 1333 1339 *puDst = uDst; 1334 *pfEFlags |= X86_EFL_CF;1340 fEFlags |= X86_EFL_CF; 1335 1341 } 1336 1342 else 1337 *pfEFlags &= ~X86_EFL_CF; 1343 fEFlags &= ~X86_EFL_CF; 1344 return fEFlags; 1338 1345 } 1339 1346 1340 1347 # if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) 1341 1348 1342 IEM_DECL_IMPL_DEF( void, iemAImpl_btr_u32,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))1349 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btr_u32,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc)) 1343 1350 { 1344 1351 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. We set them as after an … … 1351 1358 uDst &= ~fMask; 1352 1359 *puDst = uDst; 1353 *pfEFlags |= X86_EFL_CF;1360 fEFlags |= X86_EFL_CF; 1354 1361 } 1355 1362 else 1356 *pfEFlags &= ~X86_EFL_CF; 1357 } 1358 1359 1360 IEM_DECL_IMPL_DEF(void, iemAImpl_btr_u16,(uint16_t *puDst, uint16_t uSrc, uint32_t *pfEFlags)) 1363 fEFlags &= ~X86_EFL_CF; 1364 return fEFlags; 1365 } 1366 1367 1368 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btr_u16,(uint32_t fEFlags, uint16_t *puDst, uint16_t uSrc)) 1361 1369 { 1362 1370 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. We set them as after an … … 1369 1377 uDst &= ~fMask; 1370 1378 *puDst = uDst; 1371 *pfEFlags |= X86_EFL_CF;1379 fEFlags |= X86_EFL_CF; 1372 1380 } 1373 1381 else 1374 *pfEFlags &= ~X86_EFL_CF; 1382 fEFlags &= ~X86_EFL_CF; 1383 return fEFlags; 1375 1384 } 1376 1385 … … 1381 1390 */ 1382 1391 1383 IEM_DECL_IMPL_DEF( void, iemAImpl_bts_u64,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))1392 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bts_u64,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc)) 1384 1393 { 1385 1394 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. We set them as after an … … 1389 1398 uint64_t uDst = *puDst; 1390 1399 if (uDst & fMask) 1391 *pfEFlags |= X86_EFL_CF;1400 fEFlags |= X86_EFL_CF; 1392 1401 else 1393 1402 { 1394 1403 uDst |= fMask; 1395 1404 *puDst = uDst; 1396 *pfEFlags &= ~X86_EFL_CF; 1397 } 1405 fEFlags &= ~X86_EFL_CF; 1406 } 1407 return fEFlags; 1398 1408 } 1399 1409 1400 1410 # if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) 1401 1411 1402 IEM_DECL_IMPL_DEF( void, iemAImpl_bts_u32,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))1412 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bts_u32,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc)) 1403 1413 { 1404 1414 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. We set them as after an … … 1408 1418 uint32_t uDst = *puDst; 1409 1419 if (uDst & fMask) 1410 *pfEFlags |= X86_EFL_CF;1420 fEFlags |= X86_EFL_CF; 1411 1421 else 1412 1422 { 1413 1423 uDst |= fMask; 1414 1424 *puDst = uDst; 1415 *pfEFlags &= ~X86_EFL_CF; 1416 } 1417 } 1418 1419 1420 IEM_DECL_IMPL_DEF(void, iemAImpl_bts_u16,(uint16_t *puDst, uint16_t uSrc, uint32_t *pfEFlags)) 1425 fEFlags &= ~X86_EFL_CF; 1426 } 1427 return fEFlags; 1428 } 1429 1430 1431 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bts_u16,(uint32_t fEFlags, uint16_t *puDst, uint16_t uSrc)) 1421 1432 { 1422 1433 /* Note! "undefined" flags: OF, SF, ZF, AF, PF. We set them as after an … … 1426 1437 uint32_t uDst = *puDst; 1427 1438 if (uDst & fMask) 1428 *pfEFlags |= X86_EFL_CF;1439 fEFlags |= X86_EFL_CF; 1429 1440 else 1430 1441 { 1431 1442 uDst |= fMask; 1432 1443 *puDst = uDst; 1433 *pfEFlags &= ~X86_EFL_CF; 1434 } 1444 fEFlags &= ~X86_EFL_CF; 1445 } 1446 return fEFlags; 1435 1447 } 1436 1448 1437 1449 # endif /* !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) */ 1438 1450 1439 1440 /** 64-bit locked binary operand operation. */ 1441 # define DO_LOCKED_BIN_TODO_OP(a_Mnemonic, a_cBitsWidth) \ 1442 do { \ 1443 uint ## a_cBitsWidth ## _t uOld = ASMAtomicUoReadU ## a_cBitsWidth(puDst); \ 1444 uint ## a_cBitsWidth ## _t uTmp; \ 1445 uint32_t fEflTmp; \ 1446 do \ 1447 { \ 1448 uTmp = uOld; \ 1449 fEflTmp = *pfEFlags; \ 1450 iemAImpl_ ## a_Mnemonic ## _u ## a_cBitsWidth(&uTmp, uSrc, &fEflTmp); \ 1451 } while (!ASMAtomicCmpXchgExU ## a_cBitsWidth(puDst, uTmp, uOld, &uOld)); \ 1452 *pfEFlags = fEflTmp; \ 1453 } while (0) 1454 1455 1456 #define EMIT_LOCKED_BIN_TODO_OP(a_Mnemonic, a_cBitsWidth) \ 1457 IEM_DECL_IMPL_DEF(void, iemAImpl_ ## a_Mnemonic ## _u ## a_cBitsWidth ## _locked,(uint ## a_cBitsWidth ## _t *puDst, \ 1458 uint ## a_cBitsWidth ## _t uSrc, \ 1459 uint32_t *pfEFlags)) \ 1460 { \ 1461 DO_LOCKED_BIN_TODO_OP(a_Mnemonic, a_cBitsWidth); \ 1462 } 1463 1464 1465 EMIT_LOCKED_BIN_TODO_OP(btc, 64) 1466 EMIT_LOCKED_BIN_TODO_OP(btr, 64) 1467 EMIT_LOCKED_BIN_TODO_OP(bts, 64) 1451 EMIT_LOCKED_BIN_OP(btc, 64) 1452 EMIT_LOCKED_BIN_OP(btr, 64) 1453 EMIT_LOCKED_BIN_OP(bts, 64) 1468 1454 # if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) 1469 EMIT_LOCKED_BIN_ TODO_OP(btc, 32)1470 EMIT_LOCKED_BIN_ TODO_OP(btr, 32)1471 EMIT_LOCKED_BIN_ TODO_OP(bts, 32)1472 1473 EMIT_LOCKED_BIN_ TODO_OP(btc, 16)1474 EMIT_LOCKED_BIN_ TODO_OP(btr, 16)1475 EMIT_LOCKED_BIN_ TODO_OP(bts, 16)1455 EMIT_LOCKED_BIN_OP(btc, 32) 1456 EMIT_LOCKED_BIN_OP(btr, 32) 1457 EMIT_LOCKED_BIN_OP(bts, 32) 1458 1459 EMIT_LOCKED_BIN_OP(btc, 16) 1460 EMIT_LOCKED_BIN_OP(btr, 16) 1461 EMIT_LOCKED_BIN_OP(bts, 16) 1476 1462 # endif /* !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) */ 1477 1463 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r104206 r104207 8740 8740 IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \ 8741 8741 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8742 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \8743 IEM_MC_ARG(uint16_t, u16Src, 1); \8744 IEM_MC_ARG(uint32_t *, pEFlags, 2); \8745 8742 \ 8743 IEM_MC_ARG(uint16_t, u16Src, 2); \ 8746 8744 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8747 8745 IEM_MC_AND_LOCAL_U16(u16Src, 0xf); \ 8746 IEM_MC_ARG(uint16_t *, pu16Dst, 1); \ 8748 8747 IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 8749 IEM_MC_REF_EFLAGS(pEFlags); \ 8750 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ 8748 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 8749 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \ 8750 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 8751 8751 \ 8752 8752 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 8757 8757 IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \ 8758 8758 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8759 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \8760 IEM_MC_ARG(uint32_t, u32Src, 1); \8761 IEM_MC_ARG(uint32_t *, pEFlags, 2); \8762 8759 \ 8760 IEM_MC_ARG(uint32_t, u32Src, 2); \ 8763 8761 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8764 8762 IEM_MC_AND_LOCAL_U32(u32Src, 0x1f); \ 8763 IEM_MC_ARG(uint32_t *, pu32Dst, 1); \ 8765 8764 IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 8766 IEM_MC_REF_EFLAGS(pEFlags); \ 8767 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ 8765 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 8766 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \ 8767 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 8768 8768 \ 8769 8769 IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm)); \ … … 8775 8775 IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \ 8776 8776 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8777 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \8778 IEM_MC_ARG(uint64_t, u64Src, 1); \8779 IEM_MC_ARG(uint32_t *, pEFlags, 2); \8780 8777 \ 8778 IEM_MC_ARG(uint64_t, u64Src, 2); \ 8781 8779 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8782 8780 IEM_MC_AND_LOCAL_U64(u64Src, 0x3f); \ 8781 IEM_MC_ARG(uint64_t *, pu64Dst, 1); \ 8783 8782 IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 8784 IEM_MC_REF_EFLAGS(pEFlags); \ 8785 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ 8783 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 8784 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \ 8785 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 8786 8786 \ 8787 8787 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 8806 8806 IEMOP_HLP_DONE_DECODING(); \ 8807 8807 \ 8808 IEM_MC_ARG(uint16_t, u16Src, 1); \8808 IEM_MC_ARG(uint16_t, u16Src, 2); \ 8809 8809 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8810 8810 IEM_MC_LOCAL_ASSIGN(int16_t, i16AddrAdj, /*=*/ u16Src); \ … … 8815 8815 \ 8816 8816 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 8817 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \8817 IEM_MC_ARG(uint16_t *, pu16Dst, 1); \ 8818 8818 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 8819 8819 \ 8820 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags, 2); \8821 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \8820 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 8821 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \ 8822 8822 \ 8823 8823 IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \ 8824 IEM_MC_COMMIT_EFLAGS( EFlags); \8824 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 8825 8825 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 8826 8826 IEM_MC_END(); \ … … 8833 8833 IEMOP_HLP_DONE_DECODING(); \ 8834 8834 \ 8835 IEM_MC_ARG(uint32_t, u32Src, 1); \8835 IEM_MC_ARG(uint32_t, u32Src, 2); \ 8836 8836 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8837 8837 IEM_MC_LOCAL_ASSIGN(int32_t, i32AddrAdj, /*=*/ u32Src); \ … … 8842 8842 \ 8843 8843 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 8844 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \8844 IEM_MC_ARG(uint32_t *, pu32Dst, 1); \ 8845 8845 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 8846 8846 \ 8847 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags, 2); \8848 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \8847 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 8848 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \ 8849 8849 \ 8850 8850 IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \ 8851 IEM_MC_COMMIT_EFLAGS( EFlags); \8851 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 8852 8852 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 8853 8853 IEM_MC_END(); \ … … 8860 8860 IEMOP_HLP_DONE_DECODING(); \ 8861 8861 \ 8862 IEM_MC_ARG(uint64_t, u64Src, 1); \8862 IEM_MC_ARG(uint64_t, u64Src, 2); \ 8863 8863 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8864 8864 IEM_MC_LOCAL_ASSIGN(int64_t, i64AddrAdj, /*=*/ u64Src); \ … … 8869 8869 \ 8870 8870 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 8871 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \8871 IEM_MC_ARG(uint64_t *, pu64Dst, 1); \ 8872 8872 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 8873 8873 \ 8874 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags, 2); \8875 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \8874 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 8875 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \ 8876 8876 \ 8877 8877 IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \ 8878 IEM_MC_COMMIT_EFLAGS( EFlags); \8878 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 8879 8879 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 8880 8880 IEM_MC_END(); \ … … 8897 8897 IEMOP_HLP_DONE_DECODING(); \ 8898 8898 \ 8899 IEM_MC_ARG(uint16_t, u16Src, 1); \8899 IEM_MC_ARG(uint16_t, u16Src, 2); \ 8900 8900 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8901 8901 IEM_MC_LOCAL_ASSIGN(int16_t, i16AddrAdj, /*=*/ u16Src); \ … … 8906 8906 \ 8907 8907 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 8908 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \8908 IEM_MC_ARG(uint16_t *, pu16Dst, 1); \ 8909 8909 IEM_MC_MEM_MAP_U16_ATOMIC(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 8910 8910 \ 8911 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags, 2); \8912 IEM_MC_CALL_ VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \8911 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 8912 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU16, fEFlagsIn, pu16Dst, u16Src); \ 8913 8913 \ 8914 8914 IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \ 8915 IEM_MC_COMMIT_EFLAGS( EFlags); \8915 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 8916 8916 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 8917 8917 IEM_MC_END(); \ … … 8924 8924 IEMOP_HLP_DONE_DECODING(); \ 8925 8925 \ 8926 IEM_MC_ARG(uint32_t, u32Src, 1); \8926 IEM_MC_ARG(uint32_t, u32Src, 2); \ 8927 8927 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8928 8928 IEM_MC_LOCAL_ASSIGN(int32_t, i32AddrAdj, /*=*/ u32Src); \ … … 8933 8933 \ 8934 8934 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 8935 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \8935 IEM_MC_ARG(uint32_t *, pu32Dst, 1); \ 8936 8936 IEM_MC_MEM_MAP_U32_ATOMIC(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 8937 8937 \ 8938 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags, 2); \8939 IEM_MC_CALL_ VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \8938 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 8939 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU32, fEFlagsIn, pu32Dst, u32Src); \ 8940 8940 \ 8941 8941 IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \ 8942 IEM_MC_COMMIT_EFLAGS( EFlags); \8942 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 8943 8943 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 8944 8944 IEM_MC_END(); \ … … 8951 8951 IEMOP_HLP_DONE_DECODING(); \ 8952 8952 \ 8953 IEM_MC_ARG(uint64_t, u64Src, 1); \8953 IEM_MC_ARG(uint64_t, u64Src, 2); \ 8954 8954 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8955 8955 IEM_MC_LOCAL_ASSIGN(int64_t, i64AddrAdj, /*=*/ u64Src); \ … … 8960 8960 \ 8961 8961 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 8962 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \8962 IEM_MC_ARG(uint64_t *, pu64Dst, 1); \ 8963 8963 IEM_MC_MEM_MAP_U64_ATOMIC(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 8964 8964 \ 8965 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags, 2); \8966 IEM_MC_CALL_ VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \8965 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 8966 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU64, fEFlagsIn, pu64Dst, u64Src); \ 8967 8967 \ 8968 8968 IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \ 8969 IEM_MC_COMMIT_EFLAGS( EFlags); \8969 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 8970 8970 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 8971 8971 IEM_MC_END(); \ … … 8991 8991 IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \ 8992 8992 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8993 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \8994 IEM_MC_ARG(uint16_t, u16Src, 1); \8995 IEM_MC_ARG(uint32_t *, pEFlags, 2); \8996 8993 \ 8994 IEM_MC_ARG(uint16_t, u16Src, 2); \ 8997 8995 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 8998 8996 IEM_MC_AND_LOCAL_U16(u16Src, 0xf); \ 8997 IEM_MC_ARG(uint16_t const *, pu16Dst, 1); \ 8999 8998 IEM_MC_REF_GREG_U16_CONST(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 9000 IEM_MC_REF_EFLAGS(pEFlags); \ 9001 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ 8999 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 9000 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \ 9001 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 9002 9002 \ 9003 9003 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 9008 9008 IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \ 9009 9009 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9010 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \9011 IEM_MC_ARG(uint32_t, u32Src, 1); \9012 IEM_MC_ARG(uint32_t *, pEFlags, 2); \9013 9010 \ 9011 IEM_MC_ARG(uint32_t, u32Src, 2); \ 9014 9012 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 9015 9013 IEM_MC_AND_LOCAL_U32(u32Src, 0x1f); \ 9014 IEM_MC_ARG(uint32_t const *, pu32Dst, 1); \ 9016 9015 IEM_MC_REF_GREG_U32_CONST(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 9017 IEM_MC_REF_EFLAGS(pEFlags); \ 9018 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ 9016 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 9017 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \ 9018 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 9019 9019 \ 9020 9020 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 9025 9025 IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \ 9026 9026 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9027 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \9028 IEM_MC_ARG(uint64_t, u64Src, 1); \9029 IEM_MC_ARG(uint32_t *, pEFlags, 2); \9030 9027 \ 9028 IEM_MC_ARG(uint64_t, u64Src, 2); \ 9031 9029 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 9032 9030 IEM_MC_AND_LOCAL_U64(u64Src, 0x3f); \ 9031 IEM_MC_ARG(uint64_t const *, pu64Dst, 1); \ 9033 9032 IEM_MC_REF_GREG_U64_CONST(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 9034 IEM_MC_REF_EFLAGS(pEFlags); \ 9035 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ 9033 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 9034 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \ 9035 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 9036 9036 \ 9037 9037 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 9056 9056 IEMOP_HLP_DONE_DECODING(); \ 9057 9057 \ 9058 IEM_MC_ARG(uint16_t, u16Src, 1); \9058 IEM_MC_ARG(uint16_t, u16Src, 2); \ 9059 9059 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 9060 9060 IEM_MC_LOCAL_ASSIGN(int16_t, i16AddrAdj, /*=*/ u16Src); \ … … 9065 9065 \ 9066 9066 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 9067 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \9067 IEM_MC_ARG(uint16_t const *, pu16Dst, 1); \ 9068 9068 IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9069 9069 \ 9070 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags, 2); \9071 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \9070 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 9071 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \ 9072 9072 \ 9073 9073 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ 9074 IEM_MC_COMMIT_EFLAGS( EFlags); \9074 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 9075 9075 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 9076 9076 IEM_MC_END(); \ … … 9083 9083 IEMOP_HLP_DONE_DECODING(); \ 9084 9084 \ 9085 IEM_MC_ARG(uint32_t, u32Src, 1); \9085 IEM_MC_ARG(uint32_t, u32Src, 2); \ 9086 9086 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 9087 9087 IEM_MC_LOCAL_ASSIGN(int32_t, i32AddrAdj, /*=*/ u32Src); \ … … 9091 9091 IEM_MC_ADD_LOCAL_S32_TO_EFF_ADDR(GCPtrEffDst, i32AddrAdj); \ 9092 9092 \ 9093 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \9093 IEM_MC_ARG(uint32_t const *, pu32Dst, 1); \ 9094 9094 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 9095 9095 IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9096 9096 \ 9097 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags, 2); \9098 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \9097 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 9098 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \ 9099 9099 \ 9100 9100 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ 9101 IEM_MC_COMMIT_EFLAGS( EFlags); \9101 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 9102 9102 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 9103 9103 IEM_MC_END(); \ … … 9110 9110 IEMOP_HLP_DONE_DECODING(); \ 9111 9111 \ 9112 IEM_MC_ARG(uint64_t, u64Src, 1); \9112 IEM_MC_ARG(uint64_t, u64Src, 2); \ 9113 9113 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \ 9114 9114 IEM_MC_LOCAL_ASSIGN(int64_t, i64AddrAdj, /*=*/ u64Src); \ … … 9119 9119 \ 9120 9120 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 9121 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \9121 IEM_MC_ARG(uint64_t const *, pu64Dst, 1); \ 9122 9122 IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 9123 9123 \ 9124 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags, 2); \9125 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \9124 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 9125 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \ 9126 9126 \ 9127 9127 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ 9128 IEM_MC_COMMIT_EFLAGS( EFlags); \9128 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 9129 9129 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 9130 9130 IEM_MC_END(); \ … … 10546 10546 IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \ 10547 10547 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10548 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 10549 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 1); \ 10550 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 10551 \ 10548 IEM_MC_ARG(uint16_t *, pu16Dst, 1); \ 10552 10549 IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 10553 IEM_MC_REF_EFLAGS(pEFlags); \ 10554 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ 10550 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10551 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 2); \ 10552 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \ 10553 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10555 10554 \ 10556 10555 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 10561 10560 IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \ 10562 10561 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10563 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 10564 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 1); \ 10565 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 10566 \ 10562 IEM_MC_ARG(uint32_t *, pu32Dst, 1); \ 10567 10563 IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 10568 IEM_MC_REF_EFLAGS(pEFlags); \ 10569 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ 10564 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10565 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 2); \ 10566 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \ 10567 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10570 10568 \ 10571 10569 IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm)); \ … … 10577 10575 IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \ 10578 10576 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10579 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 10580 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 1); \ 10581 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 10582 \ 10577 IEM_MC_ARG(uint64_t *, pu64Dst, 1); \ 10583 10578 IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 10584 IEM_MC_REF_EFLAGS(pEFlags); \ 10585 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ 10579 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10580 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 2); \ 10581 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \ 10582 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10586 10583 \ 10587 10584 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 10609 10606 \ 10610 10607 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 10611 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \10608 IEM_MC_ARG(uint16_t *, pu16Dst, 1); \ 10612 10609 IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10613 10610 \ 10614 IEM_MC_ARG_ CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 1); \10615 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags,2); \10616 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \10611 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10612 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 2); \ 10613 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \ 10617 10614 \ 10618 10615 IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \ 10619 IEM_MC_COMMIT_EFLAGS( EFlags); \10616 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10620 10617 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10621 10618 IEM_MC_END(); \ … … 10631 10628 \ 10632 10629 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 10633 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \10630 IEM_MC_ARG(uint32_t *, pu32Dst, 1); \ 10634 10631 IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10635 10632 \ 10636 IEM_MC_ARG_ CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 1); \10637 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags,2); \10638 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \10633 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10634 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 2); \ 10635 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \ 10639 10636 \ 10640 10637 IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \ 10641 IEM_MC_COMMIT_EFLAGS( EFlags); \10638 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10642 10639 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10643 10640 IEM_MC_END(); \ … … 10653 10650 \ 10654 10651 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 10655 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \10652 IEM_MC_ARG(uint64_t *, pu64Dst, 1); \ 10656 10653 IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10657 10654 \ 10658 IEM_MC_ARG_ CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 1); \10659 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags,2); \10660 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \10655 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10656 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 2); \ 10657 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \ 10661 10658 \ 10662 10659 IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \ 10663 IEM_MC_COMMIT_EFLAGS( EFlags); \10660 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10664 10661 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10665 10662 IEM_MC_END(); \ … … 10684 10681 IEMOP_HLP_DONE_DECODING(); \ 10685 10682 \ 10686 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \10683 IEM_MC_ARG(uint16_t *, pu16Dst, 1); \ 10687 10684 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 10688 10685 IEM_MC_MEM_MAP_U16_ATOMIC(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10689 10686 \ 10690 IEM_MC_ARG_ CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 1); \10691 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags,2); \10692 IEM_MC_CALL_ VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \10687 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10688 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 2); \ 10689 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU16, fEFlagsIn, pu16Dst, u16Src); \ 10693 10690 \ 10694 10691 IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \ 10695 IEM_MC_COMMIT_EFLAGS( EFlags); \10692 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10696 10693 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10697 10694 IEM_MC_END(); \ … … 10707 10704 \ 10708 10705 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 10709 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \10706 IEM_MC_ARG(uint32_t *, pu32Dst, 1); \ 10710 10707 IEM_MC_MEM_MAP_U32_ATOMIC(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10711 10708 \ 10712 IEM_MC_ARG_ CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 1); \10713 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags,2); \10714 IEM_MC_CALL_ VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \10709 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10710 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 2); \ 10711 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU32, fEFlagsIn, pu32Dst, u32Src); \ 10715 10712 \ 10716 10713 IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \ 10717 IEM_MC_COMMIT_EFLAGS( EFlags); \10714 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10718 10715 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10719 10716 IEM_MC_END(); \ … … 10729 10726 \ 10730 10727 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 10731 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \10728 IEM_MC_ARG(uint64_t *, pu64Dst, 1); \ 10732 10729 IEM_MC_MEM_MAP_U64_ATOMIC(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10733 10730 \ 10734 IEM_MC_ARG_ CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 1); \10735 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags,2); \10736 IEM_MC_CALL_ VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \10731 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10732 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 2); \ 10733 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU64, fEFlagsIn, pu64Dst, u64Src); \ 10737 10734 \ 10738 10735 IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \ 10739 IEM_MC_COMMIT_EFLAGS( EFlags); \10736 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10740 10737 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10741 10738 IEM_MC_END(); \ … … 10762 10759 IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \ 10763 10760 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10764 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 10765 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 1); \ 10766 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 10767 \ 10761 IEM_MC_ARG(uint16_t const *, pu16Dst, 1); \ 10768 10762 IEM_MC_REF_GREG_U16_CONST(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 10769 IEM_MC_REF_EFLAGS(pEFlags); \ 10770 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \ 10763 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10764 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 2); \ 10765 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \ 10766 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10771 10767 \ 10772 10768 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 10777 10773 IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \ 10778 10774 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10779 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 10780 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 1); \ 10781 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 10782 \ 10775 IEM_MC_ARG(uint32_t const *, pu32Dst, 1); \ 10783 10776 IEM_MC_REF_GREG_U32_CONST(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 10784 IEM_MC_REF_EFLAGS(pEFlags); \ 10785 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \ 10777 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10778 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 2); \ 10779 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \ 10780 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10786 10781 \ 10787 10782 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 10792 10787 IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \ 10793 10788 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10794 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 10795 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 1); \ 10796 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 10797 \ 10789 IEM_MC_ARG(uint64_t const *, pu64Dst, 1); \ 10798 10790 IEM_MC_REF_GREG_U64_CONST(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \ 10799 IEM_MC_REF_EFLAGS(pEFlags); \ 10800 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \ 10791 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10792 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 2); \ 10793 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \ 10794 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10801 10795 \ 10802 10796 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 10824 10818 \ 10825 10819 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 10826 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \10820 IEM_MC_ARG(uint16_t const *, pu16Dst, 1); \ 10827 10821 IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10828 10822 \ 10829 IEM_MC_ARG_ CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 1); \10830 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags,2); \10831 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \10823 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10824 IEM_MC_ARG_CONST(uint16_t, u16Src, /*=*/ bImm & 0x0f, 2); \ 10825 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \ 10832 10826 \ 10833 10827 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ 10834 IEM_MC_COMMIT_EFLAGS( EFlags); \10828 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10835 10829 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10836 10830 IEM_MC_END(); \ … … 10846 10840 \ 10847 10841 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 10848 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \10842 IEM_MC_ARG(uint32_t const *, pu32Dst, 1); \ 10849 10843 IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10850 10844 \ 10851 IEM_MC_ARG_ CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 1); \10852 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags,2); \10853 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \10845 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10846 IEM_MC_ARG_CONST(uint32_t, u32Src, /*=*/ bImm & 0x1f, 2); \ 10847 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \ 10854 10848 \ 10855 10849 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ 10856 IEM_MC_COMMIT_EFLAGS( EFlags); \10850 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10857 10851 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10858 10852 IEM_MC_END(); \ … … 10868 10862 \ 10869 10863 IEM_MC_LOCAL(uint8_t, bUnmapInfo); \ 10870 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \10864 IEM_MC_ARG(uint64_t const *, pu64Dst, 1); \ 10871 10865 IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \ 10872 10866 \ 10873 IEM_MC_ARG_ CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 1); \10874 IEM_MC_ARG_ LOCAL_EFLAGS( pEFlags, EFlags,2); \10875 IEM_MC_CALL_ VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \10867 IEM_MC_ARG_EFLAGS( fEFlagsIn, 0); \ 10868 IEM_MC_ARG_CONST(uint64_t, u64Src, /*=*/ bImm & 0x3f, 2); \ 10869 IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \ 10876 10870 \ 10877 10871 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ 10878 IEM_MC_COMMIT_EFLAGS( EFlags); \10872 IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \ 10879 10873 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ 10880 10874 IEM_MC_END(); \ -
trunk/src/VBox/VMM/include/IEMInternal.h
r104206 r104207 2686 2686 /** @} */ 2687 2687 2688 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLBINTODOROU16,(uint16_t const *pu16Dst, uint16_t u16Src, uint32_t *pEFlags));2689 typedef FNIEMAIMPLBINTODOROU16 *PFNIEMAIMPLBINTODOROU16;2690 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLBINTODOROU32,(uint32_t const *pu32Dst, uint32_t u32Src, uint32_t *pEFlags));2691 typedef FNIEMAIMPLBINTODOROU32 *PFNIEMAIMPLBINTODOROU32;2692 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLBINTODOROU64,(uint64_t const *pu64Dst, uint64_t u64Src, uint32_t *pEFlags));2693 typedef FNIEMAIMPLBINTODOROU64 *PFNIEMAIMPLBINTODOROU64;2694 2695 2688 /** @name Bit operations operations (thrown in with the binary ops). 2696 2689 * @{ */ 2697 FNIEMAIMPLBIN TODOROU16 iemAImpl_bt_u16;2698 FNIEMAIMPLBIN TODOROU32 iemAImpl_bt_u32;2699 FNIEMAIMPLBIN TODOROU64 iemAImpl_bt_u64;2700 FNIEMAIMPLBIN TODOU16 iemAImpl_btc_u16, iemAImpl_btc_u16_locked;2701 FNIEMAIMPLBIN TODOU32 iemAImpl_btc_u32, iemAImpl_btc_u32_locked;2702 FNIEMAIMPLBIN TODOU64 iemAImpl_btc_u64, iemAImpl_btc_u64_locked;2703 FNIEMAIMPLBIN TODOU16 iemAImpl_btr_u16, iemAImpl_btr_u16_locked;2704 FNIEMAIMPLBIN TODOU32 iemAImpl_btr_u32, iemAImpl_btr_u32_locked;2705 FNIEMAIMPLBIN TODOU64 iemAImpl_btr_u64, iemAImpl_btr_u64_locked;2706 FNIEMAIMPLBIN TODOU16 iemAImpl_bts_u16, iemAImpl_bts_u16_locked;2707 FNIEMAIMPLBIN TODOU32 iemAImpl_bts_u32, iemAImpl_bts_u32_locked;2708 FNIEMAIMPLBIN TODOU64 iemAImpl_bts_u64, iemAImpl_bts_u64_locked;2690 FNIEMAIMPLBINROU16 iemAImpl_bt_u16; 2691 FNIEMAIMPLBINROU32 iemAImpl_bt_u32; 2692 FNIEMAIMPLBINROU64 iemAImpl_bt_u64; 2693 FNIEMAIMPLBINU16 iemAImpl_btc_u16, iemAImpl_btc_u16_locked; 2694 FNIEMAIMPLBINU32 iemAImpl_btc_u32, iemAImpl_btc_u32_locked; 2695 FNIEMAIMPLBINU64 iemAImpl_btc_u64, iemAImpl_btc_u64_locked; 2696 FNIEMAIMPLBINU16 iemAImpl_btr_u16, iemAImpl_btr_u16_locked; 2697 FNIEMAIMPLBINU32 iemAImpl_btr_u32, iemAImpl_btr_u32_locked; 2698 FNIEMAIMPLBINU64 iemAImpl_btr_u64, iemAImpl_btr_u64_locked; 2699 FNIEMAIMPLBINU16 iemAImpl_bts_u16, iemAImpl_bts_u16_locked; 2700 FNIEMAIMPLBINU32 iemAImpl_bts_u32, iemAImpl_bts_u32_locked; 2701 FNIEMAIMPLBINU64 iemAImpl_bts_u64, iemAImpl_bts_u64_locked; 2709 2702 /** @} */ 2710 2703 -
trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp
r104206 r104207 1938 1938 ENTRY_BIN_PFN_CAST(cmp_u16, PFNIEMAIMPLBINU16), 1939 1939 ENTRY_BIN_PFN_CAST(test_u16, PFNIEMAIMPLBINU16), 1940 #if 0 /** @todo convert to new eflags format */1941 1940 ENTRY_BIN_PFN_CAST_EX(bt_u16, PFNIEMAIMPLBINU16, 1), 1942 1941 ENTRY_BIN_EX(btc_u16, 1), … … 1946 1945 ENTRY_BIN_EX(bts_u16, 1), 1947 1946 ENTRY_BIN_EX(bts_u16_locked, 1), 1948 #endif1949 1947 ENTRY_BIN_AMD( bsf_u16, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF), 1950 1948 ENTRY_BIN_INTEL(bsf_u16, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF), … … 1988 1986 ENTRY_BIN_PFN_CAST(cmp_u32, PFNIEMAIMPLBINU32), 1989 1987 ENTRY_BIN_PFN_CAST(test_u32, PFNIEMAIMPLBINU32), 1990 #if 0 /** @todo convert to new eflags format */1991 1988 ENTRY_BIN_PFN_CAST_EX(bt_u32, PFNIEMAIMPLBINU32, 1), 1992 1989 ENTRY_BIN_EX(btc_u32, 1), … … 1996 1993 ENTRY_BIN_EX(bts_u32, 1), 1997 1994 ENTRY_BIN_EX(bts_u32_locked, 1), 1998 #endif1999 1995 ENTRY_BIN_AMD( bsf_u32, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF), 2000 1996 ENTRY_BIN_INTEL(bsf_u32, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF), … … 2039 2035 ENTRY_BIN_PFN_CAST(cmp_u64, PFNIEMAIMPLBINU64), 2040 2036 ENTRY_BIN_PFN_CAST(test_u64, PFNIEMAIMPLBINU64), 2041 #if 0 /** @todo convert to new eflags format */2042 2037 ENTRY_BIN_PFN_CAST_EX(bt_u64, PFNIEMAIMPLBINU64, 1), 2043 2038 ENTRY_BIN_EX(btc_u64, 1), … … 2047 2042 ENTRY_BIN_EX(bts_u64, 1), 2048 2043 ENTRY_BIN_EX(bts_u64_locked, 1), 2049 #endif2050 2044 ENTRY_BIN_AMD( bsf_u64, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF), 2051 2045 ENTRY_BIN_INTEL(bsf_u64, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF),
Note:
See TracChangeset
for help on using the changeset viewer.