x86: fixup cpuid for some odd (android) 32-bit variants
authorJens Axboe <axboe@kernel.dk>
Fri, 12 Apr 2013 07:15:42 +0000 (09:15 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 12 Apr 2013 07:15:42 +0000 (09:15 +0200)
Signed-off-by: Jens Axboe <axboe@kernel.dk>
arch/arch-x86-common.h
arch/arch-x86.h
arch/arch-x86_64.h

index 78fd40c03d40c71f9f915bf615e1cc06dce6a97a..179572d482fa550093084b55b5bd2b3d0f75c291 100644 (file)
@@ -3,15 +3,6 @@
 
 #include <string.h>
 
-static inline void do_cpuid(unsigned int *eax, unsigned int *ebx,
-                           unsigned int *ecx, unsigned int *edx)
-{
-       asm volatile("cpuid"
-               : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx)
-               : "0" (*eax), "2" (*ecx)
-               : "memory");
-}
-
 static inline void cpuid(unsigned int op,
                         unsigned int *eax, unsigned int *ebx,
                         unsigned int *ecx, unsigned int *edx)
index 69cf60b3de5f772c566d88a3cb0dfa9ba0b55d5e..49e64dd3cfa74c39570f4aabb99fe511e5e4e855 100644 (file)
@@ -1,6 +1,15 @@
 #ifndef ARCH_X86_H
 #define ARCH_X86_H
 
+static inline void do_cpuid(unsigned int *eax, unsigned int *ebx,
+                           unsigned int *ecx, unsigned int *edx)
+{
+       asm volatile("xchgl %%ebx, %1\ncpuid\nxchgl %%ebx, %1"
+               : "=a" (*eax), "=r" (*ebx), "=c" (*ecx), "=d" (*edx)
+               : "0" (*eax)
+               : "memory");
+}
+
 #include "arch-x86-common.h"
 
 #define FIO_ARCH       (arch_i386)
index cea0451d8ba6f3788e7658508a27863f494ac590..8bdf01e84dd2a3558c3f2eee6a98f2d17176750c 100644 (file)
@@ -1,6 +1,15 @@
 #ifndef ARCH_X86_64_h
 #define ARCH_X86_64_h
 
+static inline void do_cpuid(unsigned int *eax, unsigned int *ebx,
+                           unsigned int *ecx, unsigned int *edx)
+{
+       asm volatile("cpuid"
+               : "=a" (*eax), "=b" (*ebx), "=r" (*ecx), "=d" (*edx)
+               : "0" (*eax), "2" (*ecx)
+               : "memory");
+}
+
 #include "arch-x86-common.h"
 
 #define FIO_ARCH       (arch_x86_64)