+++ /dev/null
-# Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# * Redistributions of source code must retain copyright notices,
-# this list of conditions and the following disclaimer.
-#
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials
-# provided with the distribution.
-#
-# * Neither the name of the Andy Polyakov nor the names of its
-# copyright holder and contributors may be used to endorse or
-# promote products derived from this software without specific
-# prior written permission.
-#
-# ALTERNATIVELY, provided that this notice is retained in full, this
-# product may be distributed under the terms of the GNU General Public
-# License (GPL), in which case the provisions of the GPL apply INSTEAD OF
-# those given above.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# *** This file is auto-generated ***
-#
-.file "x86cpuid.s"
-.text
-.globl _OPENSSL_ia32_cpuid
-.def _OPENSSL_ia32_cpuid; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_ia32_cpuid:
-.L_OPENSSL_ia32_cpuid_begin:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
- xorl %edx,%edx
- pushfl
- popl %eax
- movl %eax,%ecx
- xorl $2097152,%eax
- pushl %eax
- popfl
- pushfl
- popl %eax
- xorl %eax,%ecx
- xorl %eax,%eax
- btl $21,%ecx
- jnc .L000nocpuid
- movl 20(%esp),%esi
- movl %eax,8(%esi)
- .byte 0x0f,0xa2
- movl %eax,%edi
- xorl %eax,%eax
- cmpl $1970169159,%ebx
- setne %al
- movl %eax,%ebp
- cmpl $1231384169,%edx
- setne %al
- orl %eax,%ebp
- cmpl $1818588270,%ecx
- setne %al
- orl %eax,%ebp
- jz .L001intel
- cmpl $1752462657,%ebx
- setne %al
- movl %eax,%esi
- cmpl $1769238117,%edx
- setne %al
- orl %eax,%esi
- cmpl $1145913699,%ecx
- setne %al
- orl %eax,%esi
- jnz .L001intel
- movl $2147483648,%eax
- .byte 0x0f,0xa2
- cmpl $2147483649,%eax
- jb .L001intel
- movl %eax,%esi
- movl $2147483649,%eax
- .byte 0x0f,0xa2
- orl %ecx,%ebp
- andl $2049,%ebp
- cmpl $2147483656,%esi
- jb .L001intel
- movl $2147483656,%eax
- .byte 0x0f,0xa2
- movzbl %cl,%esi
- incl %esi
- movl $1,%eax
- xorl %ecx,%ecx
- .byte 0x0f,0xa2
- btl $28,%edx
- jnc .L002generic
- shrl $16,%ebx
- andl $255,%ebx
- cmpl %esi,%ebx
- ja .L002generic
- andl $4026531839,%edx
- jmp .L002generic
-.L001intel:
- cmpl $7,%edi
- jb .L003cacheinfo
- movl 20(%esp),%esi
- movl $7,%eax
- xorl %ecx,%ecx
- .byte 0x0f,0xa2
- movl %ebx,8(%esi)
-.L003cacheinfo:
- cmpl $4,%edi
- movl $-1,%edi
- jb .L004nocacheinfo
- movl $4,%eax
- movl $0,%ecx
- .byte 0x0f,0xa2
- movl %eax,%edi
- shrl $14,%edi
- andl $4095,%edi
-.L004nocacheinfo:
- movl $1,%eax
- xorl %ecx,%ecx
- .byte 0x0f,0xa2
- andl $3220176895,%edx
- cmpl $0,%ebp
- jne .L005notintel
- orl $1073741824,%edx
- andb $15,%ah
- cmpb $15,%ah
- jne .L005notintel
- orl $1048576,%edx
-.L005notintel:
- btl $28,%edx
- jnc .L002generic
- andl $4026531839,%edx
- cmpl $0,%edi
- je .L002generic
- orl $268435456,%edx
- shrl $16,%ebx
- cmpb $1,%bl
- ja .L002generic
- andl $4026531839,%edx
-.L002generic:
- andl $2048,%ebp
- andl $4294965247,%ecx
- movl %edx,%esi
- orl %ecx,%ebp
- btl $27,%ecx
- jnc .L006clear_avx
- xorl %ecx,%ecx
-.byte 15,1,208
- andl $6,%eax
- cmpl $6,%eax
- je .L007done
- cmpl $2,%eax
- je .L006clear_avx
-.L008clear_xmm:
- andl $4261412861,%ebp
- andl $4278190079,%esi
-.L006clear_avx:
- andl $4026525695,%ebp
- movl 20(%esp),%edi
- andl $4294967263,8(%edi)
-.L007done:
- movl %esi,%eax
- movl %ebp,%edx
-.L000nocpuid:
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.globl _OPENSSL_rdtsc
-.def _OPENSSL_rdtsc; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_rdtsc:
-.L_OPENSSL_rdtsc_begin:
- xorl %eax,%eax
- xorl %edx,%edx
- leal __gnutls_x86_cpuid_s,%ecx
- btl $4,(%ecx)
- jnc .L009notsc
- .byte 0x0f,0x31
-.L009notsc:
- ret
-.globl _OPENSSL_instrument_halt
-.def _OPENSSL_instrument_halt; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_instrument_halt:
-.L_OPENSSL_instrument_halt_begin:
- leal __gnutls_x86_cpuid_s,%ecx
- btl $4,(%ecx)
- jnc .L010nohalt
-.long 2421723150
- andl $3,%eax
- jnz .L010nohalt
- pushfl
- popl %eax
- btl $9,%eax
- jnc .L010nohalt
- .byte 0x0f,0x31
- pushl %edx
- pushl %eax
- hlt
- .byte 0x0f,0x31
- subl (%esp),%eax
- sbbl 4(%esp),%edx
- addl $8,%esp
- ret
-.L010nohalt:
- xorl %eax,%eax
- xorl %edx,%edx
- ret
-.globl _OPENSSL_far_spin
-.def _OPENSSL_far_spin; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_far_spin:
-.L_OPENSSL_far_spin_begin:
- pushfl
- popl %eax
- btl $9,%eax
- jnc .L011nospin
- movl 4(%esp),%eax
- movl 8(%esp),%ecx
-.long 2430111262
- xorl %eax,%eax
- movl (%ecx),%edx
- jmp .L012spin
-.align 16
-.L012spin:
- incl %eax
- cmpl (%ecx),%edx
- je .L012spin
-.long 529567888
- ret
-.L011nospin:
- xorl %eax,%eax
- xorl %edx,%edx
- ret
-.globl _OPENSSL_wipe_cpu
-.def _OPENSSL_wipe_cpu; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_wipe_cpu:
-.L_OPENSSL_wipe_cpu_begin:
- xorl %eax,%eax
- xorl %edx,%edx
- leal __gnutls_x86_cpuid_s,%ecx
- movl (%ecx),%ecx
- btl $1,(%ecx)
- jnc .L013no_x87
-.long 4007259865,4007259865,4007259865,4007259865,2430851995
-.L013no_x87:
- leal 4(%esp),%eax
- ret
-.globl _OPENSSL_atomic_add
-.def _OPENSSL_atomic_add; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_atomic_add:
-.L_OPENSSL_atomic_add_begin:
- movl 4(%esp),%edx
- movl 8(%esp),%ecx
- pushl %ebx
- nop
- movl (%edx),%eax
-.L014spin:
- leal (%eax,%ecx,1),%ebx
- nop
-.long 447811568
- jne .L014spin
- movl %ebx,%eax
- popl %ebx
- ret
-.globl _OPENSSL_indirect_call
-.def _OPENSSL_indirect_call; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_indirect_call:
-.L_OPENSSL_indirect_call_begin:
- pushl %ebp
- movl %esp,%ebp
- subl $28,%esp
- movl 12(%ebp),%ecx
- movl %ecx,(%esp)
- movl 16(%ebp),%edx
- movl %edx,4(%esp)
- movl 20(%ebp),%eax
- movl %eax,8(%esp)
- movl 24(%ebp),%eax
- movl %eax,12(%esp)
- movl 28(%ebp),%eax
- movl %eax,16(%esp)
- movl 32(%ebp),%eax
- movl %eax,20(%esp)
- movl 36(%ebp),%eax
- movl %eax,24(%esp)
- call *8(%ebp)
- movl %ebp,%esp
- popl %ebp
- ret
-.globl _OPENSSL_cleanse
-.def _OPENSSL_cleanse; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_cleanse:
-.L_OPENSSL_cleanse_begin:
- movl 4(%esp),%edx
- movl 8(%esp),%ecx
- xorl %eax,%eax
- cmpl $7,%ecx
- jae .L015lot
- cmpl $0,%ecx
- je .L016ret
-.L017little:
- movb %al,(%edx)
- subl $1,%ecx
- leal 1(%edx),%edx
- jnz .L017little
-.L016ret:
- ret
-.align 16
-.L015lot:
- testl $3,%edx
- jz .L018aligned
- movb %al,(%edx)
- leal -1(%ecx),%ecx
- leal 1(%edx),%edx
- jmp .L015lot
-.L018aligned:
- movl %eax,(%edx)
- leal -4(%ecx),%ecx
- testl $-4,%ecx
- leal 4(%edx),%edx
- jnz .L018aligned
- cmpl $0,%ecx
- jne .L017little
- ret
-.globl _OPENSSL_instrument_bus
-.def _OPENSSL_instrument_bus; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_instrument_bus:
-.L_OPENSSL_instrument_bus_begin:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
- movl $0,%eax
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.globl _OPENSSL_instrument_bus2
-.def _OPENSSL_instrument_bus2; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_instrument_bus2:
-.L_OPENSSL_instrument_bus2_begin:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
- movl $0,%eax
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.globl _OPENSSL_ia32_rdrand
-.def _OPENSSL_ia32_rdrand; .scl 2; .type 32; .endef
-.align 16
-_OPENSSL_ia32_rdrand:
-.L_OPENSSL_ia32_rdrand_begin:
- movl $8,%ecx
-.L019loop:
-.byte 15,199,240
- jc .L020break
- loop .L019loop
-.L020break:
- cmpl $0,%eax
- cmovel %ecx,%eax
- ret
-.comm __gnutls_x86_cpuid_s,16
-.section .ctors
-.long _OPENSSL_cpuid_setup
-
-.section .note.GNU-stack,"",%progbits
+++ /dev/null
-# Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# * Redistributions of source code must retain copyright notices,
-# this list of conditions and the following disclaimer.
-#
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials
-# provided with the distribution.
-#
-# * Neither the name of the Andy Polyakov nor the names of its
-# copyright holder and contributors may be used to endorse or
-# promote products derived from this software without specific
-# prior written permission.
-#
-# ALTERNATIVELY, provided that this notice is retained in full, this
-# product may be distributed under the terms of the GNU General Public
-# License (GPL), in which case the provisions of the GPL apply INSTEAD OF
-# those given above.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# *** This file is auto-generated ***
-#
-
-
-.section .ctors
- .p2align 3
- .quad OPENSSL_cpuid_setup
-
-
-.comm _gnutls_x86_cpuid_s,16,4
-
-.text
-
-.globl OPENSSL_atomic_add
-.def OPENSSL_atomic_add; .scl 2; .type 32; .endef
-.p2align 4
-OPENSSL_atomic_add:
- movl (%rcx),%eax
-.Lspin: leaq (%rdx,%rax,1),%r8
-.byte 0xf0
- cmpxchgl %r8d,(%rcx)
- jne .Lspin
- movl %r8d,%eax
-.byte 0x48,0x98
- .byte 0xf3,0xc3
-
-
-.globl OPENSSL_rdtsc
-.def OPENSSL_rdtsc; .scl 2; .type 32; .endef
-.p2align 4
-OPENSSL_rdtsc:
- rdtsc
- shlq $32,%rdx
- orq %rdx,%rax
- .byte 0xf3,0xc3
-
-
-.globl OPENSSL_ia32_cpuid
-.def OPENSSL_ia32_cpuid; .scl 2; .type 32; .endef
-.p2align 4
-OPENSSL_ia32_cpuid:
- movq %rdi,8(%rsp)
- movq %rsi,16(%rsp)
- movq %rsp,%rax
-.LSEH_begin_OPENSSL_ia32_cpuid:
- movq %rcx,%rdi
-
- movq %rbx,%r8
-
- xorl %eax,%eax
- movl %eax,8(%rdi)
- cpuid
- movl %eax,%r11d
-
- xorl %eax,%eax
- cmpl $1970169159,%ebx
- setne %al
- movl %eax,%r9d
- cmpl $1231384169,%edx
- setne %al
- orl %eax,%r9d
- cmpl $1818588270,%ecx
- setne %al
- orl %eax,%r9d
- jz .Lintel
-
- cmpl $1752462657,%ebx
- setne %al
- movl %eax,%r10d
- cmpl $1769238117,%edx
- setne %al
- orl %eax,%r10d
- cmpl $1145913699,%ecx
- setne %al
- orl %eax,%r10d
- jnz .Lintel
-
-
- movl $2147483648,%eax
- cpuid
- cmpl $2147483649,%eax
- jb .Lintel
- movl %eax,%r10d
- movl $2147483649,%eax
- cpuid
- orl %ecx,%r9d
- andl $2049,%r9d
-
- cmpl $2147483656,%r10d
- jb .Lintel
-
- movl $2147483656,%eax
- cpuid
- movzbq %cl,%r10
- incq %r10
-
- movl $1,%eax
- cpuid
- btl $28,%edx
- jnc .Lgeneric
- shrl $16,%ebx
- cmpb %r10b,%bl
- ja .Lgeneric
- andl $4026531839,%edx
- jmp .Lgeneric
-
-.Lintel:
- cmpl $4,%r11d
- movl $-1,%r10d
- jb .Lnocacheinfo
-
- movl $4,%eax
- movl $0,%ecx
- cpuid
- movl %eax,%r10d
- shrl $14,%r10d
- andl $4095,%r10d
-
- cmpl $7,%r11d
- jb .Lnocacheinfo
-
- movl $7,%eax
- xorl %ecx,%ecx
- cpuid
- movl %ebx,8(%rdi)
-
-.Lnocacheinfo:
- movl $1,%eax
- cpuid
- andl $3220176895,%edx
- cmpl $0,%r9d
- jne .Lnotintel
- orl $1073741824,%edx
- andb $15,%ah
- cmpb $15,%ah
- jne .Lnotintel
- orl $1048576,%edx
-.Lnotintel:
- btl $28,%edx
- jnc .Lgeneric
- andl $4026531839,%edx
- cmpl $0,%r10d
- je .Lgeneric
-
- orl $268435456,%edx
- shrl $16,%ebx
- cmpb $1,%bl
- ja .Lgeneric
- andl $4026531839,%edx
-.Lgeneric:
- andl $2048,%r9d
- andl $4294965247,%ecx
- orl %ecx,%r9d
-
- movl %edx,%r10d
- btl $27,%r9d
- jnc .Lclear_avx
- xorl %ecx,%ecx
-.byte 0x0f,0x01,0xd0
- andl $6,%eax
- cmpl $6,%eax
- je .Ldone
-.Lclear_avx:
- movl $4026525695,%eax
- andl %eax,%r9d
- andl $4294967263,8(%rdi)
-.Ldone:
- shlq $32,%r9
- movl %r10d,%eax
- movq %r8,%rbx
- orq %r9,%rax
- movq 8(%rsp),%rdi
- movq 16(%rsp),%rsi
- .byte 0xf3,0xc3
-.LSEH_end_OPENSSL_ia32_cpuid:
-
-.globl OPENSSL_cleanse
-.def OPENSSL_cleanse; .scl 2; .type 32; .endef
-.p2align 4
-OPENSSL_cleanse:
- xorq %rax,%rax
- cmpq $15,%rdx
- jae .Lot
- cmpq $0,%rdx
- je .Lret
-.Little:
- movb %al,(%rcx)
- subq $1,%rdx
- leaq 1(%rcx),%rcx
- jnz .Little
-.Lret:
- .byte 0xf3,0xc3
-.p2align 4
-.Lot:
- testq $7,%rcx
- jz .Laligned
- movb %al,(%rcx)
- leaq -1(%rdx),%rdx
- leaq 1(%rcx),%rcx
- jmp .Lot
-.Laligned:
- movq %rax,(%rcx)
- leaq -8(%rdx),%rdx
- testq $-8,%rdx
- leaq 8(%rcx),%rcx
- jnz .Laligned
- cmpq $0,%rdx
- jne .Little
- .byte 0xf3,0xc3
-
-.globl OPENSSL_wipe_cpu
-.def OPENSSL_wipe_cpu; .scl 2; .type 32; .endef
-.p2align 4
-OPENSSL_wipe_cpu:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- xorq %rcx,%rcx
- xorq %rdx,%rdx
- xorq %r8,%r8
- xorq %r9,%r9
- xorq %r10,%r10
- xorq %r11,%r11
- leaq 8(%rsp),%rax
- .byte 0xf3,0xc3
-
-.globl OPENSSL_instrument_bus
-.def OPENSSL_instrument_bus; .scl 2; .type 32; .endef
-.p2align 4
-OPENSSL_instrument_bus:
- movq %rcx,%r10
- movq %rdx,%rcx
- movq %rdx,%r11
-
- rdtsc
- movl %eax,%r8d
- movl $0,%r9d
- clflush (%r10)
-.byte 0xf0
- addl %r9d,(%r10)
- jmp .Loop
-.p2align 4
-.Loop: rdtsc
- movl %eax,%edx
- subl %r8d,%eax
- movl %edx,%r8d
- movl %eax,%r9d
- clflush (%r10)
-.byte 0xf0
- addl %eax,(%r10)
- leaq 4(%r10),%r10
- subq $1,%rcx
- jnz .Loop
-
- movq %r11,%rax
- .byte 0xf3,0xc3
-
-
-.globl OPENSSL_instrument_bus2
-.def OPENSSL_instrument_bus2; .scl 2; .type 32; .endef
-.p2align 4
-OPENSSL_instrument_bus2:
- movq %rcx,%r10
- movq %rdx,%rcx
- movq %r8,%r11
- movq %rcx,8(%rsp)
-
- rdtsc
- movl %eax,%r8d
- movl $0,%r9d
-
- clflush (%r10)
-.byte 0xf0
- addl %r9d,(%r10)
-
- rdtsc
- movl %eax,%edx
- subl %r8d,%eax
- movl %edx,%r8d
- movl %eax,%r9d
-.Loop2:
- clflush (%r10)
-.byte 0xf0
- addl %eax,(%r10)
-
- subq $1,%r11
- jz .Ldone2
-
- rdtsc
- movl %eax,%edx
- subl %r8d,%eax
- movl %edx,%r8d
- cmpl %r9d,%eax
- movl %eax,%r9d
- movl $0,%edx
- setne %dl
- subq %rdx,%rcx
- leaq (%r10,%rdx,4),%r10
- jnz .Loop2
-
-.Ldone2:
- movq 8(%rsp),%rax
- subq %rcx,%rax
- .byte 0xf3,0xc3
-
-.globl OPENSSL_ia32_rdrand
-.def OPENSSL_ia32_rdrand; .scl 2; .type 32; .endef
-.p2align 4
-OPENSSL_ia32_rdrand:
- movl $8,%ecx
-.Loop_rdrand:
-.byte 72,15,199,240
- jc .Lbreak_rdrand
- loop .Loop_rdrand
-.Lbreak_rdrand:
- cmpq $0,%rax
- cmoveq %rcx,%rax
- .byte 0xf3,0xc3
-
-
-.section .note.GNU-stack,"",%progbits
+++ /dev/null
-# Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# * Redistributions of source code must retain copyright notices,
-# this list of conditions and the following disclaimer.
-#
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials
-# provided with the distribution.
-#
-# * Neither the name of the Andy Polyakov nor the names of its
-# copyright holder and contributors may be used to endorse or
-# promote products derived from this software without specific
-# prior written permission.
-#
-# ALTERNATIVELY, provided that this notice is retained in full, this
-# product may be distributed under the terms of the GNU General Public
-# License (GPL), in which case the provisions of the GPL apply INSTEAD OF
-# those given above.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# *** This file is auto-generated ***
-#
-.file "x86cpuid.s"
-.text
-.globl _OPENSSL_ia32_cpuid
-.align 4
-_OPENSSL_ia32_cpuid:
-L_OPENSSL_ia32_cpuid_begin:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
- xorl %edx,%edx
- pushfl
- popl %eax
- movl %eax,%ecx
- xorl $2097152,%eax
- pushl %eax
- popfl
- pushfl
- popl %eax
- xorl %eax,%ecx
- xorl %eax,%eax
- btl $21,%ecx
- jnc L000nocpuid
- movl 20(%esp),%esi
- movl %eax,8(%esi)
- .byte 0x0f,0xa2
- movl %eax,%edi
- xorl %eax,%eax
- cmpl $1970169159,%ebx
- setne %al
- movl %eax,%ebp
- cmpl $1231384169,%edx
- setne %al
- orl %eax,%ebp
- cmpl $1818588270,%ecx
- setne %al
- orl %eax,%ebp
- jz L001intel
- cmpl $1752462657,%ebx
- setne %al
- movl %eax,%esi
- cmpl $1769238117,%edx
- setne %al
- orl %eax,%esi
- cmpl $1145913699,%ecx
- setne %al
- orl %eax,%esi
- jnz L001intel
- movl $2147483648,%eax
- .byte 0x0f,0xa2
- cmpl $2147483649,%eax
- jb L001intel
- movl %eax,%esi
- movl $2147483649,%eax
- .byte 0x0f,0xa2
- orl %ecx,%ebp
- andl $2049,%ebp
- cmpl $2147483656,%esi
- jb L001intel
- movl $2147483656,%eax
- .byte 0x0f,0xa2
- movzbl %cl,%esi
- incl %esi
- movl $1,%eax
- xorl %ecx,%ecx
- .byte 0x0f,0xa2
- btl $28,%edx
- jnc L002generic
- shrl $16,%ebx
- andl $255,%ebx
- cmpl %esi,%ebx
- ja L002generic
- andl $4026531839,%edx
- jmp L002generic
-L001intel:
- cmpl $7,%edi
- jb L003cacheinfo
- movl 20(%esp),%esi
- movl $7,%eax
- xorl %ecx,%ecx
- .byte 0x0f,0xa2
- movl %ebx,8(%esi)
-L003cacheinfo:
- cmpl $4,%edi
- movl $-1,%edi
- jb L004nocacheinfo
- movl $4,%eax
- movl $0,%ecx
- .byte 0x0f,0xa2
- movl %eax,%edi
- shrl $14,%edi
- andl $4095,%edi
-L004nocacheinfo:
- movl $1,%eax
- xorl %ecx,%ecx
- .byte 0x0f,0xa2
- andl $3220176895,%edx
- cmpl $0,%ebp
- jne L005notintel
- orl $1073741824,%edx
- andb $15,%ah
- cmpb $15,%ah
- jne L005notintel
- orl $1048576,%edx
-L005notintel:
- btl $28,%edx
- jnc L002generic
- andl $4026531839,%edx
- cmpl $0,%edi
- je L002generic
- orl $268435456,%edx
- shrl $16,%ebx
- cmpb $1,%bl
- ja L002generic
- andl $4026531839,%edx
-L002generic:
- andl $2048,%ebp
- andl $4294965247,%ecx
- movl %edx,%esi
- orl %ecx,%ebp
- btl $27,%ecx
- jnc L006clear_avx
- xorl %ecx,%ecx
-.byte 15,1,208
- andl $6,%eax
- cmpl $6,%eax
- je L007done
- cmpl $2,%eax
- je L006clear_avx
-L008clear_xmm:
- andl $4261412861,%ebp
- andl $4278190079,%esi
-L006clear_avx:
- andl $4026525695,%ebp
- movl 20(%esp),%edi
- andl $4294967263,8(%edi)
-L007done:
- movl %esi,%eax
- movl %ebp,%edx
-L000nocpuid:
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.globl _OPENSSL_rdtsc
-.align 4
-_OPENSSL_rdtsc:
-L_OPENSSL_rdtsc_begin:
- xorl %eax,%eax
- xorl %edx,%edx
- call L009PIC_me_up
-L009PIC_me_up:
- popl %ecx
- movl L__gnutls_x86_cpuid_s$non_lazy_ptr-L009PIC_me_up(%ecx),%ecx
- btl $4,(%ecx)
- jnc L010notsc
- .byte 0x0f,0x31
-L010notsc:
- ret
-.globl _OPENSSL_instrument_halt
-.align 4
-_OPENSSL_instrument_halt:
-L_OPENSSL_instrument_halt_begin:
- call L011PIC_me_up
-L011PIC_me_up:
- popl %ecx
- movl L__gnutls_x86_cpuid_s$non_lazy_ptr-L011PIC_me_up(%ecx),%ecx
- btl $4,(%ecx)
- jnc L012nohalt
-.long 2421723150
- andl $3,%eax
- jnz L012nohalt
- pushfl
- popl %eax
- btl $9,%eax
- jnc L012nohalt
- .byte 0x0f,0x31
- pushl %edx
- pushl %eax
- hlt
- .byte 0x0f,0x31
- subl (%esp),%eax
- sbbl 4(%esp),%edx
- addl $8,%esp
- ret
-L012nohalt:
- xorl %eax,%eax
- xorl %edx,%edx
- ret
-.globl _OPENSSL_far_spin
-.align 4
-_OPENSSL_far_spin:
-L_OPENSSL_far_spin_begin:
- pushfl
- popl %eax
- btl $9,%eax
- jnc L013nospin
- movl 4(%esp),%eax
- movl 8(%esp),%ecx
-.long 2430111262
- xorl %eax,%eax
- movl (%ecx),%edx
- jmp L014spin
-.align 4,0x90
-L014spin:
- incl %eax
- cmpl (%ecx),%edx
- je L014spin
-.long 529567888
- ret
-L013nospin:
- xorl %eax,%eax
- xorl %edx,%edx
- ret
-.globl _OPENSSL_wipe_cpu
-.align 4
-_OPENSSL_wipe_cpu:
-L_OPENSSL_wipe_cpu_begin:
- xorl %eax,%eax
- xorl %edx,%edx
- call L015PIC_me_up
-L015PIC_me_up:
- popl %ecx
- movl L__gnutls_x86_cpuid_s$non_lazy_ptr-L015PIC_me_up(%ecx),%ecx
- movl (%ecx),%ecx
- btl $1,(%ecx)
- jnc L016no_x87
-.long 4007259865,4007259865,4007259865,4007259865,2430851995
-L016no_x87:
- leal 4(%esp),%eax
- ret
-.globl _OPENSSL_atomic_add
-.align 4
-_OPENSSL_atomic_add:
-L_OPENSSL_atomic_add_begin:
- movl 4(%esp),%edx
- movl 8(%esp),%ecx
- pushl %ebx
- nop
- movl (%edx),%eax
-L017spin:
- leal (%eax,%ecx,1),%ebx
- nop
-.long 447811568
- jne L017spin
- movl %ebx,%eax
- popl %ebx
- ret
-.globl _OPENSSL_indirect_call
-.align 4
-_OPENSSL_indirect_call:
-L_OPENSSL_indirect_call_begin:
- pushl %ebp
- movl %esp,%ebp
- subl $28,%esp
- movl 12(%ebp),%ecx
- movl %ecx,(%esp)
- movl 16(%ebp),%edx
- movl %edx,4(%esp)
- movl 20(%ebp),%eax
- movl %eax,8(%esp)
- movl 24(%ebp),%eax
- movl %eax,12(%esp)
- movl 28(%ebp),%eax
- movl %eax,16(%esp)
- movl 32(%ebp),%eax
- movl %eax,20(%esp)
- movl 36(%ebp),%eax
- movl %eax,24(%esp)
- call *8(%ebp)
- movl %ebp,%esp
- popl %ebp
- ret
-.globl _OPENSSL_cleanse
-.align 4
-_OPENSSL_cleanse:
-L_OPENSSL_cleanse_begin:
- movl 4(%esp),%edx
- movl 8(%esp),%ecx
- xorl %eax,%eax
- cmpl $7,%ecx
- jae L018lot
- cmpl $0,%ecx
- je L019ret
-L020little:
- movb %al,(%edx)
- subl $1,%ecx
- leal 1(%edx),%edx
- jnz L020little
-L019ret:
- ret
-.align 4,0x90
-L018lot:
- testl $3,%edx
- jz L021aligned
- movb %al,(%edx)
- leal -1(%ecx),%ecx
- leal 1(%edx),%edx
- jmp L018lot
-L021aligned:
- movl %eax,(%edx)
- leal -4(%ecx),%ecx
- testl $-4,%ecx
- leal 4(%edx),%edx
- jnz L021aligned
- cmpl $0,%ecx
- jne L020little
- ret
-.globl _OPENSSL_instrument_bus
-.align 4
-_OPENSSL_instrument_bus:
-L_OPENSSL_instrument_bus_begin:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
- movl $0,%eax
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.globl _OPENSSL_instrument_bus2
-.align 4
-_OPENSSL_instrument_bus2:
-L_OPENSSL_instrument_bus2_begin:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
- movl $0,%eax
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.globl _OPENSSL_ia32_rdrand
-.align 4
-_OPENSSL_ia32_rdrand:
-L_OPENSSL_ia32_rdrand_begin:
- movl $8,%ecx
-L022loop:
-.byte 15,199,240
- jc L023break
- loop L022loop
-L023break:
- cmpl $0,%eax
- cmovel %ecx,%eax
- ret
-.section __IMPORT,__pointers,non_lazy_symbol_pointers
-L__gnutls_x86_cpuid_s$non_lazy_ptr:
-.indirect_symbol __gnutls_x86_cpuid_s
-.long 0
-.comm __gnutls_x86_cpuid_s,16,2
-.mod_init_func
-.align 2
-.long _OPENSSL_cpuid_setup
-
-.section .note.GNU-stack,"",%progbits
+++ /dev/null
-# Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# * Redistributions of source code must retain copyright notices,
-# this list of conditions and the following disclaimer.
-#
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials
-# provided with the distribution.
-#
-# * Neither the name of the Andy Polyakov nor the names of its
-# copyright holder and contributors may be used to endorse or
-# promote products derived from this software without specific
-# prior written permission.
-#
-# ALTERNATIVELY, provided that this notice is retained in full, this
-# product may be distributed under the terms of the GNU General Public
-# License (GPL), in which case the provisions of the GPL apply INSTEAD OF
-# those given above.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# *** This file is auto-generated ***
-#
-
-.private_extern _OPENSSL_cpuid_setup
-.mod_init_func
- .p2align 3
- .quad _OPENSSL_cpuid_setup
-
-.private_extern __gnutls_x86_cpuid_s
-.comm __gnutls_x86_cpuid_s,16,2
-
-.text
-
-.globl _OPENSSL_atomic_add
-
-.p2align 4
-_OPENSSL_atomic_add:
- movl (%rdi),%eax
-L$spin: leaq (%rsi,%rax,1),%r8
-.byte 0xf0
- cmpxchgl %r8d,(%rdi)
- jne L$spin
- movl %r8d,%eax
-.byte 0x48,0x98
- .byte 0xf3,0xc3
-
-
-.globl _OPENSSL_rdtsc
-
-.p2align 4
-_OPENSSL_rdtsc:
- rdtsc
- shlq $32,%rdx
- orq %rdx,%rax
- .byte 0xf3,0xc3
-
-
-.globl _OPENSSL_ia32_cpuid
-
-.p2align 4
-_OPENSSL_ia32_cpuid:
- movq %rbx,%r8
-
- xorl %eax,%eax
- movl %eax,8(%rdi)
- cpuid
- movl %eax,%r11d
-
- xorl %eax,%eax
- cmpl $1970169159,%ebx
- setne %al
- movl %eax,%r9d
- cmpl $1231384169,%edx
- setne %al
- orl %eax,%r9d
- cmpl $1818588270,%ecx
- setne %al
- orl %eax,%r9d
- jz L$intel
-
- cmpl $1752462657,%ebx
- setne %al
- movl %eax,%r10d
- cmpl $1769238117,%edx
- setne %al
- orl %eax,%r10d
- cmpl $1145913699,%ecx
- setne %al
- orl %eax,%r10d
- jnz L$intel
-
-
- movl $2147483648,%eax
- cpuid
- cmpl $2147483649,%eax
- jb L$intel
- movl %eax,%r10d
- movl $2147483649,%eax
- cpuid
- orl %ecx,%r9d
- andl $2049,%r9d
-
- cmpl $2147483656,%r10d
- jb L$intel
-
- movl $2147483656,%eax
- cpuid
- movzbq %cl,%r10
- incq %r10
-
- movl $1,%eax
- cpuid
- btl $28,%edx
- jnc L$generic
- shrl $16,%ebx
- cmpb %r10b,%bl
- ja L$generic
- andl $4026531839,%edx
- jmp L$generic
-
-L$intel:
- cmpl $4,%r11d
- movl $-1,%r10d
- jb L$nocacheinfo
-
- movl $4,%eax
- movl $0,%ecx
- cpuid
- movl %eax,%r10d
- shrl $14,%r10d
- andl $4095,%r10d
-
- cmpl $7,%r11d
- jb L$nocacheinfo
-
- movl $7,%eax
- xorl %ecx,%ecx
- cpuid
- movl %ebx,8(%rdi)
-
-L$nocacheinfo:
- movl $1,%eax
- cpuid
- andl $3220176895,%edx
- cmpl $0,%r9d
- jne L$notintel
- orl $1073741824,%edx
- andb $15,%ah
- cmpb $15,%ah
- jne L$notintel
- orl $1048576,%edx
-L$notintel:
- btl $28,%edx
- jnc L$generic
- andl $4026531839,%edx
- cmpl $0,%r10d
- je L$generic
-
- orl $268435456,%edx
- shrl $16,%ebx
- cmpb $1,%bl
- ja L$generic
- andl $4026531839,%edx
-L$generic:
- andl $2048,%r9d
- andl $4294965247,%ecx
- orl %ecx,%r9d
-
- movl %edx,%r10d
- btl $27,%r9d
- jnc L$clear_avx
- xorl %ecx,%ecx
-.byte 0x0f,0x01,0xd0
- andl $6,%eax
- cmpl $6,%eax
- je L$done
-L$clear_avx:
- movl $4026525695,%eax
- andl %eax,%r9d
- andl $4294967263,8(%rdi)
-L$done:
- shlq $32,%r9
- movl %r10d,%eax
- movq %r8,%rbx
- orq %r9,%rax
- .byte 0xf3,0xc3
-
-
-.globl _OPENSSL_cleanse
-
-.p2align 4
-_OPENSSL_cleanse:
- xorq %rax,%rax
- cmpq $15,%rsi
- jae L$ot
- cmpq $0,%rsi
- je L$ret
-L$ittle:
- movb %al,(%rdi)
- subq $1,%rsi
- leaq 1(%rdi),%rdi
- jnz L$ittle
-L$ret:
- .byte 0xf3,0xc3
-.p2align 4
-L$ot:
- testq $7,%rdi
- jz L$aligned
- movb %al,(%rdi)
- leaq -1(%rsi),%rsi
- leaq 1(%rdi),%rdi
- jmp L$ot
-L$aligned:
- movq %rax,(%rdi)
- leaq -8(%rsi),%rsi
- testq $-8,%rsi
- leaq 8(%rdi),%rdi
- jnz L$aligned
- cmpq $0,%rsi
- jne L$ittle
- .byte 0xf3,0xc3
-
-.globl _OPENSSL_wipe_cpu
-
-.p2align 4
-_OPENSSL_wipe_cpu:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
- pxor %xmm8,%xmm8
- pxor %xmm9,%xmm9
- pxor %xmm10,%xmm10
- pxor %xmm11,%xmm11
- pxor %xmm12,%xmm12
- pxor %xmm13,%xmm13
- pxor %xmm14,%xmm14
- pxor %xmm15,%xmm15
- xorq %rcx,%rcx
- xorq %rdx,%rdx
- xorq %rsi,%rsi
- xorq %rdi,%rdi
- xorq %r8,%r8
- xorq %r9,%r9
- xorq %r10,%r10
- xorq %r11,%r11
- leaq 8(%rsp),%rax
- .byte 0xf3,0xc3
-
-.globl _OPENSSL_instrument_bus
-
-.p2align 4
-_OPENSSL_instrument_bus:
- movq %rdi,%r10
- movq %rsi,%rcx
- movq %rsi,%r11
-
- rdtsc
- movl %eax,%r8d
- movl $0,%r9d
- clflush (%r10)
-.byte 0xf0
- addl %r9d,(%r10)
- jmp L$oop
-.p2align 4
-L$oop: rdtsc
- movl %eax,%edx
- subl %r8d,%eax
- movl %edx,%r8d
- movl %eax,%r9d
- clflush (%r10)
-.byte 0xf0
- addl %eax,(%r10)
- leaq 4(%r10),%r10
- subq $1,%rcx
- jnz L$oop
-
- movq %r11,%rax
- .byte 0xf3,0xc3
-
-
-.globl _OPENSSL_instrument_bus2
-
-.p2align 4
-_OPENSSL_instrument_bus2:
- movq %rdi,%r10
- movq %rsi,%rcx
- movq %rdx,%r11
- movq %rcx,8(%rsp)
-
- rdtsc
- movl %eax,%r8d
- movl $0,%r9d
-
- clflush (%r10)
-.byte 0xf0
- addl %r9d,(%r10)
-
- rdtsc
- movl %eax,%edx
- subl %r8d,%eax
- movl %edx,%r8d
- movl %eax,%r9d
-L$oop2:
- clflush (%r10)
-.byte 0xf0
- addl %eax,(%r10)
-
- subq $1,%r11
- jz L$done2
-
- rdtsc
- movl %eax,%edx
- subl %r8d,%eax
- movl %edx,%r8d
- cmpl %r9d,%eax
- movl %eax,%r9d
- movl $0,%edx
- setne %dl
- subq %rdx,%rcx
- leaq (%r10,%rdx,4),%r10
- jnz L$oop2
-
-L$done2:
- movq 8(%rsp),%rax
- subq %rcx,%rax
- .byte 0xf3,0xc3
-
-.globl _OPENSSL_ia32_rdrand
-
-.p2align 4
-_OPENSSL_ia32_rdrand:
- movl $8,%ecx
-L$oop_rdrand:
-.byte 72,15,199,240
- jc L$break_rdrand
- loop L$oop_rdrand
-L$break_rdrand:
- cmpq $0,%rax
- cmoveq %rcx,%rax
- .byte 0xf3,0xc3
-
-
-.section .note.GNU-stack,"",%progbits