Changeset 55452 in vbox
- Timestamp:
- Apr 27, 2015 1:56:14 PM (9 years ago)
- File:
-
- 1 edited
-
trunk/src/VBox/VMM/VMMR3/CPUM.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/CPUM.cpp
r55229 r55452 1631 1631 /** @todo This isn't entirenly correct and needs more work! */ 1632 1632 pHlp->pfnPrintf(pHlp, 1633 "%sST(%u)=%sFPR%u={%04RX16'%08RX32'%08RX32} t%d %c%u.%022llu ^ %u ",1633 "%sST(%u)=%sFPR%u={%04RX16'%08RX32'%08RX32} t%d %c%u.%022llu ^ %u (*)", 1634 1634 pszPrefix, iST, pszPrefix, iFPR, 1635 1635 pFpuCtx->aRegs[0].au16[4], pFpuCtx->aRegs[0].au32[1], pFpuCtx->aRegs[0].au32[0], … … 1641 1641 pHlp->pfnPrintf(pHlp, "\n"); 1642 1642 } 1643 for (unsigned iXMM = 0; iXMM < RT_ELEMENTS(pFpuCtx->aXMM); iXMM++) 1644 pHlp->pfnPrintf(pHlp, 1645 iXMM & 1 1646 ? "%sXMM%u%s=%08RX32'%08RX32'%08RX32'%08RX32\n" 1647 : "%sXMM%u%s=%08RX32'%08RX32'%08RX32'%08RX32 ", 1648 pszPrefix, iXMM, iXMM < 10 ? " " : "", 1649 pFpuCtx->aXMM[iXMM].au32[3], 1650 pFpuCtx->aXMM[iXMM].au32[2], 1651 pFpuCtx->aXMM[iXMM].au32[1], 1652 pFpuCtx->aXMM[iXMM].au32[0]); 1643 1644 pHlp->pfnPrintf(pHlp, "%sXCR0=%016RX64 %sXCR1=%016RX64 %sXSS=%016RX64 (fXStateMask=%016RX64)\n", 1645 pszPrefix, pCtx->aXcr[0], pszPrefix, pCtx->aXcr[1], 1646 pszPrefix, UINT64_C(0) /** @todo XSS */, pCtx->fXStateMask); 1647 1648 /* XMM/YMM/ZMM registers. */ 1649 if (pCtx->fXStateMask & XSAVE_C_YMM) 1650 { 1651 PCX86XSAVEYMMHI pYmmHiCtx = (PCX86XSAVEYMMHI)((uint8_t *)pCtx->CTX_SUFF(pXState) + pCtx->aoffXState[XSAVE_C_YMM]); 1652 if (!(pCtx->fXStateMask & XSAVE_C_ZMM_HI256)) 1653 for (unsigned i = 0; i < RT_ELEMENTS(pFpuCtx->aXMM); i++) 1654 pHlp->pfnPrintf(pHlp, "%sYMM%u%s=%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32\n", 1655 pszPrefix, i, i < 10 ? " " : "", 1656 pYmmHiCtx->aYmmHi[i].au32[3], 1657 pYmmHiCtx->aYmmHi[i].au32[2], 1658 pYmmHiCtx->aYmmHi[i].au32[1], 1659 pYmmHiCtx->aYmmHi[i].au32[0], 1660 pFpuCtx->aXMM[i].au32[3], 1661 pFpuCtx->aXMM[i].au32[2], 1662 pFpuCtx->aXMM[i].au32[1], 1663 pFpuCtx->aXMM[i].au32[0]); 1664 else 1665 { 1666 PCX86XSAVEZMMHI256 pZmmHi256; 1667 pZmmHi256 = (PCX86XSAVEZMMHI256)((uint8_t *)pCtx->CTX_SUFF(pXState) + pCtx->aoffXState[XSAVE_C_ZMM_HI256]); 1668 for (unsigned i = 0; i < RT_ELEMENTS(pFpuCtx->aXMM); i++) 1669 pHlp->pfnPrintf(pHlp, 1670 "%sZMM%u%s=%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32''%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32\n", 1671 pszPrefix, i, i < 10 ? " " : "", 1672 pZmmHi256->aHi256Regs[i].au32[7], 1673 pZmmHi256->aHi256Regs[i].au32[6], 1674 pZmmHi256->aHi256Regs[i].au32[5], 1675 pZmmHi256->aHi256Regs[i].au32[4], 1676 pZmmHi256->aHi256Regs[i].au32[3], 1677 pZmmHi256->aHi256Regs[i].au32[2], 1678 pZmmHi256->aHi256Regs[i].au32[1], 1679 pZmmHi256->aHi256Regs[i].au32[0], 1680 pYmmHiCtx->aYmmHi[i].au32[3], 1681 pYmmHiCtx->aYmmHi[i].au32[2], 1682 pYmmHiCtx->aYmmHi[i].au32[1], 1683 pYmmHiCtx->aYmmHi[i].au32[0], 1684 pFpuCtx->aXMM[i].au32[3], 1685 pFpuCtx->aXMM[i].au32[2], 1686 pFpuCtx->aXMM[i].au32[1], 1687 pFpuCtx->aXMM[i].au32[0]); 1688 1689 PCX86XSAVEZMM16HI pZmm16Hi; 1690 pZmm16Hi = (PCX86XSAVEZMM16HI)((uint8_t *)pCtx->CTX_SUFF(pXState) + pCtx->aoffXState[XSAVE_C_ZMM_16HI]); 1691 for (unsigned i = 0; i < RT_ELEMENTS(pZmm16Hi->aRegs); i++) 1692 pHlp->pfnPrintf(pHlp, 1693 "%sZMM%u=%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32''%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32'%08RX32\n", 1694 pszPrefix, i + 16, 1695 pZmm16Hi->aRegs[i].au32[15], 1696 pZmm16Hi->aRegs[i].au32[14], 1697 pZmm16Hi->aRegs[i].au32[13], 1698 pZmm16Hi->aRegs[i].au32[12], 1699 pZmm16Hi->aRegs[i].au32[11], 1700 pZmm16Hi->aRegs[i].au32[10], 1701 pZmm16Hi->aRegs[i].au32[9], 1702 pZmm16Hi->aRegs[i].au32[8], 1703 pZmm16Hi->aRegs[i].au32[7], 1704 pZmm16Hi->aRegs[i].au32[6], 1705 pZmm16Hi->aRegs[i].au32[5], 1706 pZmm16Hi->aRegs[i].au32[4], 1707 pZmm16Hi->aRegs[i].au32[3], 1708 pZmm16Hi->aRegs[i].au32[2], 1709 pZmm16Hi->aRegs[i].au32[1], 1710 pZmm16Hi->aRegs[i].au32[0]); 1711 } 1712 } 1713 else 1714 for (unsigned i = 0; i < RT_ELEMENTS(pFpuCtx->aXMM); i++) 1715 pHlp->pfnPrintf(pHlp, 1716 i & 1 1717 ? "%sXMM%u%s=%08RX32'%08RX32'%08RX32'%08RX32\n" 1718 : "%sXMM%u%s=%08RX32'%08RX32'%08RX32'%08RX32 ", 1719 pszPrefix, i, i < 10 ? " " : "", 1720 pFpuCtx->aXMM[i].au32[3], 1721 pFpuCtx->aXMM[i].au32[2], 1722 pFpuCtx->aXMM[i].au32[1], 1723 pFpuCtx->aXMM[i].au32[0]); 1724 1725 if (pCtx->fXStateMask & XSAVE_C_OPMASK) 1726 { 1727 PCX86XSAVEOPMASK pOpMask; 1728 pOpMask = (PCX86XSAVEOPMASK)((uint8_t *)pCtx->CTX_SUFF(pXState) + pCtx->aoffXState[XSAVE_C_OPMASK]); 1729 for (unsigned i = 0; i < RT_ELEMENTS(pOpMask->aKRegs); i += 4) 1730 pHlp->pfnPrintf(pHlp, "%sK%u=%016RX64 %sK%u=%016RX64 %sK%u=%016RX64 %sK%u=%016RX64\n", 1731 pszPrefix, i + 0, pOpMask->aKRegs[i + 0], 1732 pszPrefix, i + 1, pOpMask->aKRegs[i + 1], 1733 pszPrefix, i + 2, pOpMask->aKRegs[i + 2], 1734 pszPrefix, i + 3, pOpMask->aKRegs[i + 3]); 1735 } 1736 1737 if (pCtx->fXStateMask & XSAVE_C_BNDREGS) 1738 { 1739 PCX86XSAVEBNDREGS pBndRegs; 1740 pBndRegs = (PCX86XSAVEBNDREGS)((uint8_t *)pCtx->CTX_SUFF(pXState) + pCtx->aoffXState[XSAVE_C_BNDREGS]); 1741 for (unsigned i = 0; i < RT_ELEMENTS(pBndRegs->aRegs); i += 2) 1742 pHlp->pfnPrintf(pHlp, "%sBNDREG%u=%016RX64/%016RX64 %sBNDREG%u=%016RX64/%016RX64\n", 1743 pszPrefix, i, pBndRegs->aRegs[i].uLowerBound, pBndRegs->aRegs[i].uUpperBound, 1744 pszPrefix, i + 1, pBndRegs->aRegs[i + 1].uLowerBound, pBndRegs->aRegs[i + 1].uUpperBound); 1745 } 1746 1747 if (pCtx->fXStateMask & XSAVE_C_BNDCSR) 1748 { 1749 PCX86XSAVEBNDCFG pBndCfg; 1750 pBndCfg = (PCX86XSAVEBNDCFG)((uint8_t *)pCtx->CTX_SUFF(pXState) + pCtx->aoffXState[XSAVE_C_BNDCSR]); 1751 pHlp->pfnPrintf(pHlp, "%sBNDCFG.CONFIG=%016RX64 %sBNDCFG.STATUS=%016RX64\n", 1752 pszPrefix, pBndCfg->fConfig, pszPrefix, pBndCfg->fStatus); 1753 } 1754 1653 1755 for (unsigned i = 0; i < RT_ELEMENTS(pFpuCtx->au32RsrvdRest); i++) 1654 1756 if (pFpuCtx->au32RsrvdRest[i])
Note:
See TracChangeset
for help on using the changeset viewer.

