SPARC assembly pack: enforce V8+ ABI constraints.
authorAndy Polyakov <appro@openssl.org>
Fri, 1 Jul 2016 16:10:10 +0000 (18:10 +0200)
committerAndy Polyakov <appro@openssl.org>
Sat, 16 Jul 2016 21:37:37 +0000 (23:37 +0200)
Reviewed-by: Richard Levitte <levitte@openssl.org>
crypto/aes/asm/aesfx-sparcv9.pl

index e52a579..5d8d9b6 100755 (executable)
@@ -367,8 +367,8 @@ $code.=<<___;
 .align 32
 aes_fx_cbc_encrypt:
        save            %sp, -STACK_FRAME-16, %sp
-       andncc          $len, 15, $len
-       bz,pn           SIZE_T_CC, .Lcbc_no_data
+       srln            $len, 4, $len
+       brz,pn          $len, .Lcbc_no_data
        and             $inp, 7, $ialign
 
        andn            $inp, 7, $inp
@@ -385,7 +385,7 @@ aes_fx_cbc_encrypt:
        ldd             [$key + 8], $r0lo
 
        add             $inp, 16, $inp
-       sub             $len, 16, $len
+       sub             $len,  1, $len
        ldd             [$end + 0], $rlhi       ! round[last]
        ldd             [$end + 8], $rllo
 
@@ -471,7 +471,7 @@ aes_fx_cbc_encrypt:
        add             $out, 16, $out
 
        brnz,a          $len, .Loop_cbc_enc
-       sub             $len, 16, $len
+       sub             $len, 1, $len
 
        st              $out0,    [$ivp + 0]    ! output ivec
        st              $out0#lo, [$ivp + 4]
@@ -587,7 +587,7 @@ aes_fx_cbc_encrypt:
        add             $out, 16, $out
 
        brnz,a          $len, .Loop_cbc_enc_unaligned_out
-       sub             $len, 16, $len
+       sub             $len, 1, $len
 
 .Lcbc_enc_unaligned_out_done:
        faligndata      $out1, $out1, %f8
@@ -675,7 +675,7 @@ aes_fx_cbc_encrypt:
        add             $out, 16, $out
 
        brnz,a          $len, .Loop_cbc_dec
-       sub             $len, 16, $len
+       sub             $len, 1, $len
 
        st              $iv0,    [$ivp + 0]     ! output ivec
        st              $iv0#lo, [$ivp + 4]
@@ -791,7 +791,7 @@ aes_fx_cbc_encrypt:
        add             $out, 16, $out
 
        brnz,a          $len, .Loop_cbc_dec_unaligned_out
-       sub             $len, 16, $len
+       sub             $len, 1, $len
 
 .Lcbc_dec_unaligned_out_done:
        faligndata      %f2, %f2, %f8
@@ -821,8 +821,11 @@ $code.=<<___;
 .align 32
 aes_fx_ctr32_encrypt_blocks:
        save            %sp, -STACK_FRAME-16, %sp
-       and             $inp, 7, $ialign
+       srln            $len, 0, $len
        brz,pn          $len, .Lctr32_no_data
+       nop
+
+       and             $inp, 7, $ialign
        andn            $inp, 7, $inp
 
 .Lpic: call            .+8