#include "cpuid.h"
#include <string.h>
-#include <stdio.h>
enum {
CPU_PROC_BRAND_STRING_INTERNAL0 = 0x80000003,
buf[5] = edx; /* Feature flags #1. */
buf[6] = ecx; /* Feature flags #2. */
- buf[7] = ebx; /* Additional feature information. */
+
+ /* Additional Feature information. */
+ buf[7] = ebx & 0xFF;
+ buf[8] = (ebx >> 8) & 0xFF;
+ buf[9] = (ebx >> 16) & 0xFF;
+ buf[10] = (ebx >> 24) & 0xFF;
break;
case CPU_CACHE_AND_TLBD_INFO:
buf[0] = eax;
* buf[4]: Extended Family
* buf[5] and buf[6]:
* Feature flags
- * buf[7]:
- * Additional feature information.
+ * buf[7]: Brand Index
+ * buf[8]: CL Flush Line Size
+ * buf[9]: Logical Processors
+ * buf[10]: Initial APICID
*
* For CPU_L1_CACHE_AND_TLB_IDS:
* buf[0]: (eax):
cpuid(CPU_PROC_BRAND_STRING, (uint32_t *)buf);
printf ("Processor Brand: %s\n", buf);
- uint32_t procinfo[8];
+ uint32_t procinfo[11];
cpuid(CPU_PROCINFO_AND_FEATUREBITS, procinfo);
printf("Stepping: %d Model: 0x%X Family: %d extended model: %d extended family: %d\n",
procinfo[0], procinfo[1], procinfo[2], procinfo[3], procinfo[4]);
+ printf("Brand Index: %d CL Flush Line Size: %d Logical Processors: %d Initial APICID: %d\n",
+ procinfo[7], procinfo[8], procinfo[9], procinfo[10]);
printf ("Highest extended function supported: %#010x\n", cpuid_highest_ext_func_supported());