From 8d51db86f7bbade81c6d6eb3357bc12ddeb12de1 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Fri, 11 Mar 2016 16:47:02 +0100 Subject: [PATCH] s390x assembly pack: 32-bit fixups. Reviewed-by: Richard Levitte --- Configurations/00-base-templates.conf | 2 +- Configurations/10-main.conf | 2 +- crypto/poly1305/asm/poly1305-s390x.pl | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf index cbb5675db6..c284af6934 100644 --- a/Configurations/00-base-templates.conf +++ b/Configurations/00-base-templates.conf @@ -238,7 +238,7 @@ }, s390x_asm => { template => 1, - cpuid_asm_src => "s390xcap.c s390xcpuid.s", + cpuid_asm_src => "s390xcap.c s390xcpuid.S", bn_asm_src => "asm/s390x.S s390x-mont.S s390x-gf2m.s", aes_asm_src => "aes-s390x.S aes-ctr.fake aes-xts.fake", sha1_asm_src => "sha1-s390x.S sha256-s390x.S sha512-s390x.S", diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index cddf268b67..6c43772ead 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -781,7 +781,7 @@ sub vc_wince_info { # inherit_from => [ "linux-generic32", asm("s390x_asm") ], cflags => add("-m31 -Wa,-mzarch -DB_ENDIAN"), - bn_obj => sub { my $r=join(" ",@_); $r=~s/bn\-s390x/bn_asm/; $r; }, + bn_asm_src => sub { my $r=join(" ",@_); $r=~s|asm/s390x\.S|bn_asm.c|; $r; }, perlasm_scheme => "31", shared_ldflag => "-m31", multilib => "/highgprs", diff --git a/crypto/poly1305/asm/poly1305-s390x.pl b/crypto/poly1305/asm/poly1305-s390x.pl index ce6a85f0af..49b3f79f1d 100755 --- a/crypto/poly1305/asm/poly1305-s390x.pl +++ b/crypto/poly1305/asm/poly1305-s390x.pl @@ -78,13 +78,15 @@ $code.=<<___; .type poly1305_blocks,\@function .align 16 poly1305_blocks: - srl${g} $len,$len,4 + srl${g} $len,4 # fixed-up in 64-bit build lghi %r0,0 cl${g}r $len,%r0 je .Lno_data stm${g} %r6,%r14,`6*$SIZE_T`($sp) + llgfr $padbit,$padbit # clear upper half, much needed with + # non-64-bit ABI lg $r0,32($ctx) # load key lg $r1,40($ctx) @@ -211,6 +213,7 @@ ___ } $code =~ s/\`([^\`]*)\`/eval $1/gem; +$code =~ s/\b(srlg\s+)(%r[0-9]+\s*,)\s*([0-9]+)/$1$2$2$3/gm; print $code; close STDOUT;