aboutsummaryrefslogtreecommitdiff
path: root/sys/crypto/openssl/i386/x86cpuid.S
diff options
context:
space:
mode:
Diffstat (limited to 'sys/crypto/openssl/i386/x86cpuid.S')
-rw-r--r--sys/crypto/openssl/i386/x86cpuid.S42
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