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 more pieces to ena...



details:   https://anonhg.NetBSD.org/src/rev/89374cc4b34f
branches:  trunk
changeset: 766968:89374cc4b34f
user:      spz <spz%NetBSD.org@localhost>
date:      Tue Jul 05 10:42:54 2011 +0000

description:
more pieces to enable using the assembler routines and aes-ni for amd64

diffstat:

 crypto/external/bsd/openssl/lib/libcrypto/aes.inc                   |    4 +-
 crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile      |    7 +-
 crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc       |    1 +
 crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/crypto.inc    |    4 +
 crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S |  187 ++++++++++
 crypto/external/bsd/openssl/lib/libcrypto/crypto.inc                |   13 +-
 6 files changed, 208 insertions(+), 8 deletions(-)

diffs (274 lines):

diff -r 9db62cbfb8cd -r 89374cc4b34f crypto/external/bsd/openssl/lib/libcrypto/aes.inc
--- a/crypto/external/bsd/openssl/lib/libcrypto/aes.inc Tue Jul 05 10:29:22 2011 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/aes.inc Tue Jul 05 10:42:54 2011 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: aes.inc,v 1.1 2009/07/19 23:30:42 christos Exp $
+#      $NetBSD: aes.inc,v 1.2 2011/07/05 10:42:54 spz Exp $
 #
 #      @(#) Copyright (c) 1995 Simon J. Gerraty
 #
@@ -16,6 +16,6 @@
 SRCS += ${AES_SRCS}
 
 .for cryptosrc in ${AES_SRCS}
-CPPFLAGS.${cryptosrc} = -I${OPENSSLSRC}/crypto/aes
+CPPFLAGS.${cryptosrc} = -I${OPENSSLSRC}/crypto/aes ${AESCPPFLAGS}
 .endfor
 
diff -r 9db62cbfb8cd -r 89374cc4b34f crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile
--- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile    Tue Jul 05 10:29:22 2011 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile    Tue Jul 05 10:42:54 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 10:42:54 spz Exp $
 
 .include "bsd.own.mk"
 
@@ -6,7 +6,8 @@
 .include "${NETBSDSRCDIR}/crypto/Makefile.openssl"
 
 regen:
-       for i in $$(find ${OPENSSLSRC} -name \*${MACHINE_ARCH}.pl); do \
-               perl $$i | sed -e 's/(%rip)/@GOTPCREL(%rip)/' \
+       for i in $$(find ${OPENSSLSRC} -name \*${MACHINE_ARCH}.pl) \
+               ${OPENSSLSRC}/crypto/${MACHINE_ARCH}cpuid.pl ; do \
+                perl $$i elf | sed -e 's/(%rip)/@GOTPCREL(%rip)/' \
                > $$(basename $$i .pl).S; \
        done
diff -r 9db62cbfb8cd -r 89374cc4b34f crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc
--- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc     Tue Jul 05 10:29:22 2011 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc     Tue Jul 05 10:42:54 2011 +0000
@@ -1,4 +1,5 @@
 .PATH.S: ${.PARSEDIR}
 AES_SRCS = aes-x86_64.S aesni-x86_64.S
+AESCPPFLAGS = -DAES_ASM -DOPENSSL_IA32_SSE2
 AESNI = yes
 .include "../../aes.inc"
diff -r 9db62cbfb8cd -r 89374cc4b34f crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/crypto.inc
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/crypto.inc  Tue Jul 05 10:42:54 2011 +0000
@@ -0,0 +1,4 @@
+.PATH.S: ${.PARSEDIR}
+CPUID_SRCS = x86_64cpuid.S
+CPUID = yes
+.include "../../crypto.inc"
diff -r 9db62cbfb8cd -r 89374cc4b34f crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S       Tue Jul 05 10:42:54 2011 +0000
@@ -0,0 +1,187 @@
+.text  
+
+.globl OPENSSL_atomic_add
+.type  OPENSSL_atomic_add,@function
+.align 16
+OPENSSL_atomic_add:
+       movl    (%rdi),%eax
+.Lspin:        leaq    (%rsi,%rax,1),%r8
+.byte  0xf0            
+       cmpxchgl        %r8d,(%rdi)
+       jne     .Lspin
+       movl    %r8d,%eax
+.byte  0x48,0x98       
+       .byte   0xf3,0xc3
+.size  OPENSSL_atomic_add,.-OPENSSL_atomic_add
+
+.globl OPENSSL_rdtsc
+.type  OPENSSL_rdtsc,@function
+.align 16
+OPENSSL_rdtsc:
+       rdtsc
+       shlq    $32,%rdx
+       orq     %rdx,%rax
+       .byte   0xf3,0xc3
+.size  OPENSSL_rdtsc,.-OPENSSL_rdtsc
+
+.globl OPENSSL_ia32_cpuid
+.type  OPENSSL_ia32_cpuid,@function
+.align 16
+OPENSSL_ia32_cpuid:
+       movq    %rbx,%r8
+
+       xorl    %eax,%eax
+       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    $2147483656,%eax
+       jb      .Lintel
+
+       movl    $2147483656,%eax
+       cpuid
+       movzbq  %cl,%r10
+       incq    %r10
+
+       movl    $1,%eax
+       cpuid
+       btl     $28,%edx
+       jnc     .Ldone
+       shrl    $16,%ebx
+       cmpb    %r10b,%bl
+       ja      .Ldone
+       andl    $4026531839,%edx
+       jmp     .Ldone
+
+.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
+
+.Lnocacheinfo:
+       movl    $1,%eax
+       cpuid
+       cmpl    $0,%r9d
+       jne     .Lnotintel
+       orl     $1048576,%edx
+       andb    $15,%ah
+       cmpb    $15,%ah
+       je      .Lnotintel
+       orl     $1073741824,%edx
+.Lnotintel:
+       btl     $28,%edx
+       jnc     .Ldone
+       andl    $4026531839,%edx
+       cmpl    $0,%r10d
+       je      .Ldone
+
+       orl     $268435456,%edx
+       shrl    $16,%ebx
+       cmpb    $1,%bl
+       ja      .Ldone
+       andl    $4026531839,%edx
+.Ldone:
+       shlq    $32,%rcx
+       movl    %edx,%eax
+       movq    %r8,%rbx
+       orq     %rcx,%rax
+       .byte   0xf3,0xc3
+.size  OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid
+
+.globl OPENSSL_cleanse
+.type  OPENSSL_cleanse,@function
+.align 16
+OPENSSL_cleanse:
+       xorq    %rax,%rax
+       cmpq    $15,%rsi
+       jae     .Lot
+       cmpq    $0,%rsi
+       je      .Lret
+.Little:
+       movb    %al,(%rdi)
+       subq    $1,%rsi
+       leaq    1(%rdi),%rdi
+       jnz     .Little
+.Lret:
+       .byte   0xf3,0xc3
+.align 16
+.Lot:
+       testq   $7,%rdi
+       jz      .Laligned
+       movb    %al,(%rdi)
+       leaq    -1(%rsi),%rsi
+       leaq    1(%rdi),%rdi
+       jmp     .Lot
+.Laligned:
+       movq    %rax,(%rdi)
+       leaq    -8(%rsi),%rsi
+       testq   $-8,%rsi
+       leaq    8(%rdi),%rdi
+       jnz     .Laligned
+       cmpq    $0,%rsi
+       jne     .Little
+       .byte   0xf3,0xc3
+.size  OPENSSL_cleanse,.-OPENSSL_cleanse
+.globl OPENSSL_wipe_cpu
+.type  OPENSSL_wipe_cpu,@function
+.align 16
+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
+.size  OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
diff -r 9db62cbfb8cd -r 89374cc4b34f crypto/external/bsd/openssl/lib/libcrypto/crypto.inc
--- a/crypto/external/bsd/openssl/lib/libcrypto/crypto.inc      Tue Jul 05 10:29:22 2011 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/crypto.inc      Tue Jul 05 10:42:54 2011 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: crypto.inc,v 1.2 2011/06/06 08:04:19 spz Exp $
+#      $NetBSD: crypto.inc,v 1.3 2011/07/05 10:42:54 spz Exp $
 #
 #      @(#) Copyright (c) 1995 Simon J. Gerraty
 #
@@ -8,10 +8,17 @@
 .PATH: ${OPENSSLSRC}/crypto
 
 
-CRYPTO_SRCS = cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c \
+CRYPTO_SRCS = cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c \
        cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c o_fips.c o_init.c
 SRCS += ${CRYPTO_SRCS}
 
+.if !defined(CPUID)
+CRYPTO_SRCS+=  mem_clr.c
+.else
+CRYPTO_SRCS+=  ${CPUID_SRCS}
+CRYPTOCPPFLAGS=-DOPENSSL_CPUID_OBJ
+.endif
+
 .for cryptosrc in ${CRYPTO_SRCS}
-CPPFLAGS.${cryptosrc} = -I${OPENSSLSRC}/crypto/crypto
+CPPFLAGS.${cryptosrc} = -I${OPENSSLSRC}/crypto/crypto ${CRYPTOCPPFLAGS}
 .endfor



Home | Main Index | Thread Index | Old Index