summaryrefslogtreecommitdiff
path: root/arm
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2013-05-16 11:00:44 +0200
committerNiels Möller <nisse@lysator.liu.se>2013-05-16 11:00:44 +0200
commit8136e192d9da6d501a9d19b81e63c15b8c9729b9 (patch)
tree63c6435722ef4bf90505748babce9f22cf21cf4f /arm
parent8b1d9263f5f26bf30c1678e9baa533365453f01d (diff)
downloadnettle-8136e192d9da6d501a9d19b81e63c15b8c9729b9.tar.gz
arm: Moved AES round macros from aes.m4 to the files using them.
Diffstat (limited to 'arm')
-rw-r--r--arm/aes.m4123
-rw-r--r--arm/v6/aes-decrypt-internal.asm61
-rw-r--r--arm/v6/aes-encrypt-internal.asm63
3 files changed, 124 insertions, 123 deletions
diff --git a/arm/aes.m4 b/arm/aes.m4
index 00d3c9a3..408e35e4 100644
--- a/arm/aes.m4
+++ b/arm/aes.m4
@@ -23,129 +23,6 @@ define(<AES_STORE>, <
strb $2, [$1], #+1
>)
-C 53 instr.
-C It's tempting to use eor with rotation, but that's slower.
-C AES_ENCRYPT_ROUND(x0,x1,x2,x3,w0,w1,w2,w3,key)
-define(<AES_ENCRYPT_ROUND>, <
- uxtb T0, $1
- ldr $5, [TABLE, T0, lsl #2]
- uxtb T0, $2
- ldr $6, [TABLE, T0, lsl #2]
- uxtb T0, $3
- ldr $7, [TABLE, T0, lsl #2]
- uxtb T0, $4
- ldr $8, [TABLE, T0, lsl #2]
-
- uxtb T0, $2, ror #8
- add TABLE, TABLE, #1024
- ldr T0, [TABLE, T0, lsl #2]
- eor $5, $5, T0
- uxtb T0, $3, ror #8
- ldr T0, [TABLE, T0, lsl #2]
- eor $6, $6, T0
- uxtb T0, $4, ror #8
- ldr T0, [TABLE, T0, lsl #2]
- eor $7, $7, T0
- uxtb T0, $1, ror #8
- ldr T0, [TABLE, T0, lsl #2]
- eor $8, $8, T0
-
- uxtb T0, $3, ror #16
- add TABLE, TABLE, #1024
- ldr T0, [TABLE, T0, lsl #2]
- eor $5, $5, T0
- uxtb T0, $4, ror #16
- ldr T0, [TABLE, T0, lsl #2]
- eor $6, $6, T0
- uxtb T0, $1, ror #16
- ldr T0, [TABLE, T0, lsl #2]
- eor $7, $7, T0
- uxtb T0, $2, ror #16
- ldr T0, [TABLE, T0, lsl #2]
- eor $8, $8, T0
-
- uxtb T0, $4, ror #24
- add TABLE, TABLE, #1024
- ldr T0, [TABLE, T0, lsl #2]
- eor $5, $5, T0
- uxtb T0, $1, ror #24
- ldr T0, [TABLE, T0, lsl #2]
- eor $6, $6, T0
- uxtb T0, $2, ror #24
- ldr T0, [TABLE, T0, lsl #2]
- eor $7, $7, T0
- uxtb T0, $3, ror #24
- ldr T0, [TABLE, T0, lsl #2]
-
- ldm $9!, {$1,$2,$3,$4}
- eor $8, $8, T0
- sub TABLE, TABLE, #3072
- eor $5, $5, $1
- eor $6, $6, $2
- eor $7, $7, $3
- eor $8, $8, $4
->)
-
-define(<AES_DECRYPT_ROUND>, <
- uxtb T0, $1
- ldr $5, [TABLE, T0, lsl #2]
- uxtb T0, $2
- ldr $6, [TABLE, T0, lsl #2]
- uxtb T0, $3
- ldr $7, [TABLE, T0, lsl #2]
- uxtb T0, $4
- ldr $8, [TABLE, T0, lsl #2]
-
- uxtb T0, $4, ror #8
- add TABLE, TABLE, #1024
- ldr T0, [TABLE, T0, lsl #2]
- eor $5, $5, T0
- uxtb T0, $1, ror #8
- ldr T0, [TABLE, T0, lsl #2]
- eor $6, $6, T0
- uxtb T0, $2, ror #8
- ldr T0, [TABLE, T0, lsl #2]
- eor $7, $7, T0
- uxtb T0, $3, ror #8
- ldr T0, [TABLE, T0, lsl #2]
- eor $8, $8, T0
-
- uxtb T0, $3, ror #16
- add TABLE, TABLE, #1024
- ldr T0, [TABLE, T0, lsl #2]
- eor $5, $5, T0
- uxtb T0, $4, ror #16
- ldr T0, [TABLE, T0, lsl #2]
- eor $6, $6, T0
- uxtb T0, $1, ror #16
- ldr T0, [TABLE, T0, lsl #2]
- eor $7, $7, T0
- uxtb T0, $2, ror #16
- ldr T0, [TABLE, T0, lsl #2]
- eor $8, $8, T0
-
- uxtb T0, $2, ror #24
- add TABLE, TABLE, #1024
- ldr T0, [TABLE, T0, lsl #2]
- eor $5, $5, T0
- uxtb T0, $3, ror #24
- ldr T0, [TABLE, T0, lsl #2]
- eor $6, $6, T0
- uxtb T0, $4, ror #24
- ldr T0, [TABLE, T0, lsl #2]
- eor $7, $7, T0
- uxtb T0, $1, ror #24
- ldr T0, [TABLE, T0, lsl #2]
-
- ldm $9!, {$1,$2,$3,$4}
- eor $8, $8, T0
- sub TABLE, TABLE, #3072
- eor $5, $5, $1
- eor $6, $6, $2
- eor $7, $7, $3
- eor $8, $8, $4
->)
-
C AES_FINAL_ROUND(a,b,c,d,key,res)
define(<AES_FINAL_ROUND>, <
uxtb T0, $1
diff --git a/arm/v6/aes-decrypt-internal.asm b/arm/v6/aes-decrypt-internal.asm
index 651636cc..0c8cfc5e 100644
--- a/arm/v6/aes-decrypt-internal.asm
+++ b/arm/v6/aes-decrypt-internal.asm
@@ -43,6 +43,67 @@ define(<X2>, <r12>)
define(<X3>, <r14>) C lr
+C AES_DECRYPT_ROUND(x0,x1,x2,x3,w0,w1,w2,w3,key)
+define(<AES_DECRYPT_ROUND>, <
+ uxtb T0, $1
+ ldr $5, [TABLE, T0, lsl #2]
+ uxtb T0, $2
+ ldr $6, [TABLE, T0, lsl #2]
+ uxtb T0, $3
+ ldr $7, [TABLE, T0, lsl #2]
+ uxtb T0, $4
+ ldr $8, [TABLE, T0, lsl #2]
+
+ uxtb T0, $4, ror #8
+ add TABLE, TABLE, #1024
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $5, $5, T0
+ uxtb T0, $1, ror #8
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $6, $6, T0
+ uxtb T0, $2, ror #8
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $7, $7, T0
+ uxtb T0, $3, ror #8
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $8, $8, T0
+
+ uxtb T0, $3, ror #16
+ add TABLE, TABLE, #1024
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $5, $5, T0
+ uxtb T0, $4, ror #16
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $6, $6, T0
+ uxtb T0, $1, ror #16
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $7, $7, T0
+ uxtb T0, $2, ror #16
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $8, $8, T0
+
+ uxtb T0, $2, ror #24
+ add TABLE, TABLE, #1024
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $5, $5, T0
+ uxtb T0, $3, ror #24
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $6, $6, T0
+ uxtb T0, $4, ror #24
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $7, $7, T0
+ uxtb T0, $1, ror #24
+ ldr T0, [TABLE, T0, lsl #2]
+
+ ldm $9!, {$1,$2,$3,$4}
+ eor $8, $8, T0
+ sub TABLE, TABLE, #3072
+ eor $5, $5, $1
+ eor $6, $6, $2
+ eor $7, $7, $3
+ eor $8, $8, $4
+>)
+
.file "aes-decrypt-internal.asm"
C _aes_decrypt(struct aes_context *ctx,
diff --git a/arm/v6/aes-encrypt-internal.asm b/arm/v6/aes-encrypt-internal.asm
index 15cf1bb0..69556a35 100644
--- a/arm/v6/aes-encrypt-internal.asm
+++ b/arm/v6/aes-encrypt-internal.asm
@@ -45,6 +45,69 @@ define(<X2>, <r12>)
define(<X3>, <r14>) C lr
+C 53 instr.
+C It's tempting to use eor with rotation, but that's slower.
+C AES_ENCRYPT_ROUND(x0,x1,x2,x3,w0,w1,w2,w3,key)
+define(<AES_ENCRYPT_ROUND>, <
+ uxtb T0, $1
+ ldr $5, [TABLE, T0, lsl #2]
+ uxtb T0, $2
+ ldr $6, [TABLE, T0, lsl #2]
+ uxtb T0, $3
+ ldr $7, [TABLE, T0, lsl #2]
+ uxtb T0, $4
+ ldr $8, [TABLE, T0, lsl #2]
+
+ uxtb T0, $2, ror #8
+ add TABLE, TABLE, #1024
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $5, $5, T0
+ uxtb T0, $3, ror #8
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $6, $6, T0
+ uxtb T0, $4, ror #8
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $7, $7, T0
+ uxtb T0, $1, ror #8
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $8, $8, T0
+
+ uxtb T0, $3, ror #16
+ add TABLE, TABLE, #1024
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $5, $5, T0
+ uxtb T0, $4, ror #16
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $6, $6, T0
+ uxtb T0, $1, ror #16
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $7, $7, T0
+ uxtb T0, $2, ror #16
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $8, $8, T0
+
+ uxtb T0, $4, ror #24
+ add TABLE, TABLE, #1024
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $5, $5, T0
+ uxtb T0, $1, ror #24
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $6, $6, T0
+ uxtb T0, $2, ror #24
+ ldr T0, [TABLE, T0, lsl #2]
+ eor $7, $7, T0
+ uxtb T0, $3, ror #24
+ ldr T0, [TABLE, T0, lsl #2]
+
+ ldm $9!, {$1,$2,$3,$4}
+ eor $8, $8, T0
+ sub TABLE, TABLE, #3072
+ eor $5, $5, $1
+ eor $6, $6, $2
+ eor $7, $7, $3
+ eor $8, $8, $4
+>)
+
.file "aes-encrypt-internal.asm"
C _aes_encrypt(struct aes_context *ctx,