poly1305/asm/poly1305-mips.pl: adhere to standard frame layout.
authorAndy Polyakov <appro@openssl.org>
Fri, 27 May 2016 19:50:49 +0000 (21:50 +0200)
committerAndy Polyakov <appro@openssl.org>
Sat, 28 May 2016 20:17:59 +0000 (22:17 +0200)
Reviewed-by: Richard Levitte <levitte@openssl.org>
crypto/poly1305/asm/poly1305-mips.pl

index b5bce4775d1415d58d458933c65d5cb4918bcbc7..d2b3e90d93f0456399c267e144667f01256a8cf2 100755 (executable)
@@ -170,20 +170,27 @@ $code.=<<___;
 poly1305_blocks:
        .set    noreorder
        dsrl    $len,4                  # number of complete blocks
 poly1305_blocks:
        .set    noreorder
        dsrl    $len,4                  # number of complete blocks
-       beqz    $len,.Lno_data
+       bnez    $len,poly1305_blocks_internal
        nop
        nop
+       jr      $ra
+       nop
+.end   poly1305_blocks
 
 
-       .frame  $sp,8*8,$ra
+.align 5
+.ent   poly1305_blocks_internal
+poly1305_blocks_internal:
+       .frame  $sp,6*8,$ra
        .mask   $SAVED_REGS_MASK,-8
        .mask   $SAVED_REGS_MASK,-8
-       dsub    $sp,8*8
-       sd      $s5,0($sp)
-       sd      $s4,8($sp)
+       .set    noreorder
+       dsub    $sp,6*8
+       sd      $s5,40($sp)
+       sd      $s4,32($sp)
 ___
 $code.=<<___ if ($flavour =~ /nubi/i); # optimize non-nubi prologue
 ___
 $code.=<<___ if ($flavour =~ /nubi/i); # optimize non-nubi prologue
-       sd      $s3,16($sp)
-       sd      $s2,24($sp)
-       sd      $s1,32($sp)
-       sd      $s0,40($sp)
+       sd      $s3,24($sp)
+       sd      $s2,16($sp)
+       sd      $s1,8($sp)
+       sd      $s0,0($sp)
 ___
 $code.=<<___;
        .set    reorder
 ___
 $code.=<<___;
        .set    reorder
@@ -311,22 +318,19 @@ $code.=<<___;
        sd      $h2,16($ctx)
 
        .set    noreorder
        sd      $h2,16($ctx)
 
        .set    noreorder
-       ld      $s5,0($sp)              # epilogue
-       ld      $s4,8($sp)
+       ld      $s5,40($sp)             # epilogue
+       ld      $s4,32($sp)
 ___
 $code.=<<___ if ($flavour =~ /nubi/i); # optimize non-nubi epilogue
 ___
 $code.=<<___ if ($flavour =~ /nubi/i); # optimize non-nubi epilogue
-       ld      $s3,16($sp)
-       ld      $s2,24($sp)
-       ld      $s1,32($sp)
-       ld      $s0,40($sp)
+       ld      $s3,24($sp)
+       ld      $s2,16($sp)
+       ld      $s1,8($sp)
+       ld      $s0,0($sp)
 ___
 $code.=<<___;
 ___
 $code.=<<___;
-       dadd    $sp,8*8
-
-.Lno_data:
        jr      $ra
        jr      $ra
-       nop
-.end   poly1305_blocks
+       dadd    $sp,6*8
+.end   poly1305_blocks_internal
 ___
 }
 {
 ___
 }
 {