Lines Matching defs:pCurLeaf

2232     PCPUMCPUIDLEAF pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 0, uSubLeaf);
2233 if (pCurLeaf)
2235 uint32_t uLimit = pCurLeaf->uEax;
2240 pCurLeaf->uEax = uLimit = pConfig->uMaxStdLeaf;
2247 pCurLeaf->uEax = uLimit = 3;
2249 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0x00000000), ++uSubLeaf)) != NULL)
2250 pCurLeaf->uEax = uLimit;
2264 pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0x80000000), uSubLeaf);
2265 if (pCurLeaf)
2267 uint32_t uLimit = pCurLeaf->uEax;
2273 pCurLeaf->uEax = uLimit = pConfig->uMaxExtLeaf;
2276 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0x80000000), ++uSubLeaf)) != NULL)
2277 pCurLeaf->uEax = uLimit;
2292 pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0xc0000000), uSubLeaf);
2293 if (pCurLeaf)
2295 uint32_t uLimit = pCurLeaf->uEax;
2301 pCurLeaf->uEax = uLimit = pConfig->uMaxCentaurLeaf;
2304 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0xc0000000), ++uSubLeaf)) != NULL)
2305 pCurLeaf->uEax = uLimit;
2327 PCPUMCPUIDLEAF pCurLeaf;
2328 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, uLeaf, uSubLeaf)) != NULL)
2330 pCurLeaf->uEax = 0;
2331 pCurLeaf->uEbx = 0;
2332 pCurLeaf->uEcx = 0;
2333 pCurLeaf->uEdx = 0;
2701 PCPUMCPUIDLEAF pCurLeaf;
2702 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 2, uSubLeaf)) != NULL)
2704 if ((pCurLeaf->uEax & 0xff) > 1)
2706 LogRel(("CpuId: Std[2].al: %d -> 1\n", pCurLeaf->uEax & 0xff));
2707 pCurLeaf->uEax &= UINT32_C(0xffffff01);
2723 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 3, uSubLeaf)) != NULL)
2725 pCurLeaf->uEcx = pCurLeaf->uEdx = 0;
2727 pCurLeaf->uEax = pCurLeaf->uEbx = 0;
2742 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 4, uSubLeaf)) != NULL)
2744 pCurLeaf->uEax &= UINT32_C(0x00003fff); /* Clear the #maxcores, #threads-sharing-cache (both are #-1).*/
2752 pCurLeaf->uEax |= pVM->cCpus <= 0x40 ? ((pVM->cCpus - 1) << 26) : UINT32_C(0xfc000000); /* 6 bits only -> 64 cores! */
2768 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 5, uSubLeaf)) != NULL)
2772 pCurLeaf->uEax = pCurLeaf->uEbx = 0;
2774 pCurLeaf->uEcx = pCurLeaf->uEdx = 0;
2777 pCurLeaf->uEcx = X86_CPUID_MWAIT_ECX_EXT | X86_CPUID_MWAIT_ECX_BREAKIRQIF0;
2782 pCurLeaf->uEdx =
2792 pCurLeaf->uEcx = pCurLeaf->uEdx = 0;
2818 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 7, uSubLeaf)) != NULL)
2824 pCurLeaf->uEax = 0; /* Max ECX input is 0. */
2825 pCurLeaf->uEbx &= 0
2859 pCurLeaf->uEcx &= 0
2862 pCurLeaf->uEdx &= 0;
2866 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, FSGSBASE, X86_CPUID_STEXT_FEATURE_EBX_FSGSBASE);
2867 PORTABLE_DISABLE_FEATURE_BIT_CFG(1, pCurLeaf->uEbx, AVX2, X86_CPUID_STEXT_FEATURE_EBX_AVX2, pConfig->enmAvx2);
2868 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, SMEP, X86_CPUID_STEXT_FEATURE_EBX_SMEP);
2869 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, BMI2, X86_CPUID_STEXT_FEATURE_EBX_BMI2);
2870 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, INVPCID, X86_CPUID_STEXT_FEATURE_EBX_INVPCID);
2871 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, AVX512F, X86_CPUID_STEXT_FEATURE_EBX_AVX512F);
2872 PORTABLE_DISABLE_FEATURE_BIT_CFG(1, pCurLeaf->uEbx, RDSEED, X86_CPUID_STEXT_FEATURE_EBX_RDSEED, pConfig->enmRdSeed);
2873 PORTABLE_DISABLE_FEATURE_BIT_CFG(1, pCurLeaf->uEbx, CLFLUSHOPT, X86_CPUID_STEXT_FEATURE_EBX_RDSEED, pConfig->enmCLFlushOpt);
2874 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, AVX512PF, X86_CPUID_STEXT_FEATURE_EBX_AVX512PF);
2875 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, AVX512ER, X86_CPUID_STEXT_FEATURE_EBX_AVX512ER);
2876 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, AVX512CD, X86_CPUID_STEXT_FEATURE_EBX_AVX512CD);
2877 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, SMAP, X86_CPUID_STEXT_FEATURE_EBX_SMAP);
2878 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEbx, SHA, X86_CPUID_STEXT_FEATURE_EBX_SHA);
2879 PORTABLE_DISABLE_FEATURE_BIT( 1, pCurLeaf->uEcx, PREFETCHWT1, X86_CPUID_STEXT_FEATURE_ECX_PREFETCHWT1);
2884 pCurLeaf->uEbx |= X86_CPUID_STEXT_FEATURE_EBX_AVX2;
2886 pCurLeaf->uEbx |= X86_CPUID_STEXT_FEATURE_EBX_RDSEED;
2888 pCurLeaf->uEbx |= X86_CPUID_STEXT_FEATURE_EBX_CLFLUSHOPT;
2894 pCurLeaf->uEax = 0;
2895 pCurLeaf->uEbx = 0;
2896 pCurLeaf->uEcx = 0;
2897 pCurLeaf->uEdx = 0;
2937 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 11, uSubLeaf)) != NULL)
2939 if (pCurLeaf->fFlags & CPUMCPUIDLEAF_F_CONTAINS_APIC_ID)
2941 uint8_t bLevelType = RT_BYTE2(pCurLeaf->uEcx);
2945 pCurLeaf->uEax = 0; /** @todo is this correct? Real CPUs never do 0 here, I think... */
2946 pCurLeaf->uEbx = 1;
2951 pCurLeaf->uEax = 1; /** @todo real CPUs are supposed to be in the 4-6 range, not 1. Our APIC ID assignments are a little special... */
2953 while (RT_BIT_32(pCurLeaf->uEax) < pVM->cCpus)
2954 pCurLeaf->uEax++;
2956 pCurLeaf->uEbx = pVM->cCpus;
2961 pCurLeaf->uEax = 0;
2962 pCurLeaf->uEbx = 0;
2963 pCurLeaf->uEcx = 0;
2965 pCurLeaf->uEcx = (pCurLeaf->uEcx & UINT32_C(0xffffff00)) | (uSubLeaf & 0xff);
2966 pCurLeaf->uEdx = 0; /* APIC ID is filled in by CPUMGetGuestCpuId() at runtime. Init for EMT(0) as usual. */
2971 pCurLeaf->uEax = 0;
2972 pCurLeaf->uEbx = 0;
2973 pCurLeaf->uEcx = 0;
2974 pCurLeaf->uEdx = 0;
3010 pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 7, 0);
3011 if (pCurLeaf && (pCurLeaf->uEbx & X86_CPUID_STEXT_FEATURE_EBX_AVX512F))
3021 pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 13, uSubLeaf);
3022 if (pCurLeaf)
3029 pCurLeaf->uEax &= RT_LO_U32(fGuestXcr0Mask);
3030 pCurLeaf->uEdx &= RT_HI_U32(fGuestXcr0Mask);
3033 pCurLeaf->uEax &= 0;
3034 pCurLeaf->uEcx &= 0;
3035 pCurLeaf->uEdx &= 0;
3040 AssertLogRel(!(pCurLeaf->uEcx & 1));
3041 pCurLeaf->uEcx = 0; /* Bit 0 should be zero (XCR0), the reset are reserved... */
3042 pCurLeaf->uEdx = 0; /* it's reserved... */
3050 pCurLeaf->uEax = 0;
3051 pCurLeaf->uEbx = 0;
3052 pCurLeaf->uEcx = 0;
3053 pCurLeaf->uEdx = 0;
3155 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0x80000007), uSubLeaf)) != NULL)
3157 pCurLeaf->uEax = pCurLeaf->uEbx = pCurLeaf->uEcx = 0;
3160 pCurLeaf->uEdx &= 0
3185 pCurLeaf->uEdx &= X86_CPUID_AMD_ADVPOWER_EDX_TSCINVAR;
3187 pCurLeaf->uEdx |= X86_CPUID_AMD_ADVPOWER_EDX_TSCINVAR;
3205 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0x80000008), uSubLeaf)) != NULL)
3207 pCurLeaf->uEax &= UINT32_C(0x0000ffff); /* Virtual & physical address sizes only. */
3208 pCurLeaf->uEbx = 0; /* reserved */
3209 pCurLeaf->uEdx = 0; /* reserved */
3213 pCurLeaf->uEcx = 0;
3217 pCurLeaf->uEcx |= (pVM->cCpus - 1) & UINT32_C(0xff);
3247 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0x8000001a), uSubLeaf)) != NULL)
3249 pCurLeaf->uEax &= RT_BIT_32(0) /* FP128 - use 1x128-bit instead of 2x64-bit. */
3253 pCurLeaf->uEbx = 0; /* reserved */
3254 pCurLeaf->uEcx = 0; /* reserved */
3255 pCurLeaf->uEdx = 0; /* reserved */
3275 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0x8000001d), uSubLeaf)) != NULL)
3278 uint32_t cCores = ((pCurLeaf->uEax >> 14) & 0xfff) + 1;
3281 pCurLeaf->uEax &= UINT32_C(0x00003fff);
3282 pCurLeaf->uEax |= ((cCores - 1) & 0xfff) << 14;
3284 pCurLeaf->uEax &= UINT32_C(0x00003fff);
3294 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0x8000001e), uSubLeaf)) != NULL)
3296 pCurLeaf->uEax = 0; /* Extended APIC ID = EMT(0).idApic (== 0). */
3297 if (pCurLeaf->fFlags & CPUMCPUIDLEAF_F_CONTAINS_APIC_ID)
3300 pCurLeaf->uEbx = pVM->cCpus < 0x100
3303 pCurLeaf->uEbx = 0; /* Compute unit ID 0, 1 core per unit. */
3305 pCurLeaf->uEcx = 0; /* Node ID 0, 1 node per CPU. */
3310 pCurLeaf->uEbx = 0; /* Reserved. */
3311 pCurLeaf->uEcx = 0; /* Reserved. */
3313 pCurLeaf->uEdx = 0; /* Reserved. */
3339 while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, UINT32_C(0xc0000001), uSubLeaf)) != NULL)
3341 pCurLeaf->uEbx = 0;
3342 pCurLeaf->uEcx = 0;
3343 pCurLeaf->uEdx = 0; /* Bits 0 thru 9 are documented on sandpil.org, but we don't want them, except maybe 5 (FEMMS). */
4783 PCPUMCPUIDLEAF pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x0000000d), 0);
4784 if ( pCurLeaf
4786 && ( pCurLeaf->uEax
4787 || pCurLeaf->uEbx
4788 || pCurLeaf->uEcx
4789 || pCurLeaf->uEdx) )
4791 uint64_t fGuestXcr0Mask = RT_MAKE_U64(pCurLeaf->uEax, pCurLeaf->uEdx);
4798 pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x0000000d), 1);
4799 if (pCurLeaf && pCurLeaf->uEax)
4801 N_("CPUID(0xd/1).EAX=%#x, expected zero"), pCurLeaf->uEax);
4802 if (pCurLeaf && (pCurLeaf->uEcx || pCurLeaf->uEdx))
4805 RT_MAKE_U64(pCurLeaf->uEdx, pCurLeaf->uEcx));
4816 pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x0000000d), uSubLeaf);
4817 if (pCurLeaf)
4820 if (pCurLeaf->uEax || pCurLeaf->uEbx || pCurLeaf->uEcx || pCurLeaf->uEdx)
4825 if ( RawHost.uEbx != pCurLeaf->uEbx
4826 || RawHost.uEax != pCurLeaf->uEax)
4829 uSubLeaf, pCurLeaf->uEbx, pCurLeaf->uEax, RawHost.uEbx, RawHost.uEax);
5284 * @param pCurLeaf The 0x00000001 leaf.
5289 PCCPUMCPUIDLEAF pCurLeaf, bool fVerbose, bool fIntel)
5291 Assert(pCurLeaf); Assert(pCurLeaf->uLeaf == 1);
5293 uint32_t uEAX = pCurLeaf->uEax;
5294 uint32_t uEBX = pCurLeaf->uEbx;
5320 cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEdx, Host.uEdx, g_aLeaf1EdxSubFields, 56);
5321 cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEcx, Host.uEcx, g_aLeaf1EcxSubFields, 56);
5325 cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEdx, g_aLeaf1EdxSubFields, "Features EDX:", 36);
5326 cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEcx, g_aLeaf1EcxSubFields, "Features ECX:", 36);
5337 * @param pCurLeaf The first 0x00000007 leaf.
5341 PCCPUMCPUIDLEAF pCurLeaf, bool fVerbose)
5343 Assert(pCurLeaf); Assert(pCurLeaf->uLeaf == 7);
5348 ASMCpuIdExSlow(pCurLeaf->uLeaf, 0, pCurLeaf->uSubLeaf, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);
5350 switch (pCurLeaf->uSubLeaf)
5356 cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEbx, Host.uEbx, g_aLeaf7Sub0EbxSubFields, 56);
5357 cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEcx, Host.uEcx, g_aLeaf7Sub0EcxSubFields, 56);
5358 if (pCurLeaf->uEdx || Host.uEdx)
5359 pHlp->pfnPrintf(pHlp, "%36 %#x (%#x)\n", "Ext Features EDX:", pCurLeaf->uEdx, Host.uEdx);
5363 cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEbx, g_aLeaf7Sub0EbxSubFields, "Ext Features EBX:", 36);
5364 cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEcx, g_aLeaf7Sub0EcxSubFields, "Ext Features ECX:", 36);
5365 if (pCurLeaf->uEdx)
5366 pHlp->pfnPrintf(pHlp, "%36 %#x\n", "Ext Features EDX:", pCurLeaf->uEdx);
5371 if (pCurLeaf->uEdx || pCurLeaf->uEcx || pCurLeaf->uEbx)
5373 pCurLeaf->uSubLeaf, pCurLeaf->uEax, pCurLeaf->uEbx, pCurLeaf->uEcx, pCurLeaf->uEdx);
5379 pCurLeaf++;
5380 if ( (uintptr_t)(pCurLeaf - paLeaves) >= cLeaves
5381 || pCurLeaf->uLeaf != 0x7)
5393 * @param pCurLeaf The first 0x00000007 leaf.
5397 PCCPUMCPUIDLEAF pCurLeaf, bool fVerbose)
5399 Assert(pCurLeaf); Assert(pCurLeaf->uLeaf == 13);
5409 if (pCurLeaf && pCurLeaf->uSubLeaf == uSubLeaf)
5411 pCurLeaf->uEbx, pCurLeaf->uEcx);
5414 if (pCurLeaf && pCurLeaf->uSubLeaf == uSubLeaf)
5415 cpumR3CpuIdInfoValueWithMnemonicListU64(pHlp, RT_MAKE_U64(pCurLeaf->uEax, pCurLeaf->uEdx), g_aXSaveStateBits,
5422 if (pCurLeaf && pCurLeaf->uSubLeaf == uSubLeaf)
5423 cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEax, g_aLeaf13Sub1EaxSubFields, "XSAVE features, guest:", 42);
5426 if (pCurLeaf && pCurLeaf->uSubLeaf == uSubLeaf)
5427 pHlp->pfnPrintf(pHlp, "%42s %#x\n", "XSAVE area cur size XCR0|XSS, guest:", pCurLeaf->uEbx);
5430 if (pCurLeaf && pCurLeaf->uSubLeaf == uSubLeaf)
5431 cpumR3CpuIdInfoValueWithMnemonicListU64(pHlp, RT_MAKE_U64(pCurLeaf->uEcx, pCurLeaf->uEdx), g_aXSaveStateBits,
5438 if ( pCurLeaf
5439 && pCurLeaf->uSubLeaf == uSubLeaf
5440 && (pCurLeaf->uEax || pCurLeaf->uEbx || pCurLeaf->uEcx || pCurLeaf->uEdx) )
5442 pHlp->pfnPrintf(pHlp, " State #%u, guest: off=%#06x, cb=%#06x %s", uSubLeaf, pCurLeaf->uEbx,
5443 pCurLeaf->uEax, pCurLeaf->uEcx & RT_BIT_32(0) ? "XCR0-bit" : "IA32_XSS-bit");
5444 if (pCurLeaf->uEcx & ~RT_BIT_32(0))
5445 pHlp->pfnPrintf(pHlp, " ECX[reserved]=%#x\n", pCurLeaf->uEcx & ~RT_BIT_32(0));
5446 if (pCurLeaf->uEdx)
5447 pHlp->pfnPrintf(pHlp, " EDX[reserved]=%#x\n", pCurLeaf->uEdx);
5469 if (pCurLeaf)
5471 while ( (uintptr_t)(pCurLeaf - paLeaves) < cLeaves
5472 && pCurLeaf->uSubLeaf <= uSubLeaf
5473 && pCurLeaf->uLeaf == UINT32_C(0x0000000d))
5474 pCurLeaf++;
5475 if ( (uintptr_t)(pCurLeaf - paLeaves) >= cLeaves
5476 || pCurLeaf->uLeaf != UINT32_C(0x0000000d))
5477 pCurLeaf = NULL;
5484 PCCPUMCPUIDLEAF pCurLeaf, uint32_t uUpToLeaf, const char *pszTitle)
5486 if ( (uintptr_t)(pCurLeaf - paLeaves) < cLeaves
5487 && pCurLeaf->uLeaf <= uUpToLeaf)
5492 while ( (uintptr_t)(pCurLeaf - paLeaves) < cLeaves
5493 && pCurLeaf->uLeaf <= uUpToLeaf)
5496 ASMCpuIdExSlow(pCurLeaf->uLeaf, 0, pCurLeaf->uSubLeaf, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);
5500 pCurLeaf->uLeaf, pCurLeaf->uSubLeaf, pCurLeaf->uEax, pCurLeaf->uEbx, pCurLeaf->uEcx, pCurLeaf->uEdx,
5502 pCurLeaf++;
5506 return pCurLeaf;
5536 PCCPUMCPUIDLEAF pCurLeaf;
5551 for (uLeaf = 0, pCurLeaf = paLeaves; uLeaf <= cMax; uLeaf++)
5562 if ( (uintptr_t)(pCurLeaf - paLeaves) < cLeaves
5563 && pCurLeaf->uLeaf == uLeaf
5564 && pCurLeaf->uSubLeaf == uSubLeaf)
5569 uLeaf, uSubLeaf, pCurLeaf->uEax, pCurLeaf->uEbx, pCurLeaf->uEcx, pCurLeaf->uEdx,
5571 pCurLeaf++;
5581 if ( ( (uintptr_t)(pCurLeaf - paLeaves) >= cLeaves
5582 || pCurLeaf->uLeaf != uLeaf)
5593 pNextLeaf = pCurLeaf;
5606 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x00000001), 0)) != NULL)
5607 cpumR3CpuIdInfoStdLeaf1Details(pHlp, paLeaves, cLeaves, pCurLeaf, iVerbosity > 1, fIntel);
5609 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x00000007), 0)) != NULL)
5610 cpumR3CpuIdInfoStdLeaf7Details(pHlp, paLeaves, cLeaves, pCurLeaf, iVerbosity > 1);
5612 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x0000000d), 0)) != NULL)
5613 cpumR3CpuIdInfoStdLeaf13Details(pHlp, paLeaves, cLeaves, pCurLeaf, iVerbosity > 1);
5615 pCurLeaf = pNextLeaf;
5623 pCurLeaf = cpumR3CpuIdInfoRawRange(pHlp, paLeaves, cLeaves, pCurLeaf, UINT32_C(0x3fffffff), "Unknown CPUID Leaves");
5627 cGstMax = (uintptr_t)(pCurLeaf - paLeaves) < cLeaves && pCurLeaf->uLeaf == UINT32_C(0x40000000)
5628 ? RT_MIN(pCurLeaf->uEax, UINT32_C(0x40000fff)) : 0;
5632 pNextLeaf = cpumR3CpuIdInfoRawRange(pHlp, paLeaves, cLeaves, pCurLeaf, cMax, "Raw Hypervisor CPUID Leaves");
5636 pCurLeaf = pNextLeaf;
5644 pCurLeaf = cpumR3CpuIdInfoRawRange(pHlp, paLeaves, cLeaves, pCurLeaf, UINT32_C(0x7fffffff), "Unknown CPUID Leaves");
5648 cGstMax = (uintptr_t)(pCurLeaf - paLeaves) < cLeaves && pCurLeaf->uLeaf == UINT32_C(0x80000000)
5649 ? RT_MIN(pCurLeaf->uEax, UINT32_C(0x80000fff)) : 0;
5657 PCCPUMCPUIDLEAF pExtLeaf = pCurLeaf;
5667 if ( (uintptr_t)(pCurLeaf - paLeaves) < cLeaves
5668 && pCurLeaf->uLeaf == uLeaf
5669 && pCurLeaf->uSubLeaf == uSubLeaf)
5674 uLeaf, uSubLeaf, pCurLeaf->uEax, pCurLeaf->uEbx, pCurLeaf->uEcx, pCurLeaf->uEdx,
5676 pCurLeaf++;
5686 if ( ( (uintptr_t)(pCurLeaf - paLeaves) >= cLeaves
5687 || pCurLeaf->uLeaf != uLeaf)
5692 pNextLeaf = pCurLeaf;
5703 pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x80000001), 0);
5704 if (iVerbosity && pCurLeaf)
5706 uint32_t uEAX = pCurLeaf->uEax;
5715 pCurLeaf->uEbx & 0xfff);
5719 cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEdx, g_aExtLeaf1EdxSubFields, "Ext Features EDX:", 34);
5720 cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEcx, g_aExtLeaf1EdxSubFields, "Ext Features ECX:", 34);
5727 cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEdx, Host.uEdx, g_aExtLeaf1EdxSubFields, 56);
5728 cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEcx, Host.uEcx, g_aExtLeaf1EcxSubFields, 56);
5732 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x80000002), 0)) != NULL)
5736 *pu32++ = pCurLeaf->uEax;
5737 *pu32++ = pCurLeaf->uEbx;
5738 *pu32++ = pCurLeaf->uEcx;
5739 *pu32++ = pCurLeaf->uEdx;
5740 pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x80000003), 0);
5741 if (pCurLeaf)
5743 *pu32++ = pCurLeaf->uEax;
5744 *pu32++ = pCurLeaf->uEbx;
5745 *pu32++ = pCurLeaf->uEcx;
5746 *pu32++ = pCurLeaf->uEdx;
5748 pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x80000004), 0);
5749 if (pCurLeaf)
5751 *pu32++ = pCurLeaf->uEax;
5752 *pu32++ = pCurLeaf->uEbx;
5753 *pu32++ = pCurLeaf->uEcx;
5754 *pu32++ = pCurLeaf->uEdx;
5759 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x80000005), 0)) != NULL)
5761 uint32_t uEAX = pCurLeaf->uEax;
5762 uint32_t uEBX = pCurLeaf->uEbx;
5763 uint32_t uECX = pCurLeaf->uEcx;
5764 uint32_t uEDX = pCurLeaf->uEdx;
5797 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x80000006), 0)) != NULL)
5799 uint32_t uEAX = pCurLeaf->uEax;
5800 uint32_t uEBX = pCurLeaf->uEbx;
5801 uint32_t uEDX = pCurLeaf->uEdx;
5824 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x80000007), 0)) != NULL)
5826 uint32_t uEDX = pCurLeaf->uEdx;
5853 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x80000008), 0)) != NULL)
5855 uint32_t uEAX = pCurLeaf->uEax;
5856 uint32_t uECX = pCurLeaf->uEcx;
5870 pCurLeaf = pNextLeaf;
5878 pCurLeaf = cpumR3CpuIdInfoRawRange(pHlp, paLeaves, cLeaves, pCurLeaf, UINT32_C(0xbfffffff), "Unknown CPUID Leaves");
5883 cGstMax = (uintptr_t)(pCurLeaf - paLeaves) < cLeaves && pCurLeaf->uLeaf == UINT32_C(0xc0000000)
5884 ? RT_MIN(pCurLeaf->uEax, UINT32_C(0xc0000fff)) : 0;
5888 pNextLeaf = cpumR3CpuIdInfoRawRange(pHlp, paLeaves, cLeaves, pCurLeaf, cMax, "Raw Centaur CPUID Leaves");
5893 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0xc0000000), 0)) != NULL)
5896 pCurLeaf->uEax);
5898 if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0xc0000001), 0)) != NULL)
5901 uint32_t uEdxGst = pCurLeaf->uEdx;
5965 pCurLeaf = pNextLeaf;
5971 pCurLeaf = cpumR3CpuIdInfoRawRange(pHlp, paLeaves, cLeaves, pCurLeaf, UINT32_C(0xffffffff), "Unknown CPUID Leaves");