|
|
@@ -215,7 +215,7 @@ static uint32_t fetch_edx(uint32_t what)
|
|
|
static uint32_t REGISTER; \
|
|
|
if (REGISTER == 0) \
|
|
|
REGISTER = fetch_##REGISTER(TYPE); \
|
|
|
- return (REGISTER & feature) == feature; \
|
|
|
+ return !!(REGISTER & feature); \
|
|
|
}
|
|
|
|
|
|
DEFINE_FEATURE_FUNC(ecxfeature, ecx, CPUID_PROCINFO_AND_FEATUREBITS)
|
|
|
@@ -226,25 +226,6 @@ DEFINE_FEATURE_FUNC(edxfeature_ext, edx, CPUID_EXTENDED_PROC_INFO_FEATURE_BITS)
|
|
|
|
|
|
#undef DEFINE_FEATURE_FUNC
|
|
|
|
|
|
-static const char *const cpuids[] = {
|
|
|
- "Nooooooooone",
|
|
|
- "AMDisbetter!",
|
|
|
- "AuthenticAMD",
|
|
|
- "CentaurHauls",
|
|
|
- "CyrixInstead",
|
|
|
- "GenuineIntel",
|
|
|
- "TransmetaCPU",
|
|
|
- "GeniuneTMx86",
|
|
|
- "Geode by NSC",
|
|
|
- "NexGenDriven",
|
|
|
- "RiseRiseRise",
|
|
|
- "SiS SiS SiS ",
|
|
|
- "UMC UMC UMC ",
|
|
|
- "VIA VIA VIA ",
|
|
|
- "Vortex86 SoC",
|
|
|
- "KVMKVMKVMKVM"
|
|
|
-};
|
|
|
-
|
|
|
cputype_t cpuid_get_cpu_type(void)
|
|
|
{
|
|
|
static cputype_t cputype;
|
|
|
@@ -256,8 +237,8 @@ cputype_t cpuid_get_cpu_type(void)
|
|
|
uint32_t i;
|
|
|
|
|
|
___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) {
|
|
|
+ for (i = 0; i < sizeof(c_cpunames) / sizeof(c_cpunames); ++i) {
|
|
|
+ if (strncmp(c_cpunames[i], u.buf, sizeof(c_cpunames[0])) == 0) {
|
|
|
cputype = (cputype_t)i;
|
|
|
break;
|
|
|
}
|
|
|
@@ -267,16 +248,6 @@ cputype_t cpuid_get_cpu_type(void)
|
|
|
return cputype;
|
|
|
}
|
|
|
|
|
|
-bool cpuid_sprintf_cputype(const cputype_t cputype, char *buf)
|
|
|
-{
|
|
|
- if (cputype == CT_NONE)
|
|
|
- return false;
|
|
|
-
|
|
|
- memcpy(buf, cpuids[(int)cputype], 12);
|
|
|
- buf[12] = '\0';
|
|
|
- return true;
|
|
|
-}
|
|
|
-
|
|
|
uint32_t cpuid_highest_ext_func_supported(void)
|
|
|
{
|
|
|
static uint32_t highest;
|
|
|
@@ -300,16 +271,16 @@ uint32_t cpuid_highest_ext_func_supported(void)
|
|
|
return highest;
|
|
|
}
|
|
|
|
|
|
-void cpuid(cpuid_t info, uint32_t *buf)
|
|
|
+void cpuid(cpuid_t request, 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 > CPUID_VIRT_PHYS_ADDR_SIZES || (info > CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED
|
|
|
- && !cpuid_test_feature(info)))
|
|
|
+ if (request > CPUID_VIRT_PHYS_ADDR_SIZES || (request > CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED
|
|
|
+ && !cpuid_test_feature(request)))
|
|
|
return;
|
|
|
|
|
|
- if (info == CPUID_PROC_BRAND_STRING) {
|
|
|
+ if (request == CPUID_PROC_BRAND_STRING) {
|
|
|
static char cached[48] = { 0 };
|
|
|
if (cached[0] == '\0') {
|
|
|
___cpuid(CPUID_PROC_BRAND_STRING, &buf[0], &buf[1], &buf[2], &buf[3] );
|
|
|
@@ -321,15 +292,15 @@ void cpuid(cpuid_t info, uint32_t *buf)
|
|
|
buf = (uint32_t *)cached;
|
|
|
|
|
|
return;
|
|
|
- } else if (info == CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED) {
|
|
|
+ } else if (request == CPUID_HIGHEST_EXTENDED_FUNCTION_SUPPORTED) {
|
|
|
*buf = cpuid_highest_ext_func_supported();
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
uint32_t eax, ebx, ecx, edx;
|
|
|
- ___cpuid(info, &eax, &ebx, &ecx, &edx);
|
|
|
+ ___cpuid(request, &eax, &ebx, &ecx, &edx);
|
|
|
|
|
|
- switch (info) {
|
|
|
+ switch (request) {
|
|
|
case CPUID_VENDORID:
|
|
|
buf[0] = ebx;
|
|
|
buf[1] = edx;
|