Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/crypto/external/bsd/openssl/lib/libcrypto/arch/i386 cpuid an...
details: https://anonhg.NetBSD.org/src/rev/6cb9ca0bf589
branches: trunk
changeset: 766976:6cb9ca0bf589
user: spz <spz%NetBSD.org@localhost>
date: Tue Jul 05 16:53:58 2011 +0000
description:
cpuid and aesni additions for i386
diffstat:
crypto/external/bsd/openssl/lib/libcrypto/arch/i386/Makefile | 5 +-
crypto/external/bsd/openssl/lib/libcrypto/arch/i386/aes.inc | 1 +
crypto/external/bsd/openssl/lib/libcrypto/arch/i386/crypto.inc | 4 +
crypto/external/bsd/openssl/lib/libcrypto/arch/i386/x86cpuid.S | 291 ++++++++++
4 files changed, 299 insertions(+), 2 deletions(-)
diffs (truncated from 331 to 300 lines):
diff -r 7d097480bceb -r 6cb9ca0bf589 crypto/external/bsd/openssl/lib/libcrypto/arch/i386/Makefile
--- a/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/Makefile Tue Jul 05 14:41:13 2011 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/Makefile Tue Jul 05 16:53:58 2011 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.2 2011/06/05 23:09:50 spz Exp $
+# $NetBSD: Makefile,v 1.3 2011/07/05 16:53:58 spz Exp $
.include "bsd.own.mk"
@@ -6,7 +6,8 @@
.include "${NETBSDSRCDIR}/crypto/Makefile.openssl"
regen:
- for i in $$(find ${OPENSSLSRC} -name \*86.pl); do \
+ for i in $$(find ${OPENSSLSRC} -name \*86.pl) \
+ ${OPENSSLSRC}/crypto/x86cpuid.pl; do \
perl -I${OPENSSLSRC}/crypto/perlasm \
-I${OPENSSLSRC}/crypto/bn/asm $$i elf -fPIC \
> $$(basename $$i .pl).S; \
diff -r 7d097480bceb -r 6cb9ca0bf589 crypto/external/bsd/openssl/lib/libcrypto/arch/i386/aes.inc
--- a/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/aes.inc Tue Jul 05 14:41:13 2011 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/aes.inc Tue Jul 05 16:53:58 2011 +0000
@@ -1,4 +1,5 @@
.PATH.S: ${.PARSEDIR}
AES_SRCS = aes-586.S aesni-586.S
AESNI = yes
+AESCPPFLAGS = -DAES_ASM -DOPENSSL_IA32_SSE2
.include "../../aes.inc"
diff -r 7d097480bceb -r 6cb9ca0bf589 crypto/external/bsd/openssl/lib/libcrypto/arch/i386/crypto.inc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/crypto.inc Tue Jul 05 16:53:58 2011 +0000
@@ -0,0 +1,4 @@
+.PATH.S: ${.PARSEDIR}
+CPUID_SRCS = x86cpuid.S
+CPUID = yes
+.include "../../crypto.inc"
diff -r 7d097480bceb -r 6cb9ca0bf589 crypto/external/bsd/openssl/lib/libcrypto/arch/i386/x86cpuid.S
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/x86cpuid.S Tue Jul 05 16:53:58 2011 +0000
@@ -0,0 +1,291 @@
+.file "x86cpuid.s"
+.text
+.globl OPENSSL_ia32_cpuid
+.type OPENSSL_ia32_cpuid,@function
+.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
+ btl $21,%ecx
+ jnc .L000done
+ xorl %eax,%eax
+ .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 $2147483656,%eax
+ jb .L001intel
+ movl $2147483656,%eax
+ .byte 0x0f,0xa2
+ movzbl %cl,%esi
+ incl %esi
+ movl $1,%eax
+ .byte 0x0f,0xa2
+ btl $28,%edx
+ jnc .L000done
+ shrl $16,%ebx
+ andl $255,%ebx
+ cmpl %esi,%ebx
+ ja .L000done
+ andl $4026531839,%edx
+ jmp .L000done
+.L001intel:
+ cmpl $4,%edi
+ movl $-1,%edi
+ jb .L002nocacheinfo
+ movl $4,%eax
+ movl $0,%ecx
+ .byte 0x0f,0xa2
+ movl %eax,%edi
+ shrl $14,%edi
+ andl $4095,%edi
+.L002nocacheinfo:
+ movl $1,%eax
+ .byte 0x0f,0xa2
+ cmpl $0,%ebp
+ jne .L003notP4
+ andb $15,%ah
+ cmpb $15,%ah
+ jne .L003notP4
+ orl $1048576,%edx
+.L003notP4:
+ btl $28,%edx
+ jnc .L000done
+ andl $4026531839,%edx
+ cmpl $0,%edi
+ je .L000done
+ orl $268435456,%edx
+ shrl $16,%ebx
+ cmpb $1,%bl
+ ja .L000done
+ andl $4026531839,%edx
+.L000done:
+ movl %edx,%eax
+ movl %ecx,%edx
+ popl %edi
+ popl %esi
+ popl %ebx
+ popl %ebp
+ ret
+.size OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin
+.globl OPENSSL_rdtsc
+.type OPENSSL_rdtsc,@function
+.align 16
+OPENSSL_rdtsc:
+.L_OPENSSL_rdtsc_begin:
+ xorl %eax,%eax
+ xorl %edx,%edx
+ call .L004PIC_me_up
+.L004PIC_me_up:
+ popl %ecx
+ leal _GLOBAL_OFFSET_TABLE_+[.-.L004PIC_me_up](%ecx),%ecx
+ movl OPENSSL_ia32cap_P@GOT(%ecx),%ecx
+ btl $4,(%ecx)
+ jnc .L005notsc
+ .byte 0x0f,0x31
+.L005notsc:
+ ret
+.size OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin
+.globl OPENSSL_instrument_halt
+.type OPENSSL_instrument_halt,@function
+.align 16
+OPENSSL_instrument_halt:
+.L_OPENSSL_instrument_halt_begin:
+ call .L006PIC_me_up
+.L006PIC_me_up:
+ popl %ecx
+ leal _GLOBAL_OFFSET_TABLE_+[.-.L006PIC_me_up](%ecx),%ecx
+ movl OPENSSL_ia32cap_P@GOT(%ecx),%ecx
+ btl $4,(%ecx)
+ jnc .L007nohalt
+.long 2421723150
+ andl $3,%eax
+ jnz .L007nohalt
+ pushfl
+ popl %eax
+ btl $9,%eax
+ jnc .L007nohalt
+ .byte 0x0f,0x31
+ pushl %edx
+ pushl %eax
+ hlt
+ .byte 0x0f,0x31
+ subl (%esp),%eax
+ sbbl 4(%esp),%edx
+ addl $8,%esp
+ ret
+.L007nohalt:
+ xorl %eax,%eax
+ xorl %edx,%edx
+ ret
+.size OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin
+.globl OPENSSL_far_spin
+.type OPENSSL_far_spin,@function
+.align 16
+OPENSSL_far_spin:
+.L_OPENSSL_far_spin_begin:
+ pushfl
+ popl %eax
+ btl $9,%eax
+ jnc .L008nospin
+ movl 4(%esp),%eax
+ movl 8(%esp),%ecx
+.long 2430111262
+ xorl %eax,%eax
+ movl (%ecx),%edx
+ jmp .L009spin
+.align 16
+.L009spin:
+ incl %eax
+ cmpl (%ecx),%edx
+ je .L009spin
+.long 529567888
+ ret
+.L008nospin:
+ xorl %eax,%eax
+ xorl %edx,%edx
+ ret
+.size OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin
+.globl OPENSSL_wipe_cpu
+.type OPENSSL_wipe_cpu,@function
+.align 16
+OPENSSL_wipe_cpu:
+.L_OPENSSL_wipe_cpu_begin:
+ xorl %eax,%eax
+ xorl %edx,%edx
+ call .L010PIC_me_up
+.L010PIC_me_up:
+ popl %ecx
+ leal _GLOBAL_OFFSET_TABLE_+[.-.L010PIC_me_up](%ecx),%ecx
+ movl OPENSSL_ia32cap_P@GOT(%ecx),%ecx
+ movl (%ecx),%ecx
+ btl $1,(%ecx)
+ jnc .L011no_x87
+.long 4007259865,4007259865,4007259865,4007259865,2430851995
+.L011no_x87:
+ leal 4(%esp),%eax
+ ret
+.size OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin
+.globl OPENSSL_atomic_add
+.type OPENSSL_atomic_add,@function
+.align 16
+OPENSSL_atomic_add:
+.L_OPENSSL_atomic_add_begin:
+ movl 4(%esp),%edx
+ movl 8(%esp),%ecx
+ pushl %ebx
+ nop
+ movl (%edx),%eax
+.L012spin:
+ leal (%eax,%ecx,1),%ebx
+ nop
+.long 447811568
+ jne .L012spin
+ movl %ebx,%eax
+ popl %ebx
+ ret
+.size OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin
+.globl OPENSSL_indirect_call
+.type OPENSSL_indirect_call,@function
+.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
+.size OPENSSL_indirect_call,.-.L_OPENSSL_indirect_call_begin
+.globl OPENSSL_cleanse
+.type OPENSSL_cleanse,@function
+.align 16
+OPENSSL_cleanse:
+.L_OPENSSL_cleanse_begin:
+ movl 4(%esp),%edx
+ movl 8(%esp),%ecx
+ xorl %eax,%eax
+ cmpl $7,%ecx
+ jae .L013lot
+ cmpl $0,%ecx
+ je .L014ret
Home |
Main Index |
Thread Index |
Old Index