Attempt to resolve sporadic SEGV crashes in bn_sub_words in OpenSSH. I'm
authorAndy Polyakov <appro@openssl.org>
Fri, 11 Nov 2005 20:07:07 +0000 (20:07 +0000)
committerAndy Polyakov <appro@openssl.org>
Fri, 11 Nov 2005 20:07:07 +0000 (20:07 +0000)
baffled why it crashes and does it sporadically...

crypto/bn/asm/sparcv8plus.S

index 0074dfd..8992928 100644 (file)
@@ -445,6 +445,7 @@ bn_div_words:
  * int n;
  */
 bn_add_words:
+       sra     %o3,%g0,%o3     ! signx %o3
        brgz,a  %o3,.L_bn_add_words_proceed
        lduw    [%o1],%o4
        retl
@@ -454,7 +455,6 @@ bn_add_words:
        andcc   %o3,-4,%g0
        bz,pn   %icc,.L_bn_add_words_tail
        addcc   %g0,0,%g0       ! clear carry flag
-       nop
 
 .L_bn_add_words_loop:          ! wow! 32 aligned!
        dec     4,%o3
@@ -523,6 +523,7 @@ bn_add_words:
  * int n;
  */
 bn_sub_words:
+       sra     %o3,%g0,%o3     ! signx %o3
        brgz,a  %o3,.L_bn_sub_words_proceed
        lduw    [%o1],%o4
        retl
@@ -532,7 +533,6 @@ bn_sub_words:
        andcc   %o3,-4,%g0
        bz,pn   %icc,.L_bn_sub_words_tail
        addcc   %g0,0,%g0       ! clear carry flag
-       nop
 
 .L_bn_sub_words_loop:          ! wow! 32 aligned!
        dec     4,%o3