summaryrefslogtreecommitdiff
path: root/usr/src/boot/sys
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/boot/sys')
-rw-r--r--usr/src/boot/sys/i386/include/cpufunc.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/usr/src/boot/sys/i386/include/cpufunc.h b/usr/src/boot/sys/i386/include/cpufunc.h
index f43319476d..501d229035 100644
--- a/usr/src/boot/sys/i386/include/cpufunc.h
+++ b/usr/src/boot/sys/i386/include/cpufunc.h
@@ -109,9 +109,12 @@ disable_intr(void)
static __inline void
do_cpuid(u_int ax, u_int *p)
{
- __asm __volatile("cpuid"
- : "=a" (p[0]), "=b" (p[1]), "=c" (p[2]), "=d" (p[3])
- : "0" (ax));
+ __asm __volatile("pushl %%ebx \n\t"
+ "cpuid \n\t"
+ "movl %%ebx, %1 \n\t"
+ "popl %%ebx \n\t"
+ : "=a" (p[0]), "=m" (p[1]), "=c" (p[2]), "=d" (p[3])
+ : "0" (ax));
}
static __inline void