From 28689cedd16b1110c3d15aa3baf72dca4fa6c09a Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 1 Nov 2009 17:51:39 +0000 Subject: [PATCH] 1.2 branch: fixed assembly code register clobbering. --- src/cpuinfo/SDL_cpuinfo.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index 5c2d81f8c..1f53f5d63 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -148,7 +148,7 @@ static __inline__ int CPU_getCPUIDFeatures(void) 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 @@ static __inline__ int CPU_getCPUIDFeatures(void) " 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 @@ static __inline__ int CPU_getCPUIDFeatures(void) " 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 @@ static __inline__ int CPU_getCPUIDFeatures(void) } #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 @@ static __inline__ int CPU_getCPUIDFeatures(void) " movl %edx,-8(%rbp) \n" #endif "1: \n" -" movl %edi,%ebx\n" ); +" popl %ebx\n" ); #endif return features; } @@ -218,7 +218,7 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void) 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 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void) " 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 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void) " 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 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void) } #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 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void) " movl %edx,-8(%rbp) \n" #endif "1: \n" -" movl %edi,%ebx\n" +" popl %ebx\n" ); #endif return features;