From 50f8b936b00dc18ce1f622a7a6aa46daf03da48b Mon Sep 17 00:00:00 2001 From: Rohan McLure Date: Wed, 16 Aug 2023 16:52:47 +1000 Subject: [PATCH] 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 Reviewed-by: Tomas Mraz Reviewed-by: Shane Lontis Reviewed-by: Hugo Landau (Merged from https://github.com/openssl/openssl/pull/21749) --- crypto/ec/asm/ecp_nistp384-ppc64.pl | 49 ----------------------------- 1 file changed, 49 deletions(-) diff --git a/crypto/ec/asm/ecp_nistp384-ppc64.pl b/crypto/ec/asm/ecp_nistp384-ppc64.pl index 3f86b391af69..28f4168e5218 100755 --- a/crypto/ec/asm/ecp_nistp384-ppc64.pl +++ b/crypto/ec/asm/ecp_nistp384-ppc64.pl @@ -62,51 +62,6 @@ ($) ___ } - -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