=r was not restrictive enough and the compiler was not returning
ebx correctly.
Change-Id: I7606e384067bd5fb69189802f1ff64ccc5aa02d6
#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