From 7cfb44d46f1e316b8342698d4f51a9e9b38808a6 Mon Sep 17 00:00:00 2001 From: Ahmed Samy Date: Fri, 11 Oct 2013 13:10:07 +0200 Subject: [PATCH] cpuid: minor fixes Signed-off-by: Ahmed Samy --- ccan/cpuid/cpuid.c | 15 ++++++++------- ccan/cpuid/test/run.c | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ccan/cpuid/cpuid.c b/ccan/cpuid/cpuid.c index 1a09c5e6..153f52d4 100644 --- a/ccan/cpuid/cpuid.c +++ b/ccan/cpuid/cpuid.c @@ -96,9 +96,13 @@ bool cpuid_is_supported(void) * but we store the value of EAX into ret since GCC uses EAX * as the return register for every C function. That's a double * operation, but there's no other way to do this unless doing this - * function entirely in assembly. */ - - /* This check is to make sure that the compiler is actually compiling + * function entirely in assembly. + * + * The following assembly code has been shamelessly stolen from: + * http://wiki.osdev.org/CPUID + * and converted to work with AT&T syntax. + * + * This check is to make sure that the compiler is actually compiling * for 64-bit. * * The compiler can be 32-bit and the system 64-bit so the @@ -157,7 +161,7 @@ bool cpuid_test_feature(cpuid_t feature) bool cpuid_has_feature(int feature, bool extended) { - uint32_t eax, ebx, ecx, edx; + uint32_t eax, ebx, ecx, edx, i; if (!extended) ___cpuid(CPU_PROCINFO_AND_FEATUREBITS, &eax, &ebx, &ecx, &edx); @@ -205,8 +209,6 @@ cputype_t cpuid_get_cpu_type(void) uint32_t i; ___cpuid(CPU_VENDORID, &i, &u.bufu32[0], &u.bufu32[2], &u.bufu32[1]); - u.buf[12] = '\0'; - for (i = 0; i < sizeof(cpuids) / sizeof(cpuids[0]); ++i) { if (strncmp(cpuids[i], u.buf, 12) == 0) { cputype = (cputype_t)i; @@ -311,4 +313,3 @@ void cpuid(cpuid_t info, uint32_t *buf) } #endif - diff --git a/ccan/cpuid/test/run.c b/ccan/cpuid/test/run.c index c77fd25f..85b14970 100644 --- a/ccan/cpuid/test/run.c +++ b/ccan/cpuid/test/run.c @@ -27,7 +27,7 @@ int main(void) uint32_t w; } s; cpuid(CPU_VIRT_PHYS_ADDR_SIZES, &s.w); - printf ("Physical address size: %d\nVirtual: %d\n", s.phys_bits, s.virt_bits); + printf ("Physical address size: %d\nVirtual address size: %d\n", s.phys_bits, s.virt_bits); uint32_t extfeatures[2]; cpuid(CPU_EXTENDED_PROC_INFO_FEATURE_BITS, extfeatures); -- 2.39.2