diff --git a/sparc/aes.asm b/sparc/aes.asm index e2c34ecfe15b9118a11552de0cce8cfe0a5476f9..5b40aaca09ff0cabe458dadef93790e790a42a42 100644 --- a/sparc/aes.asm +++ b/sparc/aes.asm @@ -1,3 +1,7 @@ + ! Used registers: %l0,1,2 + ! %i0,1,2,3,4,5 (%i6=%fp, %i7 = return) + ! %o0,1,2,3,4,7 (%o6=%sp) + ! %g1,2,3,4 include(`asm.m4') .file "aes.asm" @@ -8,7 +12,7 @@ include(`asm.m4') .type _aes_crypt,#function .proc 020 -define(ctx, %o5) +define(ctx, %i0) define(T, %o0) define(length, %o4) define(dst, %o3) @@ -22,7 +26,6 @@ _aes_crypt: ! Why this moving around of the input parameters? mov %i2, length - mov %i0, ctx mov %i1, T mov %i3, dst cmp length, 0 @@ -37,19 +40,19 @@ _aes_crypt: .Lsource_loop: add %i2, 4, %i2 - add %i2, src, %i0 - ldub [%i0+3], %g2 + add %i2, src, %o5 + ldub [%o5+3], %g2 - ldub [%i0+2], %g3 + ldub [%o5+2], %g3 sll %g2, 24, %g2 - ldub [%i0+1], %i1 + ldub [%o5+1], %i1 sll %g3, 16, %g3 or %g2, %g3, %g2 - ldub [src+%i2], %i0 + ldub [src+%i2], %o5 sll %i1, 8, %i1 ld [ctx+%i2], %g3 or %g2, %i1, %g2 - or %g2, %i0, %g2 + or %g2, %o5, %g2 xor %g2, %g3, %g2 cmp %i2, 12 @@ -111,30 +114,30 @@ _aes_crypt: sll %i1, 2, %i1 ! wtxt[j] - ld [%g4+%i3], %i0 + ld [%g4+%i3], %o5 ! wtxt[IDX2...] lduh [%g4+%i2], %g3 - and %i0, 255, %i0 + and %o5, 255, %o5 ! wtxt[IDX3...] ldub [%g4+%g2], %i2 - sll %i0, 2, %i0 - add %i0, AES_TABLE0, %i0 - ld [T+%i0], %g2 + sll %o5, 2, %o5 + add %o5, AES_TABLE0, %o5 + ld [T+%o5], %g2 add %i1, AES_TABLE1, %i1 and %g3, 255, %g3 - ld [T+%i1], %i0 + ld [T+%i1], %o5 sll %g3, 2, %g3 add %g3, AES_TABLE2, %g3 ld [T+%g3], %i1 sll %i2, 2, %i2 add %i2, AES_TABLE3, %i2 ld [T+%i2], %g3 - xor %g2, %i0, %g2 + xor %g2, %o5, %g2 xor %g2, %i1, %g2 add %i4, 4, %i4 @@ -154,11 +157,11 @@ _aes_crypt: mov tmp, %i2 .Lroundkey_loop: sll %i5, 2, %g2 - ld [%i1], %i0 + ld [%i1], %o5 add %i5, 1, %i5 ld [%i2+%g2], %g3 cmp %i5, 3 - xor %g3, %i0, %g3 + xor %g3, %o5, %g3 st %g3, [%i3+%g2] bleu .Lroundkey_loop add %i1, 4, %i1 @@ -187,28 +190,28 @@ _aes_crypt: sll %g3, 2, %g3 lduh [%g1+%g3], %i2 and %g2, 255, %g2 - ld [%g4], %i0 + ld [%g4], %o5 and %i2, 255, %i2 ldub [T+%i3], %i1 - sll %i0, 2, %i0 + sll %o5, 2, %o5 ldub [T+%g2], %g3 sll %i1, 8, %i1 - ldub [%g1+%i0], %i3 + ldub [%g1+%o5], %i3 or %g3, %i1, %g3 ldub [T+%i2], %g2 cmp %o1, 3 - ldub [T+%i3], %i0 + ldub [T+%i3], %o5 sll %g2, 16, %g2 or %g3, %g2, %g3 ld [%o7], %g2 - sll %i0, 24, %i0 - or %g3, %i0, %g3 + sll %o5, 24, %o5 + or %g3, %o5, %g3 xor %g3, %g2, %g3 - srl %g3, 24, %i0 + srl %g3, 24, %o5 srl %g3, 16, %i1 srl %g3, 8, %g2 stb %g2, [%i4+1] - stb %i0, [%i4+3] + stb %o5, [%i4+3] stb %i1, [%i4+2] stb %g3, [dst+%i5] add %o7, 4, %o7