From 599cd9340f4ffe846f517421ed961e9dd8c2defb Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 3 Dec 2009 04:20:46 +0000 Subject: [PATCH] Missing pop over a jump --- src/cpuinfo/SDL_cpuinfo.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index 191725b22..69c55d578 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -151,10 +151,12 @@ static __inline__ int CPU_getCPUIDFeatures(void) " xorl %%eax,%%eax # Set up for CPUID instruction \n" " pushl %%ebx \n" " cpuid # Get and save vendor ID \n" +" popl %%ebx \n" " cmpl $1,%%eax # Make sure 1 is valid input for CPUID\n" " jl 1f # We dont have the CPUID instruction\n" " xorl %%eax,%%eax \n" " incl %%eax \n" +" pushl %%ebx \n" " cpuid # Get family/model/stepping/features\n" " popl %%ebx \n" " movl %%edx,%0 \n" @@ -166,14 +168,16 @@ static __inline__ int CPU_getCPUIDFeatures(void) #elif defined(__GNUC__) && defined(__x86_64__) __asm__ ( " xorl %%eax,%%eax # Set up for CPUID instruction \n" -" pushq %%rbx\n" +" pushq %%rbx \n" " cpuid # Get and save vendor ID \n" +" popq %%rbx \n" " cmpl $1,%%eax # Make sure 1 is valid input for CPUID\n" " jl 1f # We dont have the CPUID instruction\n" " xorl %%eax,%%eax \n" " incl %%eax \n" +" pushq %%rbx \n" " cpuid # Get family/model/stepping/features\n" -" popq %%rbx\n" +" popq %%rbx \n" " movl %%edx,%0 \n" "1: \n" : "=m" (features) @@ -185,10 +189,12 @@ static __inline__ int CPU_getCPUIDFeatures(void) xor eax, eax ; Set up for CPUID instruction push ebx cpuid ; Get and save vendor ID + pop ebx cmp eax, 1 ; Make sure 1 is valid input for CPUID jl done ; We dont have the CPUID instruction xor eax, eax inc eax + push ebx cpuid ; Get family/model/stepping/features pop ebx mov features, edx @@ -199,10 +205,12 @@ static __inline__ int CPU_getCPUIDFeatures(void) " xorl %eax,%eax \n" " pushl %ebx \n" " cpuid \n" +" popl %ebx \n" " cmpl $1,%eax \n" " jl 1f \n" " xorl %eax,%eax \n" " incl %eax \n" +" pushl %ebx \n" " cpuid \n" " popl %ebx \n" #ifdef __i386 @@ -223,9 +231,11 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void) " movl $0x80000000,%%eax # Query for extended functions \n" " pushl %%ebx \n" " cpuid # Get extended function limit \n" +" popl %%ebx \n" " cmpl $0x80000001,%%eax \n" " jl 1f # Nope, we dont have function 800000001h\n" " movl $0x80000001,%%eax # Setup extended function 800000001h\n" +" pushl %%ebx \n" " cpuid # and get the information \n" " popl %%ebx \n" " movl %%edx,%0 \n" @@ -239,9 +249,11 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void) " movl $0x80000000,%%eax # Query for extended functions \n" " pushq %%rbx \n" " cpuid # Get extended function limit \n" +" popq %%rbx \n" " cmpl $0x80000001,%%eax \n" " jl 1f # Nope, we dont have function 800000001h\n" " movl $0x80000001,%%eax # Setup extended function 800000001h\n" +" pushq %%rbx \n" " cpuid # and get the information \n" " popq %%rbx \n" " movl %%edx,%0 \n" @@ -255,9 +267,11 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void) mov eax,80000000h ; Query for extended functions push ebx cpuid ; Get extended function limit + pop ebx cmp eax,80000001h jl done ; Nope, we dont have function 800000001h mov eax,80000001h ; Setup extended function 800000001h + push ebx cpuid ; and get the information pop ebx mov features,edx @@ -268,9 +282,11 @@ static __inline__ int CPU_getCPUIDFeaturesExt(void) " movl $0x80000000,%eax \n" " pushl %ebx \n" " cpuid \n" +" popl %ebx \n" " cmpl $0x80000001,%eax \n" " jl 1f \n" " movl $0x80000001,%eax \n" +" pushl %ebx \n" " cpuid \n" " popl %ebx \n" #ifdef __i386