diff options
Diffstat (limited to 'sys/crypto/openssl/i386/x86cpuid.S')
-rw-r--r-- | sys/crypto/openssl/i386/x86cpuid.S | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/sys/crypto/openssl/i386/x86cpuid.S b/sys/crypto/openssl/i386/x86cpuid.S index 2a7f7188b65f..1f8f2222fb7b 100644 --- a/sys/crypto/openssl/i386/x86cpuid.S +++ b/sys/crypto/openssl/i386/x86cpuid.S @@ -124,6 +124,24 @@ OPENSSL_ia32_cpuid: xorl %ecx,%ecx .byte 0x0f,0xa2 movl %ebx,8(%edi) + movl %ecx,12(%edi) + movl %edx,16(%edi) + cmpl $1,%eax + jb .L005no_extended_info + movl $7,%eax + movl $1,%ecx + .byte 0x0f,0xa2 + movl %eax,20(%edi) + movl %edx,24(%edi) + movl %ebx,28(%edi) + movl %ecx,32(%edi) + andl $524288,%edx + cmpl $0,%edx + je .L005no_extended_info + movl $36,%eax + movl $0,%ecx + .byte 0x0f,0xa2 + movl %ebx,36(%edi) .L005no_extended_info: btl $27,%ebp jnc .L006clear_avx @@ -139,6 +157,7 @@ OPENSSL_ia32_cpuid: andl $4278190079,%esi .L006clear_avx: andl $4026525695,%ebp + andl $4286578687,20(%edi) andl $4294967263,8(%edi) .L007done: movl %esi,%eax @@ -594,7 +613,7 @@ OPENSSL_ia32_rdseed_bytes: .size OPENSSL_ia32_rdseed_bytes,.-.L_OPENSSL_ia32_rdseed_bytes_begin .hidden OPENSSL_cpuid_setup .hidden OPENSSL_ia32cap_P -.comm OPENSSL_ia32cap_P,16,4 +.comm OPENSSL_ia32cap_P,40,4 .section .init call OPENSSL_cpuid_setup @@ -739,6 +758,24 @@ OPENSSL_ia32_cpuid: xorl %ecx,%ecx .byte 0x0f,0xa2 movl %ebx,8(%edi) + movl %ecx,12(%edi) + movl %edx,16(%edi) + cmpl $1,%eax + jb .L005no_extended_info + movl $7,%eax + movl $1,%ecx + .byte 0x0f,0xa2 + movl %eax,20(%edi) + movl %edx,24(%edi) + movl %ebx,28(%edi) + movl %ecx,32(%edi) + andl $524288,%edx + cmpl $0,%edx + je .L005no_extended_info + movl $36,%eax + movl $0,%ecx + .byte 0x0f,0xa2 + movl %ebx,36(%edi) .L005no_extended_info: btl $27,%ebp jnc .L006clear_avx @@ -754,6 +791,7 @@ OPENSSL_ia32_cpuid: andl $4278190079,%esi .L006clear_avx: andl $4026525695,%ebp + andl $4286578687,20(%edi) andl $4294967263,8(%edi) .L007done: movl %esi,%eax @@ -1194,7 +1232,7 @@ OPENSSL_ia32_rdseed_bytes: .size OPENSSL_ia32_rdseed_bytes,.-.L_OPENSSL_ia32_rdseed_bytes_begin .hidden OPENSSL_cpuid_setup .hidden OPENSSL_ia32cap_P -.comm OPENSSL_ia32cap_P,16,4 +.comm OPENSSL_ia32cap_P,40,4 .section .init call OPENSSL_cpuid_setup |