Skip to content
Permalink
Browse files

Missing pop over a jump

  • Loading branch information
slouken committed Dec 3, 2009
1 parent 80bc2e6 commit 599cd9340f4ffe846f517421ed961e9dd8c2defb
Showing with 18 additions and 2 deletions.
  1. +18 −2 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

0 comments on commit 599cd93

Please sign in to comment.