AsmCpuid (CPUID_SIGNATURE, &MaxCpuIdIndex, NULL, NULL, NULL);\r
//\r
// If CPUID Leaf B is supported, \r
+ // And CPUID.0BH:EBX[15:0] reports a non-zero value,\r
// Then the initial 32-bit APIC ID = CPUID.0BH:EDX\r
// Else the initial 8-bit APIC ID = CPUID.1:EBX[31:24]\r
//\r
if (MaxCpuIdIndex >= CPUID_EXTENDED_TOPOLOGY) {\r
- AsmCpuidEx (CPUID_EXTENDED_TOPOLOGY, 0, NULL, NULL, NULL, &ApicId);\r
- return ApicId;\r
+ AsmCpuidEx (CPUID_EXTENDED_TOPOLOGY, 0, NULL, &RegEbx, NULL, &ApicId);\r
+ if ((RegEbx & (BIT16 - 1)) != 0) {\r
+ return ApicId;\r
+ }\r
}\r
AsmCpuid (CPUID_VERSION_INFO, NULL, &RegEbx, NULL, NULL);\r
return RegEbx >> 24;\r