Missing pop over a jump
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404258
This commit is contained in:
parent
3c1211c031
commit
ca0eb1c533
1 changed files with 18 additions and 2 deletions
|
@ -156,10 +156,12 @@ 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"
|
||||
|
@ -171,14 +173,16 @@ 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)
|
||||
|
@ -190,10 +194,12 @@ 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
|
||||
|
@ -204,10 +210,12 @@ done:
|
|||
" 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
|
||||
|
@ -231,9 +239,11 @@ 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"
|
||||
|
@ -247,9 +257,11 @@ 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"
|
||||
|
@ -263,9 +275,11 @@ 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
|
||||
|
@ -276,9 +290,11 @@ done:
|
|||
" 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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue