cpuid: minor fixes
authorAhmed Samy <f.fallen45@gmail.com>
Fri, 11 Oct 2013 11:10:07 +0000 (13:10 +0200)
committerAhmed Samy <f.fallen45@gmail.com>
Sun, 13 Oct 2013 19:38:01 +0000 (21:38 +0200)
Signed-off-by: Ahmed Samy <f.fallen45@gmail.com>
ccan/cpuid/cpuid.c
ccan/cpuid/test/run.c

index 1a09c5e666cb9457041bb0ae524fdd579677c07d..153f52d4a4ad513b7898095f880d2777d44d9b5e 100644 (file)
@@ -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
-
index c77fd25f87face6a4dc74a501b140132764413fc..85b1497043727f584762d671cafe830329ab65fa 100644 (file)
@@ -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);