Changeset 54815 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Mar 17, 2015 4:25:55 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp
r54813 r54815 949 949 && (auCur[2] == 0 || auCur[2] == uSubLeaf) 950 950 && (auCur[3] == 0 || uLeaf == 0xb /* edx is fixed */) ) 951 { 952 cRepeats = 0; 951 953 break; 954 } 952 955 953 956 /* 2. Look for more than 4 repeating value sets. */ … … 968 971 /* 3. Leaf 0xb level type 0 check. */ 969 972 if ( uLeaf == 0xb 970 && (auCur[3] & 0xff00) == 0 971 && (auPrev[3] & 0xff00) == 0) 973 && (auCur[2] & 0xff00) == 0 974 && (auPrev[2] & 0xff00) == 0) 975 { 976 cRepeats = 0; 972 977 break; 978 } 973 979 974 980 /* 99. Give up. */ … … 1004 1010 *pfFinalEcxUnchanged = auCur[2] == uSubLeaf && uLeaf == 0xb; 1005 1011 *pcSubLeaves = uSubLeaf + 1 - cRepeats; 1012 if (*pcSubLeaves == 0) 1013 *pcSubLeaves = 1; 1006 1014 return true; 1007 1015 } … … 1925 1933 uint32_t i = 0; 1926 1934 if ( pCpum->GuestInfo.cCpuIdLeaves > 0 1927 && pCpum->GuestInfo.paCpuIdLeavesR3[0].u Eax<= UINT32_C(0xff))1935 && pCpum->GuestInfo.paCpuIdLeavesR3[0].uLeaf <= UINT32_C(0xff)) 1928 1936 { 1929 1937 while ( i + 1 < pCpum->GuestInfo.cCpuIdLeaves 1930 && pCpum->GuestInfo.paCpuIdLeavesR3[i + 1].u Eax<= UINT32_C(0xff))1938 && pCpum->GuestInfo.paCpuIdLeavesR3[i + 1].uLeaf <= UINT32_C(0xff)) 1931 1939 i++; 1932 1940 pCpum->GuestInfo.DefCpuId.uEax = pCpum->GuestInfo.paCpuIdLeavesR3[i].uEax; … … 4368 4376 { 4369 4377 CPUMCPUID Host; 4370 ASMCpuIdExSlow(pCurLeaf->uLeaf, pCurLeaf->uSubLeaf, 0, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);4378 ASMCpuIdExSlow(pCurLeaf->uLeaf, 0, pCurLeaf->uSubLeaf, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx); 4371 4379 pHlp->pfnPrintf(pHlp, 4372 4380 "Gst: %08x/%04x %08x %08x %08x %08x\n" … … 4430 4438 for (uint32_t uSubLeaf = 0; uSubLeaf < cMaxSubLeaves; uSubLeaf++) 4431 4439 { 4432 ASMCpuIdExSlow(uLeaf, uSubLeaf, 0, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);4440 ASMCpuIdExSlow(uLeaf, 0, uSubLeaf, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx); 4433 4441 if ( pCurLeaf - paLeaves < cLeaves 4434 4442 && pCurLeaf->uLeaf == uLeaf … … 4437 4445 pHlp->pfnPrintf(pHlp, 4438 4446 "Gst: %08x/%04x %08x %08x %08x %08x\n" 4439 "Hst: %08x %08x %08x %08x\n",4447 "Hst: %08x %08x %08x %08x\n", 4440 4448 uLeaf, uSubLeaf, pCurLeaf->uEax, pCurLeaf->uEbx, pCurLeaf->uEcx, pCurLeaf->uEdx, 4441 4449 Host.uEax, Host.uEbx, Host.uEcx, Host.uEdx); … … 4718 4726 for (uint32_t uSubLeaf = 0; uSubLeaf < cMaxSubLeaves; uSubLeaf++) 4719 4727 { 4720 ASMCpuIdExSlow(uLeaf, uSubLeaf, 0, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);4728 ASMCpuIdExSlow(uLeaf, 0, uSubLeaf, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx); 4721 4729 if ( pCurLeaf - paLeaves < cLeaves 4722 4730 && pCurLeaf->uLeaf == uLeaf … … 4725 4733 pHlp->pfnPrintf(pHlp, 4726 4734 "Gst: %08x/%04x %08x %08x %08x %08x\n" 4727 "Hst: 4735 "Hst: %08x %08x %08x %08x\n", 4728 4736 uLeaf, uSubLeaf, pCurLeaf->uEax, pCurLeaf->uEbx, pCurLeaf->uEcx, pCurLeaf->uEdx, 4729 4737 Host.uEax, Host.uEbx, Host.uEcx, Host.uEdx);
Note:
See TracChangeset
for help on using the changeset viewer.