Commit 7cc24627 authored by Ahmed Samy's avatar Ahmed Samy

cpuid: prefix cpuid_t enums with CPUID_* instead of CPU_*

Signed-off-by: default avatarAhmed Samy <f.fallen45@gmail.com>
parent 92b6e205
......@@ -31,8 +31,8 @@
#include <string.h>
enum {
CPU_PROC_BRAND_STRING_INTERNAL0 = 0x80000003,
CPU_PROC_BRAND_STRING_INTERNAL1 = 0x80000004
CPUID_PROC_BRAND_STRING_INTERNAL0 = 0x80000003,
CPUID_PROC_BRAND_STRING_INTERNAL1 = 0x80000004
};
#ifndef _MSC_VER
......@@ -144,7 +144,7 @@ bool cpuid_is_supported(void)
bool cpuid_test_feature(cpuid_t feature)
{
if (feature > CPU_VIRT_PHYS_ADDR_SIZES || feature < CPU_EXTENDED_PROC_INFO_FEATURE_BITS)
if (feature > CPUID_VIRT_PHYS_ADDR_SIZES || feature < CPUID_EXTENDED_PROC_INFO_FEATURE_BITS)
return false;
return (feature <= cpuid_highest_ext_func_supported());
......@@ -158,11 +158,11 @@ bool cpuid_has_ecxfeature(int feature)
asm volatile(
"cpuid\n\t"
: "=c" (_ecx)
: "a" (CPU_PROCINFO_AND_FEATUREBITS)
: "a" (CPUID_PROCINFO_AND_FEATUREBITS)
);
#elif defined _MSC_VER
__asm {
mov eax, CPU_PROCINFO_AND_FEATUREBITS
mov eax, CPUID_PROCINFO_AND_FEATUREBITS
cpuid
mov _ecx, ecx
};
......@@ -180,11 +180,11 @@ bool cpuid_has_edxfeature(int feature)
asm volatile(
"cpuid\n\t"
: "=d" (_edx)
: "a" (CPU_PROCINFO_AND_FEATUREBITS)
: "a" (CPUID_PROCINFO_AND_FEATUREBITS)
);
#elif defined _MSC_VER
__asm {
mov eax, CPU_PROCINFO_AND_FEATUREBITS
mov eax, CPUID_PROCINFO_AND_FEATUREBITS
cpuid
mov _edx, edx
};
......@@ -223,7 +223,7 @@ cputype_t cpuid_get_cpu_type(void)
} u;
uint32_t i;
___cpuid(CPU_VENDORID, &i, &u.bufu32[0], &u.bufu32[2], &u.bufu32[1]);
___cpuid(CPUID_VENDORID, &i, &u.bufu32[0], &u.bufu32[2], &u.bufu32[1]);
for (i = 0; i < sizeof(cpuids) / sizeof(cpuids[0]); ++i) {
if (strncmp(cpuids[i], u.buf, 12) == 0) {
cputype = (cputype_t)i;
......@@ -254,11 +254,11 @@ uint32_t cpuid_highest_ext_func_supported(void)
asm volatile(
"cpuid\n\t"
: "=a" (highest)
: "a" (CPU_HIGHEST_EXTENDED_FUNCTION_SUPPORTED)
: "a" (CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED)
);
#elif defined _MSC_VER
__asm {
mov eax, CPU_HIGHEST_EXTENDED_FUNCTION_SUPPORTED
mov eax, CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED
cpuid
mov highest, eax
};
......@@ -273,23 +273,23 @@ void cpuid(cpuid_t info, uint32_t *buf)
/* Sanity checks, make sure we're not trying to do something
* invalid or we are trying to get information that isn't supported
* by the CPU. */
if (info > CPU_VIRT_PHYS_ADDR_SIZES || (info > CPU_HIGHEST_EXTENDED_FUNCTION_SUPPORTED
if (info > CPUID_VIRT_PHYS_ADDR_SIZES || (info > CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED
&& !cpuid_test_feature(info)))
return;
if (info == CPU_PROC_BRAND_STRING) {
if (info == CPUID_PROC_BRAND_STRING) {
static char cached[48] = { 0 };
if (cached[0] == '\0') {
___cpuid(CPU_PROC_BRAND_STRING, &buf[0], &buf[1], &buf[2], &buf[3]);
___cpuid(CPU_PROC_BRAND_STRING_INTERNAL0, &buf[4], &buf[5], &buf[6], &buf[7]);
___cpuid(CPU_PROC_BRAND_STRING_INTERNAL1, &buf[8], &buf[9], &buf[10], &buf[11]);
___cpuid(CPUID_PROC_BRAND_STRING, &buf[0], &buf[1], &buf[2], &buf[3]);
___cpuid(CPUID_PROC_BRAND_STRING_INTERNAL0, &buf[4], &buf[5], &buf[6], &buf[7]);
___cpuid(CPUID_PROC_BRAND_STRING_INTERNAL1, &buf[8], &buf[9], &buf[10], &buf[11]);
memcpy(cached, buf, sizeof cached);
} else
buf = (uint32_t *)cached;
return;
} else if (info == CPU_HIGHEST_EXTENDED_FUNCTION_SUPPORTED) {
} else if (info == CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED) {
*buf = cpuid_highest_ext_func_supported();
return;
}
......@@ -298,12 +298,12 @@ void cpuid(cpuid_t info, uint32_t *buf)
___cpuid(info, &eax, &ebx, &ecx, &edx);
switch (info) {
case CPU_VENDORID:
case CPUID_VENDORID:
buf[0] = ebx;
buf[1] = edx;
buf[2] = ecx;
break;
case CPU_PROCINFO_AND_FEATUREBITS:
case CPUID_PROCINFO_AND_FEATUREBITS:
buf[0] = (eax & 0x0F); /* Stepping */
buf[1] = (eax >> 4) & 0x0F; /* Model */
buf[2] = (eax >> 8) & 0x0F; /* Family */
......@@ -319,31 +319,31 @@ void cpuid(cpuid_t info, uint32_t *buf)
buf[9] = (ebx >> 16) & 0xFF;
buf[10] = (ebx >> 24) & 0xFF;
break;
case CPU_CACHE_AND_TLBD_INFO:
case CPUID_CACHE_AND_TLBD_INFO:
buf[0] = eax;
buf[1] = ebx;
buf[2] = ecx;
buf[3] = edx;
break;
case CPU_EXTENDED_PROC_INFO_FEATURE_BITS:
case CPUID_EXTENDED_PROC_INFO_FEATURE_BITS:
buf[0] = edx;
buf[1] = ecx;
break;
case CPU_L1_CACHE_AND_TLB_IDS:
case CPUID_L1_CACHE_AND_TLB_IDS:
buf[0] = eax;
buf[1] = ebx;
buf[2] = ecx;
buf[3] = edx;
break;
case CPU_EXTENDED_L2_CACHE_FEATURES:
case CPUID_EXTENDED_L2_CACHE_FEATURES:
buf[0] = ecx & 0xFF; /* Line size. */
buf[1] = (ecx >> 12) & 0xFF; /* Associativity. */
buf[2] = ecx >> 16; /* Cache size. */
break;
case CPU_ADV_POWER_MGT_INFO:
case CPUID_ADV_POWER_MGT_INFO:
*buf = edx;
break;
case CPU_VIRT_PHYS_ADDR_SIZES:
case CPUID_VIRT_PHYS_ADDR_SIZES:
buf[0] = eax & 0xFF; /* physical. */
buf[1] = (eax >> 8) & 0xFF; /* virtual. */
break;
......
......@@ -30,50 +30,50 @@
*
* This is used as a parameter in cpuid().
*
* CPU_VENDORID:
* CPUID_VENDORID:
* The CPU's Vendor ID.
*
* CPU_PROCINFO_AND_FEATUREBITS:
* CPUID_PROCINFO_AND_FEATUREBITS:
* Processor information and feature bits (SSE, etc.).
*
* CPU_CACHE_AND_TLBD_INFO
* CPUID_CACHE_AND_TLBD_INFO
* Cache and TLBD Information.
*
* CPU_HIGHEST_EXTENDED_FUNCTION_SUPPORTED:
* CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED:
* Highest extended function supported address.
* Can be like 0x80000008.
*
* CPU_EXTENDED_PROC_INFO_FEATURE_BITS:
* CPUID_EXTENDED_PROC_INFO_FEATURE_BITS:
* Extended processor information and feature bits (64bit etc.)
*
* CPU_PROC_BRAND_STRING:
* CPUID_PROC_BRAND_STRING:
* The Processor's brand string.
*
* CPU_L1_CACHE_AND_TLB_IDS:
* CPUID_L1_CACHE_AND_TLB_IDS:
* L1 Cache and TLB Identifications.
*
* CPU_EXTENDED_L2_CACHE_FEATURES:
* CPUID_EXTENDED_L2_CACHE_FEATURES:
* Extended L2 Cache features.
*
* CPU_ADV_POWER_MGT_INFO:
* CPUID_ADV_POWER_MGT_INFO:
* Advaned power management information.
*
* CPU_VIRT_PHYS_ADDR_SIZES:
* CPUID_VIRT_PHYS_ADDR_SIZES:
* Virtual and physical address sizes.
*/
typedef enum cpuid {
CPU_VENDORID = 0,
CPU_PROCINFO_AND_FEATUREBITS = 1,
CPU_CACHE_AND_TLBD_INFO = 2,
CPUID_VENDORID = 0,
CPUID_PROCINFO_AND_FEATUREBITS = 1,
CPUID_CACHE_AND_TLBD_INFO = 2,
CPU_HIGHEST_EXTENDED_FUNCTION_SUPPORTED = 0x80000000,
CPU_EXTENDED_PROC_INFO_FEATURE_BITS = 0x80000001,
CPU_PROC_BRAND_STRING = 0x80000002,
CPU_L1_CACHE_AND_TLB_IDS = 0x80000005,
CPU_EXTENDED_L2_CACHE_FEATURES = 0x80000006,
CPU_ADV_POWER_MGT_INFO = 0x80000007,
CPU_VIRT_PHYS_ADDR_SIZES = 0x80000008
CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED = 0x80000000,
CPUID_EXTENDED_PROC_INFO_FEATURE_BITS = 0x80000001,
CPUID_PROC_BRAND_STRING = 0x80000002,
CPUID_L1_CACHE_AND_TLB_IDS = 0x80000005,
CPUID_EXTENDED_L2_CACHE_FEATURES = 0x80000006,
CPUID_ADV_POWER_MGT_INFO = 0x80000007,
CPUID_VIRT_PHYS_ADDR_SIZES = 0x80000008
} cpuid_t;
enum {
......@@ -193,7 +193,7 @@ bool cpuid_is_supported(void);
* Returns the highest extended function supported.
*
* This is the same as calling:
* cpuid(CPU_HIGHEST_EEXTENDED_FUNCTION_SUPPORTED, &highest);
* cpuid(CPUID_HIGHEST_EEXTENDED_FUNCTION_SUPPORTED, &highest);
*
* This is made visible to the linker because it's easier to call it
* instead of calling cpuid with less type-checking. cpuid calls this.
......@@ -208,10 +208,10 @@ uint32_t cpuid_highest_ext_func_supported(void);
* This function expects buf to be a valid pointer to a string/int/...
* depending on the requested information.
*
* For CPU_VENDOR_ID:
* For CPUID_VENDOR_ID:
* Returns a string into buf.
*
* For CPU_PROCINFO_AND_FEATUREBITS:
* For CPUID_PROCINFO_AND_FEATUREBITS:
* buf[0]: Stepping
* buf[1]: Model
* buf[2]: Family
......@@ -224,7 +224,7 @@ uint32_t cpuid_highest_ext_func_supported(void);
* buf[9]: Logical Processors
* buf[10]: Initial APICID
*
* For CPU_L1_CACHE_AND_TLB_IDS:
* For CPUID_L1_CACHE_AND_TLB_IDS:
* buf[0]: (eax):
* - 7..0 Number of times to exec cpuid to get all descriptors.
* - 15..8 Instruction TLB: 4K Pages, 4-way set associtive, 128 entries.
......@@ -241,22 +241,22 @@ uint32_t cpuid_highest_ext_func_supported(void);
* - 16..23 Data TLB: 4M Pages, 4-way set associtive, 8 entires.
* - 24..31 1st-level data cache: 32K, 8-way set associtive, 64 byte line size
*
* For CPU_HIGHEST_EXTENDED_FUNCTION_SUPPORTED:
* For CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED:
* Returns the highest supported function in *buf (expects an integer ofc)
*
* For CPU_EXTENDED_PROC_INFO_FEATURE_BITS:
* For CPUID_EXTENDED_PROC_INFO_FEATURE_BITS:
* Returns them in buf[0] and buf[1].
*
* For CPU_EXTENDED_L2_CACHE_FEATURES:
* For CPUID_EXTENDED_L2_CACHE_FEATURES:
* buf[0]: Line size
* buf[1]: Associativity
* buf[2]: Cache size.
*
* For CPU_VIRT_PHYS_ADDR_SIZES:
* For CPUID_VIRT_PHYS_ADDR_SIZES:
* buf[0]: Physical
* buf[1]: Virtual
*
* For CPU_PROC_BRAND_STRING:
* For CPUID_PROC_BRAND_STRING:
* Have a char array with at least 48 bytes assigned to it.
*
* Here's a page which will help you parse the data provided by this function.
......@@ -271,8 +271,8 @@ void cpuid(cpuid_t info, uint32_t *buf);
*
* Returns true if feature is supported, false otherwise.
*
* The feature parameter must be >= CPU_EXTENDED_PROC_INFO_FEATURE_BITS
* and <= CPU_VIRT_PHYS_ADDR_SIZES.
* The feature parameter must be >= CPUID_EXTENDED_PROC_INFO_FEATURE_BITS
* and <= CPUID_VIRT_PHYS_ADDR_SIZES.
*/
bool cpuid_test_feature(cpuid_t feature);
......
......@@ -15,11 +15,11 @@ int main(void)
printf ("Vendor ID: %s\n", cputype);
char buf[48];
cpuid(CPU_PROC_BRAND_STRING, (uint32_t *)buf);
cpuid(CPUID_PROC_BRAND_STRING, (uint32_t *)buf);
printf ("Processor Brand: %s\n", buf);
uint32_t procinfo[11];
cpuid(CPU_PROCINFO_AND_FEATUREBITS, procinfo);
cpuid(CPUID_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",
......@@ -28,15 +28,15 @@ int main(void)
printf ("Highest extended function supported: %#010x\n", cpuid_highest_ext_func_supported());
uint32_t phys_virt[2];
cpuid(CPU_VIRT_PHYS_ADDR_SIZES, phys_virt);
cpuid(CPUID_VIRT_PHYS_ADDR_SIZES, phys_virt);
printf ("Physical address size: %d\nVirtual address size: %d\n", phys_virt[0], phys_virt[1]);
uint32_t extfeatures[2];
cpuid(CPU_EXTENDED_PROC_INFO_FEATURE_BITS, extfeatures);
cpuid(CPUID_EXTENDED_PROC_INFO_FEATURE_BITS, extfeatures);
printf ("Extended processor info and feature bits: %d %d\n", extfeatures[0], extfeatures[1]);
uint32_t l2c[3];
cpuid(CPU_EXTENDED_L2_CACHE_FEATURES, l2c);
cpuid(CPUID_EXTENDED_L2_CACHE_FEATURES, l2c);
printf("L2 Line size: %u bytes\tAssociativity: %02xh\tCache Size: %u KB\n",
l2c[0], l2c[1], l2c[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