mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-08 06:30:48 +02:00
Merge pull request #9671 from SparkiDev/aes_gcm_arm32_hw_crypto_set_key_unaligned
ARM32 HW Crypto: AES-GCM set key unaligned key
This commit is contained in:
@@ -3914,7 +3914,8 @@ L_aes_ctr_encrypt_arm32_crypto_done:
|
||||
AES_GCM_set_key_AARCH32:
|
||||
vpush {d8, d9}
|
||||
vld1.8 {q0}, [r0]
|
||||
vldm r1!, {q1-q4}
|
||||
vld1.8 {q1, q2}, [r1]!
|
||||
vld1.8 {q3, q4}, [r1]!
|
||||
aese.8 q0, q1
|
||||
aesmc.8 q0, q0
|
||||
aese.8 q0, q2
|
||||
@@ -3923,7 +3924,8 @@ AES_GCM_set_key_AARCH32:
|
||||
aesmc.8 q0, q0
|
||||
aese.8 q0, q4
|
||||
aesmc.8 q0, q0
|
||||
vldm r1!, {q1-q4}
|
||||
vld1.8 {q1, q2}, [r1]!
|
||||
vld1.8 {q3, q4}, [r1]!
|
||||
aese.8 q0, q1
|
||||
aesmc.8 q0, q0
|
||||
aese.8 q0, q2
|
||||
@@ -3933,25 +3935,25 @@ AES_GCM_set_key_AARCH32:
|
||||
aese.8 q0, q4
|
||||
aesmc.8 q0, q0
|
||||
subs r3, r3, #10
|
||||
vld1.32 {q1, q2}, [r1]!
|
||||
vld1.8 {q1, q2}, [r1]!
|
||||
aese.8 q0, q1
|
||||
aesmc.8 q0, q0
|
||||
aese.8 q0, q2
|
||||
beq L_aes_gcm_set_key_arm32_crypto_round_done
|
||||
vld1.32 {q1, q2}, [r1]!
|
||||
vld1.8 {q1, q2}, [r1]!
|
||||
subs r3, r3, #2
|
||||
aesmc.8 q0, q0
|
||||
aese.8 q0, q1
|
||||
aesmc.8 q0, q0
|
||||
aese.8 q0, q2
|
||||
beq L_aes_gcm_set_key_arm32_crypto_round_done
|
||||
vld1.32 {q1, q2}, [r1]!
|
||||
vld1.8 {q1, q2}, [r1]!
|
||||
aesmc.8 q0, q0
|
||||
aese.8 q0, q1
|
||||
aesmc.8 q0, q0
|
||||
aese.8 q0, q2
|
||||
L_aes_gcm_set_key_arm32_crypto_round_done:
|
||||
vld1.32 {q1}, [r1]
|
||||
vld1.8 {q1}, [r1]
|
||||
veor q0, q0, q1
|
||||
vmov.i8 q1, #0x55
|
||||
vshl.u8 q2, q0, #1
|
||||
|
||||
@@ -4219,7 +4219,8 @@ WC_OMIT_FRAME_POINTER void AES_GCM_set_key_AARCH32(const byte* nonce,
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"vld1.8 {q0}, [%[nonce]]\n\t"
|
||||
"vldm %[key]!, {q1-q4}\n\t"
|
||||
"vld1.8 {q1-q2}, [%[key]]!\n\t"
|
||||
"vld1.8 {q3-q4}, [%[key]]!\n\t"
|
||||
"aese.8 q0, q1\n\t"
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"aese.8 q0, q2\n\t"
|
||||
@@ -4228,7 +4229,8 @@ WC_OMIT_FRAME_POINTER void AES_GCM_set_key_AARCH32(const byte* nonce,
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"aese.8 q0, q4\n\t"
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"vldm %[key]!, {q1-q4}\n\t"
|
||||
"vld1.8 {q1-q2}, [%[key]]!\n\t"
|
||||
"vld1.8 {q3-q4}, [%[key]]!\n\t"
|
||||
"aese.8 q0, q1\n\t"
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"aese.8 q0, q2\n\t"
|
||||
@@ -4238,26 +4240,26 @@ WC_OMIT_FRAME_POINTER void AES_GCM_set_key_AARCH32(const byte* nonce,
|
||||
"aese.8 q0, q4\n\t"
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"subs %[nr], %[nr], #10\n\t"
|
||||
"vld1.32 {q1-q2}, [%[key]]!\n\t"
|
||||
"vld1.8 {q1-q2}, [%[key]]!\n\t"
|
||||
"aese.8 q0, q1\n\t"
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"aese.8 q0, q2\n\t"
|
||||
"beq L_aes_gcm_set_key_arm32_crypto_round_done_%=\n\t"
|
||||
"vld1.32 {q1-q2}, [%[key]]!\n\t"
|
||||
"vld1.8 {q1-q2}, [%[key]]!\n\t"
|
||||
"subs %[nr], %[nr], #2\n\t"
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"aese.8 q0, q1\n\t"
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"aese.8 q0, q2\n\t"
|
||||
"beq L_aes_gcm_set_key_arm32_crypto_round_done_%=\n\t"
|
||||
"vld1.32 {q1-q2}, [%[key]]!\n\t"
|
||||
"vld1.8 {q1-q2}, [%[key]]!\n\t"
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"aese.8 q0, q1\n\t"
|
||||
"aesmc.8 q0, q0\n\t"
|
||||
"aese.8 q0, q2\n\t"
|
||||
"\n"
|
||||
"L_aes_gcm_set_key_arm32_crypto_round_done_%=: \n\t"
|
||||
"vld1.32 {q1}, [%[key]]\n\t"
|
||||
"vld1.8 {q1}, [%[key]]\n\t"
|
||||
"veor q0, q0, q1\n\t"
|
||||
"vmov.i8 q1, #0x55\n\t"
|
||||
"vshl.u8 q2, q0, #1\n\t"
|
||||
|
||||
Reference in New Issue
Block a user