bn/asm/vis3-mont.pl: fix intermittent EC failures on SPARC T3.
authorAndy Polyakov <appro@openssl.org>
Wed, 13 May 2015 20:19:59 +0000 (22:19 +0200)
committerAndy Polyakov <appro@openssl.org>
Sun, 24 May 2015 11:26:37 +0000 (13:26 +0200)
BLKINIT optimization worked on T4, but for some reason appears "too
aggressive" for T3 triggering intermiitent EC failures. It's not clear
why only EC is affected...

Reviewed-by: Tim Hudson <tjh@openssl.org>
(cherry picked from commit 579734ced696125c0768a2f4e56e97939b0e6e49)

crypto/bn/asm/vis3-mont.pl

index a1357de0e99af4b55a2d26213de4c7164c0960ba..263ac02b6f45b750827b126109a8e2d2fb9aa7ab 100644 (file)
@@ -100,7 +100,7 @@ $code.=<<___;
        ld      [$ap+12],       $t3
        or      $t0,    $aj,    $aj
        add     $ap,    16,     $ap
-       stxa    $aj,    [$anp]0xe2      ! converted ap[0]
+       stx     $aj,    [$anp]          ! converted ap[0]
 
        mulx    $aj,    $m0,    $lo0    ! ap[0]*bp[0]
        umulxhi $aj,    $m0,    $hi0
@@ -150,7 +150,7 @@ $code.=<<___;
        sllx    $t1,    32,     $aj
        add     $ap,    8,      $ap
        or      $t0,    $aj,    $aj
-       stxa    $aj,    [$anp]0xe2      ! converted ap[j]
+       stx     $aj,    [$anp]          ! converted ap[j]
 
        ld      [$np+0],        $t2     ! np[j]
        addcc   $nlo,   $hi1,   $lo1
@@ -169,7 +169,7 @@ $code.=<<___;
        addcc   $lo0,   $lo1,   $lo1    ! np[j]*m1+ap[j]*bp[0]
        umulxhi $nj,    $m1,    $nj     ! nhi=nj
        addxc   %g0,    $hi1,   $hi1
-       stxa    $lo1,   [$tp]0xe2       ! tp[j-1]
+       stx     $lo1,   [$tp]           ! tp[j-1]
        add     $tp,    8,      $tp     ! tp++
 
        brnz,pt $cnt,   .L1st
@@ -182,12 +182,12 @@ $code.=<<___;
        addxc   $nj,    %g0,    $hi1
        addcc   $lo0,   $lo1,   $lo1    ! np[j]*m1+ap[j]*bp[0]
        addxc   %g0,    $hi1,   $hi1
-       stxa    $lo1,   [$tp]0xe2       ! tp[j-1]
+       stx     $lo1,   [$tp]           ! tp[j-1]
        add     $tp,    8,      $tp
 
        addcc   $hi0,   $hi1,   $hi1
        addxc   %g0,    %g0,    $ovf    ! upmost overflow bit
-       stxa    $hi1,   [$tp]0xe2
+       stx     $hi1,   [$tp]
        add     $tp,    8,      $tp
 \f
        ba      .Louter