Changeset 61651 in vbox
- Timestamp:
- Jun 10, 2016 11:24:37 AM (9 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r61640 r61651 8908 8908 #define IEM_MC_STORE_XREG_U128(a_iXReg, a_u128Value) \ 8909 8909 do { pIemCpu->CTX_SUFF(pCtx)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].xmm = (a_u128Value); } while (0) 8910 #define IEM_MC_STORE_XREG_U64(a_iXReg, a_u64Value) \ 8911 do { pIemCpu->CTX_SUFF(pCtx)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[0] = (a_u64Value); } while (0) 8910 8912 #define IEM_MC_STORE_XREG_U64_ZX_U128(a_iXReg, a_u64Value) \ 8911 8913 do { pIemCpu->CTX_SUFF(pCtx)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[0] = (a_u64Value); \ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
r61650 r61651 1549 1549 IEM_MC_END(); 1550 1550 } 1551 return VINF_SUCCESS; 1552 } 1553 1554 IEMOP_BITCH_ABOUT_STUB(); 1555 return VERR_IEM_INSTR_NOT_IMPLEMENTED; 1551 } 1552 else if (pIemCpu->fPrefixes == IEM_OP_PRF_REPNZ) 1553 { 1554 IEMOP_MNEMONIC("movsd Wsd,Vsd"); 1555 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1556 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 1557 { 1558 /* 1559 * Register, register. 1560 */ 1561 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1562 IEM_MC_BEGIN(0, 1); 1563 IEM_MC_LOCAL(uint64_t, uSrc); 1564 1565 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 1566 IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE(); 1567 IEM_MC_FETCH_XREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg); 1568 IEM_MC_STORE_XREG_U64((bRm & X86_MODRM_RM_MASK) | pIemCpu->uRexB, uSrc); 1569 1570 IEM_MC_ADVANCE_RIP(); 1571 IEM_MC_END(); 1572 } 1573 else 1574 { 1575 /* 1576 * Memory, register. 1577 */ 1578 IEM_MC_BEGIN(0, 2); 1579 IEM_MC_LOCAL(uint64_t, uSrc); 1580 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1581 1582 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 1583 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1584 IEM_MC_MAYBE_RAISE_SSE2_RELATED_XCPT(); 1585 IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ(); 1586 1587 IEM_MC_FETCH_XREG_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg); 1588 IEM_MC_STORE_MEM_U64(pIemCpu->iEffSeg, GCPtrEffSrc, uSrc); 1589 1590 IEM_MC_ADVANCE_RIP(); 1591 IEM_MC_END(); 1592 } 1593 } 1594 else 1595 { 1596 IEMOP_BITCH_ABOUT_STUB(); 1597 return VERR_IEM_INSTR_NOT_IMPLEMENTED; 1598 } 1599 return VINF_SUCCESS; 1556 1600 } 1557 1601 -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r61064 r61651 482 482 #define IEM_MC_FETCH_XREG_U32(a_u32Value, a_iXReg) do { (a_u32Value) = 0; CHK_TYPE(uint32_t, a_u32Value); (void)fSseRead; } while (0) 483 483 #define IEM_MC_STORE_XREG_U128(a_iXReg, a_u128Value) do { CHK_TYPE(uint128_t, a_u128Value); (void)fSseWrite; } while (0) 484 #define IEM_MC_STORE_XREG_U64(a_iXReg, a_u64Value) do { CHK_TYPE(uint64_t, a_u64alue); (void)fSseWrite; } while (0) 484 485 #define IEM_MC_STORE_XREG_U64_ZX_U128(a_iXReg, a_u64Value) do { CHK_TYPE(uint64_t, a_u64Value); (void)fSseWrite; } while (0) 485 486 #define IEM_MC_STORE_XREG_U32_ZX_U128(a_iXReg, a_u32Value) do { CHK_TYPE(uint32_t, a_u32Value); (void)fSseWrite; } while (0)
Note:
See TracChangeset
for help on using the changeset viewer.