X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fpoly1305%2Fasm%2Fpoly1305-mips.pl;h=d2b3e90d93f0456399c267e144667f01256a8cf2;hp=b5bce4775d1415d58d458933c65d5cb4918bcbc7;hb=8640f21093ae02c838e183f04ea52f781b5c98d6;hpb=ff823ee89b678a92a6f74898609f73f51dae38a7 diff --git a/crypto/poly1305/asm/poly1305-mips.pl b/crypto/poly1305/asm/poly1305-mips.pl index b5bce4775d..d2b3e90d93 100755 --- a/crypto/poly1305/asm/poly1305-mips.pl +++ b/crypto/poly1305/asm/poly1305-mips.pl @@ -170,20 +170,27 @@ $code.=<<___; poly1305_blocks: .set noreorder dsrl $len,4 # number of complete blocks - beqz $len,.Lno_data + bnez $len,poly1305_blocks_internal 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 - 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 - 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 @@ -311,22 +318,19 @@ $code.=<<___; 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 - 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.=<<___; - dadd $sp,8*8 - -.Lno_data: jr $ra - nop -.end poly1305_blocks + dadd $sp,6*8 +.end poly1305_blocks_internal ___ } {