Changeset 24848 in vbox
- Timestamp:
- Nov 22, 2009 1:29:32 AM (15 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
-
include/VBox/cpum.mac (modified) (1 diff)
-
include/VBox/x86.h (modified) (1 diff)
-
src/VBox/VMM/CPUM.cpp (modified) (1 diff)
-
src/VBox/VMM/VMMR0/HWACCMR0.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/cpum.mac
r20994 r24848 213 213 ;/** Status word. */ 214 214 .FSW resw 1 215 ;/** Tag word (it's a byte actually). */ 216 .FTW resb 1 217 .huh1 resb 1 215 ;/** Tag word. */ 216 .FTW resw 1 218 217 ;/** Opcode. */ 219 218 .FOP resw 1 -
trunk/include/VBox/x86.h
r24625 r24848 1894 1894 /** Status word. */ 1895 1895 uint16_t FSW; 1896 /** Tag word (it's a byte actually). */ 1897 uint8_t FTW; 1898 uint8_t huh1; 1896 /** Tag word. (The upper byte is always zero.) */ 1897 uint16_t FTW; 1899 1898 /** Opcode. */ 1900 1899 uint16_t FOP; -
trunk/src/VBox/VMM/CPUM.cpp
r24463 r24848 2271 2271 2272 2272 pHlp->pfnPrintf(pHlp, 2273 "FPU:\n" 2274 "%sFCW=%04x %sFSW=%04x %sFTW=%02x\n" 2275 "%sres1=%02x %sFOP=%04x %sFPUIP=%08x %sCS=%04x %sRsvrd1=%04x\n" 2276 "%sFPUDP=%04x %sDS=%04x %sRsvrd2=%04x %sMXCSR=%08x %sMXCSR_MASK=%08x\n" 2273 "%sFCW=%04x %sFSW=%04x %sFTW=%04x %sFOP=%04x %sMXCSR=%08x %sMXCSR_MASK=%08x\n" 2274 "%sFPUIP=%08x %sCS=%04x %sRsvrd1=%04x %sFPUDP=%08x %sDS=%04x %sRsvrd2=%04x\n" 2277 2275 , 2278 pszPrefix, pCtx->fpu.FCW, pszPrefix, pCtx->fpu.FSW, pszPrefix, pCtx->fpu.FTW, 2279 pszPrefix, pCtx->fpu.huh1, pszPrefix, pCtx->fpu.FOP, pszPrefix, pCtx->fpu.FPUIP, pszPrefix, pCtx->fpu.CS, pszPrefix, pCtx->fpu.Rsvrd1, 2280 pszPrefix, pCtx->fpu.FPUDP, pszPrefix, pCtx->fpu.DS, pszPrefix, pCtx->fpu.Rsrvd2, 2281 pszPrefix, pCtx->fpu.MXCSR, pszPrefix, pCtx->fpu.MXCSR_MASK); 2276 pszPrefix, pCtx->fpu.FCW, pszPrefix, pCtx->fpu.FSW, pszPrefix, pCtx->fpu.FTW, pszPrefix, pCtx->fpu.FOP, 2277 pszPrefix, pCtx->fpu.MXCSR, pszPrefix, pCtx->fpu.MXCSR_MASK, 2278 pszPrefix, pCtx->fpu.FPUIP, pszPrefix, pCtx->fpu.CS, pszPrefix, pCtx->fpu.Rsvrd1, 2279 pszPrefix, pCtx->fpu.FPUDP, pszPrefix, pCtx->fpu.DS, pszPrefix, pCtx->fpu.Rsrvd2 2280 ); 2281 unsigned iShift = (pCtx->fpu.FSW >> 11) & 7; 2282 for (unsigned iST = 0; iST < RT_ELEMENTS(pCtx->fpu.aRegs); iST++) 2283 { 2284 unsigned iFPR = (iST + iShift) % RT_ELEMENTS(pCtx->fpu.aRegs); 2285 unsigned uTag = pCtx->fpu.FTW & (1 << iFPR) ? 1 : 0; 2286 char chSign = pCtx->fpu.aRegs[0].au16[4] & 0x8000 ? '-' : '+'; 2287 unsigned iInteger = (unsigned)(pCtx->fpu.aRegs[0].au64[0] >> 63); 2288 uint64_t u64Fraction = pCtx->fpu.aRegs[0].au64[0] & UINT64_C(0x7fffffffffffffff); 2289 unsigned uExponent = pCtx->fpu.aRegs[0].au16[5] & 0x7fff; 2290 /** @todo This isn't entirenly correct and needs more work! */ 2291 pHlp->pfnPrintf(pHlp, 2292 "%sST(%u)=%sFPR%u={%04RX16'%08RX32'%08RX32} t%d %c%u.%022llu ^ %u", 2293 pszPrefix, iST, pszPrefix, iFPR, 2294 pCtx->fpu.aRegs[0].au16[4], pCtx->fpu.aRegs[0].au32[1], pCtx->fpu.aRegs[0].au32[0], 2295 uTag, chSign, iInteger, u64Fraction, uExponent); 2296 if (pCtx->fpu.aRegs[0].au16[5] || pCtx->fpu.aRegs[0].au16[6] || pCtx->fpu.aRegs[0].au16[7]) 2297 pHlp->pfnPrintf(pHlp, " res={%04RX16,%04RX16,%04RX16}\n", 2298 pCtx->fpu.aRegs[0].au16[5], pCtx->fpu.aRegs[0].au16[6], pCtx->fpu.aRegs[0].au16[7]); 2299 else 2300 pHlp->pfnPrintf(pHlp, "\n"); 2301 } 2302 for (unsigned iXMM = 0; iXMM < RT_ELEMENTS(pCtx->fpu.aXMM); iXMM++) 2303 pHlp->pfnPrintf(pHlp, 2304 iXMM & 1 2305 ? "%sXMM%u%s=%08RX32'%08RX32'%08RX32'%08RX32\n" 2306 : "%sXMM%u%s=%08RX32'%08RX32'%08RX32'%08RX32 ", 2307 pszPrefix, iXMM, iXMM < 10 ? " " : "", 2308 pCtx->fpu.aRegs[iXMM].au32[3], 2309 pCtx->fpu.aRegs[iXMM].au32[2], 2310 pCtx->fpu.aRegs[iXMM].au32[1], 2311 pCtx->fpu.aRegs[iXMM].au32[0]); 2312 for (unsigned i = 0; i < RT_ELEMENTS(pCtx->fpu.au32RsrvdRest); i++) 2313 if (pCtx->fpu.au32RsrvdRest[i]) 2314 pHlp->pfnPrintf(pHlp, "%sRsrvdRest[i]=%RX32 (offset=%#x)\n", 2315 pszPrefix, i, pCtx->fpu.au32RsrvdRest[i], RT_OFFSETOF(X86FXSTATE, au32RsrvdRest[i]) ); 2282 2316 2283 2317 pHlp->pfnPrintf(pHlp, 2284 "MSR:\n"2285 2318 "%sEFER =%016RX64\n" 2286 2319 "%sPAT =%016RX64\n" -
trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp
r24813 r24848 1697 1697 Log(("FPU:\n" 1698 1698 "FCW=%04x FSW=%04x FTW=%02x\n" 1699 " res1=%02xFOP=%04x FPUIP=%08x CS=%04x Rsvrd1=%04x\n"1699 "FOP=%04x FPUIP=%08x CS=%04x Rsvrd1=%04x\n" 1700 1700 "FPUDP=%04x DS=%04x Rsvrd2=%04x MXCSR=%08x MXCSR_MASK=%08x\n" 1701 1701 , 1702 1702 pCtx->fpu.FCW, pCtx->fpu.FSW, pCtx->fpu.FTW, 1703 pCtx->fpu. huh1, pCtx->fpu.FOP, pCtx->fpu.FPUIP, pCtx->fpu.CS, pCtx->fpu.Rsvrd1,1703 pCtx->fpu.FOP, pCtx->fpu.FPUIP, pCtx->fpu.CS, pCtx->fpu.Rsvrd1, 1704 1704 pCtx->fpu.FPUDP, pCtx->fpu.DS, pCtx->fpu.Rsrvd2, 1705 1705 pCtx->fpu.MXCSR, pCtx->fpu.MXCSR_MASK));
Note:
See TracChangeset
for help on using the changeset viewer.

