Module Name:    src
Committed By:   spz
Date:           Tue Jul  5 10:42:55 UTC 2011

Modified Files:
        src/crypto/external/bsd/openssl/lib/libcrypto: aes.inc crypto.inc
        src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64: Makefile
            aes.inc
Added Files:
        src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64: crypto.inc
            x86_64cpuid.S

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


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 \
    src/crypto/external/bsd/openssl/lib/libcrypto/aes.inc
cvs rdiff -u -r1.2 -r1.3 \
    src/crypto/external/bsd/openssl/lib/libcrypto/crypto.inc
cvs rdiff -u -r1.2 -r1.3 \
    src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile
cvs rdiff -u -r1.1 -r1.2 \
    src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc
cvs rdiff -u -r0 -r1.1 \
    src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/crypto.inc \
    src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/crypto/external/bsd/openssl/lib/libcrypto/aes.inc
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/aes.inc:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/aes.inc:1.2
--- src/crypto/external/bsd/openssl/lib/libcrypto/aes.inc:1.1	Sun Jul 19 23:30:42 2009
+++ src/crypto/external/bsd/openssl/lib/libcrypto/aes.inc	Tue Jul  5 10:42:54 2011
@@ -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
 

Index: src/crypto/external/bsd/openssl/lib/libcrypto/crypto.inc
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/crypto.inc:1.2 src/crypto/external/bsd/openssl/lib/libcrypto/crypto.inc:1.3
--- src/crypto/external/bsd/openssl/lib/libcrypto/crypto.inc:1.2	Mon Jun  6 08:04:19 2011
+++ src/crypto/external/bsd/openssl/lib/libcrypto/crypto.inc	Tue Jul  5 10:42:54 2011
@@ -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

Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile:1.2 src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile:1.3
--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile:1.2	Sun Jun  5 23:09:50 2011
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/Makefile	Tue Jul  5 10:42:54 2011
@@ -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

Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc:1.2
--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc:1.1	Sun Jul 19 23:30:47 2009
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aes.inc	Tue Jul  5 10:42:54 2011
@@ -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"

Added files:

Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/crypto.inc
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/crypto.inc:1.1
--- /dev/null	Tue Jul  5 10:42:55 2011
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/crypto.inc	Tue Jul  5 10:42:54 2011
@@ -0,0 +1,4 @@
+.PATH.S: ${.PARSEDIR}
+CPUID_SRCS = x86_64cpuid.S
+CPUID = yes
+.include "../../crypto.inc"
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S:1.1
--- /dev/null	Tue Jul  5 10:42:55 2011
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S	Tue Jul  5 10:42:54 2011
@@ -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

Reply via email to