s390x assembly pack: 32-bit fixups.

Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
Andy Polyakov 2016-03-11 16:47:02 +01:00 committed by Richard Levitte
parent 6bfb7db35a
commit 8d51db86f7
3 changed files with 6 additions and 3 deletions

View File

@ -238,7 +238,7 @@
}, },
s390x_asm => { s390x_asm => {
template => 1, 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", bn_asm_src => "asm/s390x.S s390x-mont.S s390x-gf2m.s",
aes_asm_src => "aes-s390x.S aes-ctr.fake aes-xts.fake", aes_asm_src => "aes-s390x.S aes-ctr.fake aes-xts.fake",
sha1_asm_src => "sha1-s390x.S sha256-s390x.S sha512-s390x.S", sha1_asm_src => "sha1-s390x.S sha256-s390x.S sha512-s390x.S",

View File

@ -781,7 +781,7 @@ sub vc_wince_info {
# #
inherit_from => [ "linux-generic32", asm("s390x_asm") ], inherit_from => [ "linux-generic32", asm("s390x_asm") ],
cflags => add("-m31 -Wa,-mzarch -DB_ENDIAN"), 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", perlasm_scheme => "31",
shared_ldflag => "-m31", shared_ldflag => "-m31",
multilib => "/highgprs", multilib => "/highgprs",

View File

@ -78,13 +78,15 @@ $code.=<<___;
.type poly1305_blocks,\@function .type poly1305_blocks,\@function
.align 16 .align 16
poly1305_blocks: poly1305_blocks:
srl${g} $len,$len,4 srl${g} $len,4 # fixed-up in 64-bit build
lghi %r0,0 lghi %r0,0
cl${g}r $len,%r0 cl${g}r $len,%r0
je .Lno_data je .Lno_data
stm${g} %r6,%r14,`6*$SIZE_T`($sp) 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 $r0,32($ctx) # load key
lg $r1,40($ctx) lg $r1,40($ctx)
@ -211,6 +213,7 @@ ___
} }
$code =~ s/\`([^\`]*)\`/eval $1/gem; $code =~ s/\`([^\`]*)\`/eval $1/gem;
$code =~ s/\b(srlg\s+)(%r[0-9]+\s*,)\s*([0-9]+)/$1$2$2$3/gm;
print $code; print $code;
close STDOUT; close STDOUT;