diff --git a/sparc/aes.asm b/sparc/aes.asm index ebfc28b8ae71c2c013d50c62f2399b402b7b9324..def772480f0533fc18360bbe6f99298d8d14bcca 100644 --- a/sparc/aes.asm +++ b/sparc/aes.asm @@ -1,4 +1,4 @@ - ! Used registers: %l0,1,2 + ! Used registers: %l0,1 ! %i0,1,2,3,4,5 (%i6=%fp, %i7 = return) ! %o0,1,2,3,4,7 (%o6=%sp) ! %g1,2,3,4 @@ -19,7 +19,7 @@ define(dst, %i3) define(src, %i4) define(wtxt, %l1) -define(tmp, %o1) +define(tmp, %l0) _aes_crypt: ! Why -136? save %sp, -136, %sp @@ -30,7 +30,7 @@ _aes_crypt: ! wtxt add %fp, -24, wtxt - ! mov %l1, wtxt + .Lblock_loop: ! Read src, and add initial subkey mov -4, %o4 @@ -87,7 +87,6 @@ _aes_crypt: add %fp, -40, tmp mov %g2, %o7 - mov tmp, %l0 ! wtxt mov wtxt, %g4 @@ -97,50 +96,53 @@ _aes_crypt: .Lround_loop: add T, AES_SIDX3, %o2 .Linner_loop: + ! The comments mark which T->table[0][ B0(wtxt[IDX0(j)]) ] + ! the isntruction is a part of. + ! AES_SIDX1 - ld [%o2-32], %g3 + ld [%o2-32], %g3 ! 1 ! AES_SIDX2 - ld [%o2-16], %o4 + ld [%o2-16], %o4 ! 2 ! wtxt[IDX1...] - add %g4, %g3, %g3 - ldub [%g3+2], %o0 + add %g4, %g3, %g3 ! 1 + ldub [%g3+2], %o0 ! 1 ! AES_SIDX3 - ld [%o2], %g2 - sll %o0, 2, %o0 + ld [%o2], %g2 ! 3 + sll %o0, 2, %o0 ! 1 - ! wtxt[j] - ld [%g4+%o3], %o5 + ! wtxt[i] + ld [%g4+%o3], %o5 ! 0 ! wtxt[IDX2...] - lduh [%g4+%o4], %g3 + lduh [%g4+%o4], %g3 ! 2 - and %o5, 255, %o5 + and %o5, 255, %o5 ! 0 ! wtxt[IDX3...] - ldub [%g4+%g2], %o4 + ldub [%g4+%g2], %o4 ! 3 - sll %o5, 2, %o5 - add %o5, AES_TABLE0, %o5 - ld [T+%o5], %g2 + sll %o5, 2, %o5 ! 0 + add %o5, AES_TABLE0, %o5 ! 0 + ld [T+%o5], %g2 ! 0 - add %o0, AES_TABLE1, %o0 - and %g3, 255, %g3 - ld [T+%o0], %o5 - sll %g3, 2, %g3 - add %g3, AES_TABLE2, %g3 - ld [T+%g3], %o0 - sll %o4, 2, %o4 - add %o4, AES_TABLE3, %o4 - ld [T+%o4], %g3 - xor %g2, %o5, %g2 - xor %g2, %o0, %g2 + add %o0, AES_TABLE1, %o0 ! 1 + and %g3, 255, %g3 ! 2 + ld [T+%o0], %o5 ! 1 + sll %g3, 2, %g3 ! 2 + add %g3, AES_TABLE2, %g3 ! 2 + ld [T+%g3], %o0 ! 2 + sll %o4, 2, %o4 ! 3 + add %o4, AES_TABLE3, %o4 ! 3 + ld [T+%o4], %g3 ! 3 + xor %g2, %o5, %g2 ! 0, 1 + xor %g2, %o0, %g2 ! 0, 1, 2 - add %o2, 4, %o2 + add %o2, 4, %o2 - xor %g2, %g3, %g2 - st %g2, [%l0+%o3] + xor %g2, %g3, %g2 ! 0, 1, 2, 3 + st %g2, [tmp+%o3] cmp %o3, 8