SPARC Solaris and Linux assemblers treat .align directive differently.
authorAndy Polyakov <appro@openssl.org>
Wed, 20 Jun 2007 12:24:22 +0000 (12:24 +0000)
committerAndy Polyakov <appro@openssl.org>
Wed, 20 Jun 2007 12:24:22 +0000 (12:24 +0000)
PR: 1547

crypto/bn/asm/sparcv9-mont.pl
crypto/bn/asm/sparcv9a-mont.pl

index d78b432..2870812 100644 (file)
@@ -260,24 +260,25 @@ $fname:
 
        srl     $npj,30,%o0             ! boundary condition...
        brz,pn  %o0,.Lcopy              ! ... is met
-       subcc   %g0,%g0,%g0             ! clear %icc.c
+       nop
 
-.align 16,0x1000000
+       ba      .Lsub
+       subcc   %g0,%g0,%g0             ! clear %icc.c
+.align 16
 .Lsub:
        ld      [$tp+%o7],%o0
        ld      [$np+%o7],%o1
        subccc  %o0,%o1,%o1             ! tp[j]-np[j]
-       st      %o1,[$rp+%o7]
+       add     $rp,%o7,$i
        add     %o7,4,%o7
        brnz    %o7,.Lsub
-       nop
+       st      %o1,[$i]
        subc    $car2,0,$car2           ! handle upmost overflow bit
        and     $tp,$car2,$ap
        andn    $rp,$car2,$np
        or      $ap,$np,$ap
        sub     %g0,$num,%o7
 
-.align 16,0x1000000
 .Lcopy:
        ld      [$ap+%o7],%o0           ! copy or in-place refresh
        st      %g0,[$tp+%o7]           ! zap tp
@@ -603,6 +604,7 @@ $code.=<<___;
 .type  $fname,#function
 .size  $fname,(.-$fname)
 .asciz "Montgomery Multipltication for SPARCv9, CRYPTOGAMS by <appro\@openssl.org>"
+.align 32
 ___
 $code =~ s/\`([^\`]*)\`/eval($1)/gem;
 print $code;
index 02847fd..034792e 100755 (executable)
@@ -353,7 +353,7 @@ $fname:
        bz,pn   %icc,.L1stskip
        std     $nlod,[%sp+$bias+$frame+24]
 \f
-.align 32,0x1000000
+.align 32                      ! incidentally already aligned !
 .L1st:
        add     $ap,$j,%o4
        add     $np,$j,%o5
@@ -805,8 +805,10 @@ $fname:
        orn     %g0,%g0,%g4
        brz,pn  %o1,.Lcopy              ! ... is met
        sub     %g0,$num,%o7            ! n=-num
-       
-.align 32,0x1000000
+       ba      .Lsub
+       nop
+
+.align 32
 .Lsub:
        ldx     [$tp+%o7],%o0
        add     $np,%o7,%g1
@@ -822,8 +824,10 @@ $fname:
        st      %o3,[%g1+4]
        subc    $carry,0,%g4
        sub     %g0,$num,%o7            ! n=-num
+       ba      .Lcopy
+       nop
 
-.align 32,0x1000000
+.align 32
 .Lcopy:
        ldx     [$tp+%o7],%o0
        add     $rp,%o7,%g1
@@ -842,7 +846,6 @@ $fname:
        st      %o1,[%g1+4]
        sub     %g0,$num,%o7            ! n=-num
 
-.align 32,0x1000000
 .Lzap:
        stx     %g0,[$ap_l+%o7]
        stx     %g0,[$ap_h+%o7]
@@ -862,6 +865,7 @@ $fname:
 .type   $fname,#function
 .size  $fname,(.-$fname)
 .asciz "Montgomery Multipltication for UltraSPARC, CRYPTOGAMS by <appro\@openssl.org>"
+.align 32
 ___
 
 $code =~ s/\`([^\`]*)\`/eval($1)/gem;