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