mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 18:57:27 +02:00
Merge pull request #7301 from SparkiDev/thumb2_aes_key_align_fix
Thumb2 AES ASM: don't assume alignment on key
This commit is contained in:
@ -714,15 +714,19 @@ AES_set_encrypt_key:
|
|||||||
#else
|
#else
|
||||||
BEQ.W L_AES_set_encrypt_key_start_192
|
BEQ.W L_AES_set_encrypt_key_start_192
|
||||||
#endif
|
#endif
|
||||||
LDRD r4, r5, [r0]
|
LDR r4, [r0]
|
||||||
LDRD r6, r7, [r0, #8]
|
LDR r5, [r0, #4]
|
||||||
|
LDR r6, [r0, #8]
|
||||||
|
LDR r7, [r0, #12]
|
||||||
REV r4, r4
|
REV r4, r4
|
||||||
REV r5, r5
|
REV r5, r5
|
||||||
REV r6, r6
|
REV r6, r6
|
||||||
REV r7, r7
|
REV r7, r7
|
||||||
STM r2!, {r4, r5, r6, r7}
|
STM r2!, {r4, r5, r6, r7}
|
||||||
LDRD r4, r5, [r0, #16]
|
LDR r4, [r0, #16]
|
||||||
LDRD r6, r7, [r0, #24]
|
LDR r5, [r0, #20]
|
||||||
|
LDR r6, [r0, #24]
|
||||||
|
LDR r7, [r0, #28]
|
||||||
REV r4, r4
|
REV r4, r4
|
||||||
REV r5, r5
|
REV r5, r5
|
||||||
REV r6, r6
|
REV r6, r6
|
||||||
@ -805,9 +809,12 @@ L_AES_set_encrypt_key_loop_256:
|
|||||||
B.N L_AES_set_encrypt_key_end
|
B.N L_AES_set_encrypt_key_end
|
||||||
#endif
|
#endif
|
||||||
L_AES_set_encrypt_key_start_192:
|
L_AES_set_encrypt_key_start_192:
|
||||||
LDRD r4, r5, [r0]
|
LDR r4, [r0]
|
||||||
LDRD r6, r7, [r0, #8]
|
LDR r5, [r0, #4]
|
||||||
LDRD r8, r9, [r0, #16]
|
LDR r6, [r0, #8]
|
||||||
|
LDR r7, [r0, #12]
|
||||||
|
LDR r8, [r0, #16]
|
||||||
|
LDR r9, [r0, #20]
|
||||||
REV r4, r4
|
REV r4, r4
|
||||||
REV r5, r5
|
REV r5, r5
|
||||||
REV r6, r6
|
REV r6, r6
|
||||||
@ -871,8 +878,10 @@ L_AES_set_encrypt_key_loop_192:
|
|||||||
B.N L_AES_set_encrypt_key_end
|
B.N L_AES_set_encrypt_key_end
|
||||||
#endif
|
#endif
|
||||||
L_AES_set_encrypt_key_start_128:
|
L_AES_set_encrypt_key_start_128:
|
||||||
LDRD r4, r5, [r0]
|
LDR r4, [r0]
|
||||||
LDRD r6, r7, [r0, #8]
|
LDR r5, [r0, #4]
|
||||||
|
LDR r6, [r0, #8]
|
||||||
|
LDR r7, [r0, #12]
|
||||||
REV r4, r4
|
REV r4, r4
|
||||||
REV r5, r5
|
REV r5, r5
|
||||||
REV r6, r6
|
REV r6, r6
|
||||||
@ -907,7 +916,7 @@ L_AES_set_encrypt_key_loop_128:
|
|||||||
#endif
|
#endif
|
||||||
L_AES_set_encrypt_key_end:
|
L_AES_set_encrypt_key_end:
|
||||||
POP {r4, r5, r6, r7, r8, r9, r10, pc}
|
POP {r4, r5, r6, r7, r8, r9, r10, pc}
|
||||||
/* Cycle Count = 331 */
|
/* Cycle Count = 340 */
|
||||||
.size AES_set_encrypt_key,.-AES_set_encrypt_key
|
.size AES_set_encrypt_key,.-AES_set_encrypt_key
|
||||||
.text
|
.text
|
||||||
.align 4
|
.align 4
|
||||||
|
@ -357,15 +357,19 @@ void AES_set_encrypt_key(const unsigned char* key, word32 len, unsigned char* ks
|
|||||||
#else
|
#else
|
||||||
"BEQ.W L_AES_set_encrypt_key_start_192\n\t"
|
"BEQ.W L_AES_set_encrypt_key_start_192\n\t"
|
||||||
#endif
|
#endif
|
||||||
"LDRD r4, r5, [%[key]]\n\t"
|
"LDR r4, [%[key]]\n\t"
|
||||||
"LDRD r6, r7, [%[key], #8]\n\t"
|
"LDR r5, [%[key], #4]\n\t"
|
||||||
|
"LDR r6, [%[key], #8]\n\t"
|
||||||
|
"LDR r7, [%[key], #12]\n\t"
|
||||||
"REV r4, r4\n\t"
|
"REV r4, r4\n\t"
|
||||||
"REV r5, r5\n\t"
|
"REV r5, r5\n\t"
|
||||||
"REV r6, r6\n\t"
|
"REV r6, r6\n\t"
|
||||||
"REV r7, r7\n\t"
|
"REV r7, r7\n\t"
|
||||||
"STM %[ks]!, {r4, r5, r6, r7}\n\t"
|
"STM %[ks]!, {r4, r5, r6, r7}\n\t"
|
||||||
"LDRD r4, r5, [%[key], #16]\n\t"
|
"LDR r4, [%[key], #16]\n\t"
|
||||||
"LDRD r6, r7, [%[key], #24]\n\t"
|
"LDR r5, [%[key], #20]\n\t"
|
||||||
|
"LDR r6, [%[key], #24]\n\t"
|
||||||
|
"LDR r7, [%[key], #28]\n\t"
|
||||||
"REV r4, r4\n\t"
|
"REV r4, r4\n\t"
|
||||||
"REV r5, r5\n\t"
|
"REV r5, r5\n\t"
|
||||||
"REV r6, r6\n\t"
|
"REV r6, r6\n\t"
|
||||||
@ -450,9 +454,12 @@ void AES_set_encrypt_key(const unsigned char* key, word32 len, unsigned char* ks
|
|||||||
#endif
|
#endif
|
||||||
"\n"
|
"\n"
|
||||||
"L_AES_set_encrypt_key_start_192:\n\t"
|
"L_AES_set_encrypt_key_start_192:\n\t"
|
||||||
"LDRD r4, r5, [%[key]]\n\t"
|
"LDR r4, [%[key]]\n\t"
|
||||||
"LDRD r6, r7, [%[key], #8]\n\t"
|
"LDR r5, [%[key], #4]\n\t"
|
||||||
"LDRD r8, r9, [%[key], #16]\n\t"
|
"LDR r6, [%[key], #8]\n\t"
|
||||||
|
"LDR r7, [%[key], #12]\n\t"
|
||||||
|
"LDR r8, [%[key], #16]\n\t"
|
||||||
|
"LDR r9, [%[key], #20]\n\t"
|
||||||
"REV r4, r4\n\t"
|
"REV r4, r4\n\t"
|
||||||
"REV r5, r5\n\t"
|
"REV r5, r5\n\t"
|
||||||
"REV r6, r6\n\t"
|
"REV r6, r6\n\t"
|
||||||
@ -518,8 +525,10 @@ void AES_set_encrypt_key(const unsigned char* key, word32 len, unsigned char* ks
|
|||||||
#endif
|
#endif
|
||||||
"\n"
|
"\n"
|
||||||
"L_AES_set_encrypt_key_start_128:\n\t"
|
"L_AES_set_encrypt_key_start_128:\n\t"
|
||||||
"LDRD r4, r5, [%[key]]\n\t"
|
"LDR r4, [%[key]]\n\t"
|
||||||
"LDRD r6, r7, [%[key], #8]\n\t"
|
"LDR r5, [%[key], #4]\n\t"
|
||||||
|
"LDR r6, [%[key], #8]\n\t"
|
||||||
|
"LDR r7, [%[key], #12]\n\t"
|
||||||
"REV r4, r4\n\t"
|
"REV r4, r4\n\t"
|
||||||
"REV r5, r5\n\t"
|
"REV r5, r5\n\t"
|
||||||
"REV r6, r6\n\t"
|
"REV r6, r6\n\t"
|
||||||
|
Reference in New Issue
Block a user