Commit 0e528772 authored by Ahmed Samy's avatar Ahmed Samy

cpuid: better parser for processor info

Signed-off-by: default avatarAhmed Samy <f.fallen45@gmail.com>
parent efd79fad
......@@ -29,6 +29,7 @@
#include "cpuid.h"
#include <string.h>
#include <stdio.h>
enum {
CPU_PROC_BRAND_STRING_INTERNAL0 = 0x80000003,
......@@ -309,10 +310,15 @@ void cpuid(cpuid_t info, uint32_t *buf)
buf[2] = ecx;
break;
case CPU_PROCINFO_AND_FEATUREBITS:
buf[0] = eax; /* The so called "signature" of the CPU. */
buf[1] = edx; /* Feature flags #1. */
buf[2] = ecx; /* Feature flags #2. */
buf[3] = ebx; /* Additional feature information. */
buf[0] = (eax & 0x0F); /* Stepping */
buf[1] = (eax >> 4) & 0x0F; /* Model */
buf[2] = (eax >> 8) & 0x0F; /* Family */
buf[3] = (eax >> 16) & 0x0F; /* Extended Model. */
buf[4] = (eax >> 24) & 0x0F; /* Extended Family. */
buf[5] = edx; /* Feature flags #1. */
buf[6] = ecx; /* Feature flags #2. */
buf[7] = ebx; /* Additional feature information. */
break;
case CPU_CACHE_AND_TLBD_INFO:
buf[0] = eax;
......
......@@ -173,16 +173,14 @@ uint32_t cpuid_highest_ext_func_supported(void);
* Returns a string into buf.
*
* For CPU_PROCINFO_AND_FEATUREBITS:
* buf[0]:
* - 3:0 - Stepping
* - 7:4 - Model
* - 11:8 - Family
* - 13:12 - Processor Type
* - 19:16 - Extended Model
* - 27:20 - Extended family
* buf[1] and buf[2]:
* buf[0]: Stepping
* buf[1]: Model
* buf[2]: Family
* buf[3]: Extended Model
* buf[4]: Extended Family
* buf[5] and buf[6]:
* Feature flags
* buf[3]:
* buf[7]:
* Additional feature information.
*
* For CPU_L1_CACHE_AND_TLB_IDS:
......
......@@ -18,6 +18,11 @@ int main(void)
cpuid(CPU_PROC_BRAND_STRING, (uint32_t *)buf);
printf ("Processor Brand: %s\n", buf);
uint32_t procinfo[8];
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 ("Highest extended function supported: %#010x\n", cpuid_highest_ext_func_supported());
uint32_t phys_virt[2];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment