don't clobber %ebx in the assembler.

This commit is contained in:
Lars Knoll 2005-07-13 08:58:37 +00:00
parent bfb10bd2dc
commit 19e20c1470

View File

@ -2334,7 +2334,7 @@ static unsigned int detectCPUFeatures(void) {
"=m" (vendor[4]), "=m" (vendor[4]),
"=m" (vendor[8]) "=m" (vendor[8])
: :
: "%eax", "%ebx", "%ecx", "%edx" : "%eax", "%ecx", "%edx"
); );
unsigned int features = 0; unsigned int features = 0;
@ -2352,7 +2352,8 @@ static unsigned int detectCPUFeatures(void) {
/* check for AMD MMX extensions */ /* check for AMD MMX extensions */
unsigned int result; unsigned int result;
__asm__("mov $0x80000000, %%eax\n" __asm__("push %%ebx\n"
"mov $0x80000000, %%eax\n"
"cpuid\n" "cpuid\n"
"xor %%edx, %%edx\n" "xor %%edx, %%edx\n"
"cmp $0x1, %%eax\n" "cmp $0x1, %%eax\n"
@ -2361,9 +2362,10 @@ static unsigned int detectCPUFeatures(void) {
"cpuid\n" "cpuid\n"
"skip2:\n" "skip2:\n"
"mov %%edx, %0\n" "mov %%edx, %0\n"
"pop %%ebx\n"
: "=r" (result) : "=r" (result)
: :
: "%eax", "%ebx", "%ecx", "%edx" : "%eax", "%ecx", "%edx"
); );
if (result & (1<<22)) if (result & (1<<22))
features |= MMX_Extensions; features |= MMX_Extensions;