Commit dce6f0fa authored by Ahmed Samy's avatar Ahmed Samy

cpuid: parse additional feature information for pCPU_PROCINFO_AND_FEATUREBITS

Signed-off-by: default avatarAhmed Samy <f.fallen45@gmail.com>
parent 0e528772
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include "cpuid.h" #include "cpuid.h"
#include <string.h> #include <string.h>
#include <stdio.h>
enum { enum {
CPU_PROC_BRAND_STRING_INTERNAL0 = 0x80000003, CPU_PROC_BRAND_STRING_INTERNAL0 = 0x80000003,
...@@ -318,7 +317,12 @@ void cpuid(cpuid_t info, uint32_t *buf) ...@@ -318,7 +317,12 @@ void cpuid(cpuid_t info, uint32_t *buf)
buf[5] = edx; /* Feature flags #1. */ buf[5] = edx; /* Feature flags #1. */
buf[6] = ecx; /* Feature flags #2. */ 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; break;
case CPU_CACHE_AND_TLBD_INFO: case CPU_CACHE_AND_TLBD_INFO:
buf[0] = eax; buf[0] = eax;
......
...@@ -180,8 +180,10 @@ uint32_t cpuid_highest_ext_func_supported(void); ...@@ -180,8 +180,10 @@ uint32_t cpuid_highest_ext_func_supported(void);
* buf[4]: Extended Family * buf[4]: Extended Family
* buf[5] and buf[6]: * buf[5] and buf[6]:
* Feature flags * Feature flags
* buf[7]: * buf[7]: Brand Index
* Additional feature information. * buf[8]: CL Flush Line Size
* buf[9]: Logical Processors
* buf[10]: Initial APICID
* *
* For CPU_L1_CACHE_AND_TLB_IDS: * For CPU_L1_CACHE_AND_TLB_IDS:
* buf[0]: (eax): * buf[0]: (eax):
......
...@@ -18,10 +18,12 @@ int main(void) ...@@ -18,10 +18,12 @@ int main(void)
cpuid(CPU_PROC_BRAND_STRING, (uint32_t *)buf); cpuid(CPU_PROC_BRAND_STRING, (uint32_t *)buf);
printf ("Processor Brand: %s\n", buf); printf ("Processor Brand: %s\n", buf);
uint32_t procinfo[8]; uint32_t procinfo[11];
cpuid(CPU_PROCINFO_AND_FEATUREBITS, procinfo); cpuid(CPU_PROCINFO_AND_FEATUREBITS, procinfo);
printf("Stepping: %d Model: 0x%X Family: %d extended model: %d extended family: %d\n", 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]); 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()); printf ("Highest extended function supported: %#010x\n", cpuid_highest_ext_func_supported());
......
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