summaryrefslogtreecommitdiff
path: root/sparc/aes.asm
diff options
context:
space:
mode:
Diffstat (limited to 'sparc/aes.asm')
-rw-r--r--sparc/aes.asm29
1 files changed, 10 insertions, 19 deletions
diff --git a/sparc/aes.asm b/sparc/aes.asm
index 0df565ca..e49a195d 100644
--- a/sparc/aes.asm
+++ b/sparc/aes.asm
@@ -106,7 +106,6 @@ _aes_crypt:
.Lround_loop:
! 4*i
mov 0, i
- ! add T, AES_SIDX3, idx
.Linner_loop:
! The comments mark which j in T->table[j][ Bj(wtxt[IDXi(i)]) ]
! the instruction is a part of.
@@ -114,68 +113,60 @@ _aes_crypt:
! The code uses the register %o[j], aka tj, as the primary
! register for that sub-expression. True for j==1,3.
- ! AES_SIDX1
ld [IDX1+i], t1 ! 1
- ! AES_SIDX2
+
! IDX2(j) = j XOR 2
xor i, 8, t2
- ! wtxt[IDX1...]
add wtxt, t1, t1 ! 1
ldub [t1+2], t1 ! 1
-
- ! AES_SIDX3
ld [IDX3+i], t3 ! 3
+
sll t1, 2, t1 ! 1
- ! wtxt[i]
ld [wtxt+i], t0 ! 0
- ! wtxt[IDX2...]
lduh [wtxt+t2], t2 ! 2
-
and t0, 255, t0 ! 0
- ! wtxt[IDX3...]
+
ldub [wtxt+t3], t3 ! 3
sll t0, 2, t0 ! 0
ld [T0+t0], t0 ! 0
-
and t2, 255, t2 ! 2
+
ld [T1+t1], t1 ! 1
sll t2, 2, t2 ! 2
ld [T2+t2], t2 ! 2
-
sll t3, 2, t3 ! 3
+
ld [T3+t3], t3 ! 3
xor t0, t1, t0 ! 0, 1
xor t0, t2, t0 ! 0, 1, 2
-
- ! add idx, 4, idx
! Fetch roundkey
ld [key+i], t1
+
xor t0, t3, t0 ! 0, 1, 2, 3
xor t0, t1, t0
-
st t0, [tmp+i]
cmp i, 8
+
bleu .Linner_loop
add i, 4, i
-
! switch roles for tmp and wtxt
xor wtxt, diff, wtxt
subcc round, 1, round
+
add key, 16, key
nop
-
bne .Lround_loop
xor tmp, diff, tmp
! final round
! 4*i
mov 0, i
- ! SIDX3
- ! add T, AES_SIDX3, idx
+
.Lfinal_loop:
! Comments mark which j in T->sbox[Bj(wtxt[IDXj(i)])]
! the instruction is part of
ld [IDX1+i], t1 ! 1
+ ! IDX2(j) = j XOR 2
xor i, 8, t2
! ld [idx-16], t2 ! 2
add wtxt, t1, t1 ! 1