x86: Fixes cpuid_ecx()
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 23 Mar 2015 16:34:34 +0000 (12:34 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 23 Mar 2015 19:18:55 +0000 (15:18 -0400)
Was assuming the op was 1.  Currently it was harmless, since the only
caller was passing 1.  I'd be up for a better runtime way to check
things, since this pops up a lot.

kern/arch/x86/x86.h

index a862be0..a029186 100644 (file)
@@ -174,7 +174,7 @@ static inline unsigned long read_sp(void) __attribute__((always_inline));
 static inline void cpuid(uint32_t info1, uint32_t info2, uint32_t *eaxp,
                          uint32_t *ebxp, uint32_t *ecxp, uint32_t *edxp)
                                                               __attribute__((always_inline));
-static inline uint32_t cpuid_ecx(int op) __attribute__((always_inline));
+static inline uint32_t cpuid_ecx(uint32_t op) __attribute__((always_inline));
 static inline uint64_t read_msr(uint32_t reg) __attribute__((always_inline));
 static inline void write_msr(uint32_t reg, uint64_t val)
               __attribute__((always_inline));
@@ -379,10 +379,10 @@ static inline void cpuid(uint32_t info1, uint32_t info2, uint32_t *eaxp,
                *edxp = edx;
 }
 
-static inline uint32_t cpuid_ecx(int opcode)
+static inline uint32_t cpuid_ecx(uint32_t op)
 {
        uint32_t ecx;
-       cpuid(1, 0, NULL, NULL, &ecx, NULL);
+       cpuid(op, 0, NULL, NULL, &ecx, NULL);
        return ecx;
 }