From: Andy Polyakov <appro@openssl.org>
Date: Tue, 15 Mar 2016 22:39:07 +0000 (+0100)
Subject: poly1305/asm/poly1305-x86_64.pl: make it work with linux-x32.
X-Git-Tag: OpenSSL_1_1_0-pre4~9
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2460c7f13389d766dd65fa4e14b69b6fbe3e4e3b;p=oweals%2Fopenssl.git

poly1305/asm/poly1305-x86_64.pl: make it work with linux-x32.

Reviewed-by: Richard Levitte <levitte@openssl.org>
---

diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 53ba0409db..f9c838c259 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -745,7 +745,7 @@ sub vc_wince_info {
         inherit_from     => [ "linux-generic32", asm("x86_64_asm") ],
         cflags           => add("-mx32 -DL_ENDIAN"),
         bn_ops           => "SIXTY_FOUR_BIT",
-        perlasm_scheme   => "elf",
+        perlasm_scheme   => "elf32",
         shared_ldflag    => "-mx32",
         multilib         => "x32",
     },
diff --git a/crypto/poly1305/asm/poly1305-x86_64.pl b/crypto/poly1305/asm/poly1305-x86_64.pl
index 2265664180..8977d563a2 100755
--- a/crypto/poly1305/asm/poly1305-x86_64.pl
+++ b/crypto/poly1305/asm/poly1305-x86_64.pl
@@ -165,10 +165,16 @@ $code.=<<___;
 	and	8($inp),%rcx
 	mov	%rax,24($ctx)
 	mov	%rcx,32($ctx)
-
+___
+$code.=<<___	if ($flavour !~ /elf32/);
 	mov	%r10,0(%rdx)
 	mov	%r11,8(%rdx)
-
+___
+$code.=<<___	if ($flavour =~ /elf32/);
+	mov	%r10d,0(%rdx)
+	mov	%r11d,4(%rdx)
+___
+$code.=<<___;
 	mov	\$1,%eax
 .Lno_key:
 	ret