# HG changeset patch # User Ryan C. Gordon # Date 1257097899 0 # Node ID ca91f36ef3def70a02eefd8d3920439409fee3d0 # Parent 6f74b80cca1dbfe7a776e08906bbd56af68f080b 1.2 branch: fixed assembly code register clobbering. diff -r 6f74b80cca1d -r ca91f36ef3de src/cpuinfo/SDL_cpuinfo.c --- a/src/cpuinfo/SDL_cpuinfo.c Wed Oct 28 19:42:16 2009 +0000 +++ b/src/cpuinfo/SDL_cpuinfo.c Sun Nov 01 17:51:39 2009 +0000 @@ -148,7 +148,7 @@ int features = 0; #if defined(__GNUC__) && defined(i386) __asm__ ( -" movl %%ebx,%%edi\n" +" pushl %%ebx\n" " xorl %%eax,%%eax # Set up for CPUID instruction \n" " cpuid # Get and save vendor ID \n" " cmpl $1,%%eax # Make sure 1 is valid input for CPUID\n" @@ -158,14 +158,14 @@ " cpuid # Get family/model/stepping/features\n" " movl %%edx,%0 \n" "1: \n" -" movl %%edi,%%ebx\n" +" popl %%ebx\n" : "=m" (features) : - : "%eax", "%ecx", "%edx", "%edi" + : "%eax", "%ecx", "%edx" ); #elif defined(__GNUC__) && defined(__x86_64__) __asm__ ( -" movq %%rbx,%%rdi\n" +" pushq %%rbx\n" " xorl %%eax,%%eax # Set up for CPUID instruction \n" " cpuid # Get and save vendor ID \n" " cmpl $1,%%eax # Make sure 1 is valid input for CPUID\n" @@ -175,10 +175,10 @@ " cpuid # Get family/model/stepping/features\n" " movl %%edx,%0 \n" "1: \n" -" movq %%rdi,%%rbx\n" +" popq %%rbx\n" : "=m" (features) : - : "%rax", "%rbx", "%rcx", "%rdx", "%rdi" + : "%rax", "%rcx", "%rdx" ); #elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__) __asm { @@ -194,7 +194,7 @@ } #elif defined(__sun) && (defined(__i386) || defined(__amd64)) __asm( -" movl %ebx,%edi\n" +" pushl %ebx\n" " xorl %eax,%eax \n" " cpuid \n" " cmpl $1,%eax \n" @@ -208,7 +208,7 @@ " movl %edx,-8(%rbp) \n" #endif "1: \n" -" movl %edi,%ebx\n" ); +" popl %ebx\n" ); #endif return features; } @@ -218,7 +218,7 @@ int features = 0; #if defined(__GNUC__) && defined(i386) __asm__ ( -" movl %%ebx,%%edi\n" +" pushl %%ebx\n" " movl $0x80000000,%%eax # Query for extended functions \n" " cpuid # Get extended function limit \n" " cmpl $0x80000001,%%eax \n" @@ -227,14 +227,14 @@ " cpuid # and get the information \n" " movl %%edx,%0 \n" "1: \n" -" movl %%edi,%%ebx\n" +" popl %%ebx\n" : "=m" (features) : - : "%eax", "%ecx", "%edx", "%edi" + : "%eax", "%ecx", "%edx" ); #elif defined(__GNUC__) && defined (__x86_64__) __asm__ ( -" movq %%rbx,%%rdi\n" +" pushq %%rbx\n" " movl $0x80000000,%%eax # Query for extended functions \n" " cpuid # Get extended function limit \n" " cmpl $0x80000001,%%eax \n" @@ -243,10 +243,10 @@ " cpuid # and get the information \n" " movl %%edx,%0 \n" "1: \n" -" movq %%rdi,%%rbx\n" +" popq %%rbx\n" : "=m" (features) : - : "%rax", "%rbx", "%rcx", "%rdx", "%rdi" + : "%rax", "%rcx", "%rdx" ); #elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__) __asm { @@ -261,7 +261,7 @@ } #elif defined(__sun) && ( defined(__i386) || defined(__amd64) ) __asm ( -" movl %ebx,%edi\n" +" pushl %ebx\n" " movl $0x80000000,%eax \n" " cpuid \n" " cmpl $0x80000001,%eax \n" @@ -274,7 +274,7 @@ " movl %edx,-8(%rbp) \n" #endif "1: \n" -" movl %edi,%ebx\n" +" popl %ebx\n" ); #endif return features;