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