Skip to content

Commit 2971c70

Browse files
authored
Merge pull request wolfSSL#9671 from SparkiDev/aes_gcm_arm32_hw_crypto_set_key_unaligned
ARM32 HW Crypto: AES-GCM set key unaligned key
2 parents 7efefc7 + 17de9bd commit 2971c70

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

wolfcrypt/src/port/arm/armv8-32-aes-asm.S

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3914,7 +3914,8 @@ L_aes_ctr_encrypt_arm32_crypto_done:
39143914
AES_GCM_set_key_AARCH32:
39153915
vpush {d8, d9}
39163916
vld1.8 {q0}, [r0]
3917-
vldm r1!, {q1-q4}
3917+
vld1.8 {q1, q2}, [r1]!
3918+
vld1.8 {q3, q4}, [r1]!
39183919
aese.8 q0, q1
39193920
aesmc.8 q0, q0
39203921
aese.8 q0, q2
@@ -3923,7 +3924,8 @@ AES_GCM_set_key_AARCH32:
39233924
aesmc.8 q0, q0
39243925
aese.8 q0, q4
39253926
aesmc.8 q0, q0
3926-
vldm r1!, {q1-q4}
3927+
vld1.8 {q1, q2}, [r1]!
3928+
vld1.8 {q3, q4}, [r1]!
39273929
aese.8 q0, q1
39283930
aesmc.8 q0, q0
39293931
aese.8 q0, q2
@@ -3933,25 +3935,25 @@ AES_GCM_set_key_AARCH32:
39333935
aese.8 q0, q4
39343936
aesmc.8 q0, q0
39353937
subs r3, r3, #10
3936-
vld1.32 {q1, q2}, [r1]!
3938+
vld1.8 {q1, q2}, [r1]!
39373939
aese.8 q0, q1
39383940
aesmc.8 q0, q0
39393941
aese.8 q0, q2
39403942
beq L_aes_gcm_set_key_arm32_crypto_round_done
3941-
vld1.32 {q1, q2}, [r1]!
3943+
vld1.8 {q1, q2}, [r1]!
39423944
subs r3, r3, #2
39433945
aesmc.8 q0, q0
39443946
aese.8 q0, q1
39453947
aesmc.8 q0, q0
39463948
aese.8 q0, q2
39473949
beq L_aes_gcm_set_key_arm32_crypto_round_done
3948-
vld1.32 {q1, q2}, [r1]!
3950+
vld1.8 {q1, q2}, [r1]!
39493951
aesmc.8 q0, q0
39503952
aese.8 q0, q1
39513953
aesmc.8 q0, q0
39523954
aese.8 q0, q2
39533955
L_aes_gcm_set_key_arm32_crypto_round_done:
3954-
vld1.32 {q1}, [r1]
3956+
vld1.8 {q1}, [r1]
39553957
veor q0, q0, q1
39563958
vmov.i8 q1, #0x55
39573959
vshl.u8 q2, q0, #1

wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4219,7 +4219,8 @@ WC_OMIT_FRAME_POINTER void AES_GCM_set_key_AARCH32(const byte* nonce,
42194219

42204220
__asm__ __volatile__ (
42214221
"vld1.8 {q0}, [%[nonce]]\n\t"
4222-
"vldm %[key]!, {q1-q4}\n\t"
4222+
"vld1.8 {q1-q2}, [%[key]]!\n\t"
4223+
"vld1.8 {q3-q4}, [%[key]]!\n\t"
42234224
"aese.8 q0, q1\n\t"
42244225
"aesmc.8 q0, q0\n\t"
42254226
"aese.8 q0, q2\n\t"
@@ -4228,7 +4229,8 @@ WC_OMIT_FRAME_POINTER void AES_GCM_set_key_AARCH32(const byte* nonce,
42284229
"aesmc.8 q0, q0\n\t"
42294230
"aese.8 q0, q4\n\t"
42304231
"aesmc.8 q0, q0\n\t"
4231-
"vldm %[key]!, {q1-q4}\n\t"
4232+
"vld1.8 {q1-q2}, [%[key]]!\n\t"
4233+
"vld1.8 {q3-q4}, [%[key]]!\n\t"
42324234
"aese.8 q0, q1\n\t"
42334235
"aesmc.8 q0, q0\n\t"
42344236
"aese.8 q0, q2\n\t"
@@ -4238,26 +4240,26 @@ WC_OMIT_FRAME_POINTER void AES_GCM_set_key_AARCH32(const byte* nonce,
42384240
"aese.8 q0, q4\n\t"
42394241
"aesmc.8 q0, q0\n\t"
42404242
"subs %[nr], %[nr], #10\n\t"
4241-
"vld1.32 {q1-q2}, [%[key]]!\n\t"
4243+
"vld1.8 {q1-q2}, [%[key]]!\n\t"
42424244
"aese.8 q0, q1\n\t"
42434245
"aesmc.8 q0, q0\n\t"
42444246
"aese.8 q0, q2\n\t"
42454247
"beq L_aes_gcm_set_key_arm32_crypto_round_done_%=\n\t"
4246-
"vld1.32 {q1-q2}, [%[key]]!\n\t"
4248+
"vld1.8 {q1-q2}, [%[key]]!\n\t"
42474249
"subs %[nr], %[nr], #2\n\t"
42484250
"aesmc.8 q0, q0\n\t"
42494251
"aese.8 q0, q1\n\t"
42504252
"aesmc.8 q0, q0\n\t"
42514253
"aese.8 q0, q2\n\t"
42524254
"beq L_aes_gcm_set_key_arm32_crypto_round_done_%=\n\t"
4253-
"vld1.32 {q1-q2}, [%[key]]!\n\t"
4255+
"vld1.8 {q1-q2}, [%[key]]!\n\t"
42544256
"aesmc.8 q0, q0\n\t"
42554257
"aese.8 q0, q1\n\t"
42564258
"aesmc.8 q0, q0\n\t"
42574259
"aese.8 q0, q2\n\t"
42584260
"\n"
42594261
"L_aes_gcm_set_key_arm32_crypto_round_done_%=: \n\t"
4260-
"vld1.32 {q1}, [%[key]]\n\t"
4262+
"vld1.8 {q1}, [%[key]]\n\t"
42614263
"veor q0, q0, q1\n\t"
42624264
"vmov.i8 q1, #0x55\n\t"
42634265
"vshl.u8 q2, q0, #1\n\t"

0 commit comments

Comments
 (0)