and T0, MASK, $1, ror #22
ldr T0, [TABLE, T0]
- ldm $9!, {$1,$2,$3,$4}
+ ldm $9, {$1,$2,$3,$4}
eor $8, $8, T0
sub TABLE, TABLE, #3072
eor $5, $5, $1
eor $6, $6, $2
+ sub $9, $9, #16
eor $7, $7, $3
eor $8, $8, $4
')
AES_LOAD(X0,KEY,W0)
AES_LOAD(X0,KEY,W1)
AES_LOAD(X0,KEY,W2)
- AES_LOAD(X0,KEY,W3)
+ AES_LOAD_INCR(X0,KEY,W3, -28)
str X0, FRAME_SRC
C Loads one word, and adds it to the subkey. Uses T0
-C AES_LOAD(SRC, KEY, REG)
-define(`AES_LOAD', `
+C AES_LOAD(SRC, KEY, REG, INCR)
+define(`AES_LOAD_INCR', `
ldrb $3, [$1], #+1
ldrb T0, [$1], #+1
orr $3, T0, lsl #8
orr $3, T0, lsl #16
ldrb T0, [$1], #+1
orr $3, T0, lsl #24
- ldr T0, [$2], #+4
+ ldr T0, [$2], #$4
eor $3, T0
')
+C Loads one word, and adds it to the subkey. Uses T0
+C AES_LOAD(SRC, KEY, REG)
+define(`AES_LOAD', `AES_LOAD_INCR($1, $2, $3, +4)')
+
C Stores one word. Destroys input.
C AES_STORE(DST, X)
define(`AES_STORE', `
uxtb T0, $1, ror #24
ldr T0, [TABLE, T0, lsl #2]
- ldm $9!, {$1,$2,$3,$4}
+ ldm $9, {$1,$2,$3,$4}
eor $8, $8, T0
sub TABLE, TABLE, #3072
eor $5, $5, $1
eor $6, $6, $2
+ sub $9, $9, #16
eor $7, $7, $3
eor $8, $8, $4
')
AES_LOAD(SRC,KEY,W0)
AES_LOAD(SRC,KEY,W1)
AES_LOAD(SRC,KEY,W2)
- AES_LOAD(SRC,KEY,W3)
+ AES_LOAD_INCR(SRC,KEY,W3, -28)
str SRC, FRAME_SRC