mirror of
https://github.com/openssl/openssl.git
synced 2024-12-03 05:41:46 +08:00
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:
parent
670e73d908
commit
50f8b936b0
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user