GCC inline restrictions were not adequate.
=r was not restrictive enough and the compiler was not returning ebx correctly. Change-Id: I7606e384067bd5fb69189802f1ff64ccc5aa02d6
This commit is contained in:
parent
136857475e
commit
e50f5d4037
@ -24,12 +24,11 @@
|
||||
#else
|
||||
#define cpuid(func,ax,bx,cx,dx)\
|
||||
__asm__ __volatile__ (\
|
||||
"pushl %%ebx \n\t" \
|
||||
"cpuid \n\t" \
|
||||
"movl %%ebx, %1 \n\t" \
|
||||
"popl %%ebx \n\t" \
|
||||
: "=a" (ax), "=r" (bx), "=c" (cx), "=d" (dx) \
|
||||
: "a" (func));
|
||||
"mov %%ebx, %%edi \n\t" \
|
||||
"cpuid \n\t" \
|
||||
"xchg %%edi, %%ebx \n\t" \
|
||||
: "=a" (ax), "=D" (bx), "=c" (cx), "=d" (dx) \
|
||||
: "a" (func));
|
||||
#endif
|
||||
#else
|
||||
#if ARCH_X86_64
|
||||
|
Loading…
x
Reference in New Issue
Block a user