X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=sha1-asm.S;h=f571685984c5046fd0f4280adbc9a5fe513720a8;hb=53f8a8d7ca5c03120224128e1f8552c99f6af11e;hp=74d7c11223aa7a35f1e12638c25d1537c4cdaa04;hpb=5fe96fa58fee8907778ba3388b65d779a1a47c97;p=avr-crypto-lib.git diff --git a/sha1-asm.S b/sha1-asm.S index 74d7c11..f571685 100644 --- a/sha1-asm.S +++ b/sha1-asm.S @@ -271,21 +271,24 @@ sha1_lastBlock_localSpace = (SHA1_BLOCK_BITS/8+1) sha1_lastBlock: - tst r20 - brne sha1_lastBlock_prolog cpi r21, 0x02 - brne sha1_lastBlock_prolog + brlo sha1_lastBlock_prolog push r25 push r24 push r23 push r22 + push r21 + push r20 rcall sha1_nextBlock + pop r20 + pop r21 pop r22 pop r23 pop r24 pop r25 - clr r21 - clr r22 + subi r21, 2 + subi r23, -2 + rjmp sha1_lastBlock sha1_lastBlock_prolog: /* allocate space on stack */ in r30, SPL @@ -732,7 +735,7 @@ sha1_nextBlock_update_a: inc LoopC cpi LoopC, 80 brge 1f - jmp sha1_nextBlock_mainloop + rjmp sha1_nextBlock_mainloop /**************************************/ 1: /* littel patch */ @@ -799,10 +802,13 @@ sha1_nextBlock_KTable: .int 0x8f1bbcdc .int 0xca62c1d6 sha1_nextBlock_JumpTable: -jmp sha1_nextBlock_Ch -jmp sha1_nextBlock_Parity -jmp sha1_nextBlock_Maj -jmp sha1_nextBlock_Parity +rjmp sha1_nextBlock_Ch + nop +rjmp sha1_nextBlock_Parity + nop +rjmp sha1_nextBlock_Maj + nop +rjmp sha1_nextBlock_Parity /* X and Y still point at a[1] aka b ; return value in tmp1 */ sha1_nextBlock_Ch: @@ -814,13 +820,6 @@ sha1_nextBlock_Ch: ldd tmp3, Y+7 /* load from d */ and tmp2, tmp3 eor tmp1, tmp2 - /** - precall - ldi r24, lo8(ch_str) - ldi r25, hi8(ch_str) - call uart_putstr_P - postcall - /**/ ret sha1_nextBlock_Maj: @@ -833,13 +832,6 @@ sha1_nextBlock_Maj: eor tmp1, tmp2 and tmp3, tmp4 eor tmp1, tmp3 - /** - precall - ldi r24, lo8(maj_str) - ldi r25, hi8(maj_str) - call uart_putstr_P - postcall - /**/ ret sha1_nextBlock_Parity: @@ -848,14 +840,6 @@ sha1_nextBlock_Parity: eor tmp1, tmp2 ldd tmp2, Y+7 /* load from d */ eor tmp1, tmp2 - - /** - precall - ldi r24, lo8(parity_str) - ldi r25, hi8(parity_str) - call uart_putstr_P - postcall - /**/ ret /* ch_str: .asciz "\r\nCh"