powerpc: ecc: Fix stack allocation secp384r1 asm

Assembly acceleration secp384r1 opts to not use any callee-save VSRs, as
VSX enabled systems make extensive use of renaming, and so writebacks in
felem_{mul,square}() can be reordered for best cache effects.

Remove stack allocations. This in turn fixes unmatched push/pops in
felem_{mul,square}().

Signed-off-by: Rohan McLure <rohan.mclure@linux.ibm.com>

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21749)
This commit is contained in:
Rohan McLure 2023-08-16 16:52:47 +10:00 committed by Hugo Landau
parent 670e73d908
commit 50f8b936b0

View File

@ -62,51 +62,6 @@ sub endproc($)
___
}
sub push_vrs($$)
{
my ($min, $max) = @_;
my $count = $max - $min + 1;
$code.=<<___;
mr $savesp,$sp
stdu $sp,-16*`$count+1`($sp)
___
for (my $i = $min; $i <= $max; $i++) {
my $mult = $max - $i + 1;
$code.=<<___;
stxv $i,-16*$mult($savesp)
___
}
$code.=<<___;
___
}
sub pop_vrs($$)
{
my ($min, $max) = @_;
$code.=<<___;
ld $savesp,0($sp)
___
for (my $i = $min; $i <= $max; $i++) {
my $mult = $max - $i + 1;
$code.=<<___;
lxv $i,-16*$mult($savesp)
___
}
$code.=<<___;
mr $sp,$savesp
___
}
sub load_vrs($$)
{
my ($pointer, $reg_list) = @_;
@ -162,8 +117,6 @@ ___
startproc("p384_felem_mul");
push_vrs(52, 63);
$code.=<<___;
vspltisw $vzero,0
@ -268,8 +221,6 @@ ___
startproc("p384_felem_square");
push_vrs(52, 63);
$code.=<<___;
vspltisw $vzero,0