mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 02:37:28 +02:00
Thumb2 ASM fixes
Make a separate AES for IAR that has AES_encrypt_block and AES_decrypt_block inlined. Default code is relying on compiler to use specific registers and not modify others. Improve performance of small SP ASM code for RSA.
This commit is contained in:
@ -670,10 +670,10 @@ L_AES_invert_key_mix_loop:
|
||||
EOR r8, r8, r9, ROR #24
|
||||
STR r8, [r0], #4
|
||||
SUBS r11, r11, #0x1
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_invert_key_mix_loop
|
||||
#else
|
||||
BNE.N L_AES_invert_key_mix_loop
|
||||
BNE.W L_AES_invert_key_mix_loop
|
||||
#endif
|
||||
POP {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
/* Cycle Count = 165 */
|
||||
@ -703,16 +703,16 @@ AES_set_encrypt_key:
|
||||
LDR r10, L_AES_Thumb2_te
|
||||
ADR lr, L_AES_Thumb2_rcon
|
||||
CMP r1, #0x80
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_set_encrypt_key_start_128
|
||||
#else
|
||||
BEQ.N L_AES_set_encrypt_key_start_128
|
||||
BEQ.W L_AES_set_encrypt_key_start_128
|
||||
#endif
|
||||
CMP r1, #0xc0
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_set_encrypt_key_start_192
|
||||
#else
|
||||
BEQ.N L_AES_set_encrypt_key_start_192
|
||||
BEQ.W L_AES_set_encrypt_key_start_192
|
||||
#endif
|
||||
LDRD r4, r5, [r0]
|
||||
LDRD r6, r7, [r0, #8]
|
||||
@ -799,7 +799,11 @@ L_AES_set_encrypt_key_loop_256:
|
||||
ADD r2, r2, #0x10
|
||||
STM r2, {r4, r5, r6, r7}
|
||||
SUB r2, r2, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
B L_AES_set_encrypt_key_end
|
||||
#else
|
||||
B.N L_AES_set_encrypt_key_end
|
||||
#endif
|
||||
L_AES_set_encrypt_key_start_192:
|
||||
LDRD r4, r5, [r0]
|
||||
LDRD r6, r7, [r0, #8]
|
||||
@ -861,7 +865,11 @@ L_AES_set_encrypt_key_loop_192:
|
||||
EOR r6, r6, r5
|
||||
EOR r7, r7, r6
|
||||
STM r2, {r4, r5, r6, r7}
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
B L_AES_set_encrypt_key_end
|
||||
#else
|
||||
B.N L_AES_set_encrypt_key_end
|
||||
#endif
|
||||
L_AES_set_encrypt_key_start_128:
|
||||
LDRD r4, r5, [r0]
|
||||
LDRD r6, r7, [r0, #8]
|
||||
@ -1009,10 +1017,10 @@ L_AES_encrypt_block_nr:
|
||||
EOR r6, r6, r10
|
||||
EOR r7, r7, r11
|
||||
SUBS r1, r1, #0x1
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_encrypt_block_nr
|
||||
#else
|
||||
BNE.N L_AES_encrypt_block_nr
|
||||
BNE.W L_AES_encrypt_block_nr
|
||||
#endif
|
||||
UBFX r8, r5, #16, #8
|
||||
LSR r11, r4, #24
|
||||
@ -1137,16 +1145,16 @@ AES_ECB_encrypt:
|
||||
LDR r12, [sp, #36]
|
||||
PUSH {r3}
|
||||
CMP r12, #0xa
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_ECB_encrypt_start_block_128
|
||||
#else
|
||||
BEQ.N L_AES_ECB_encrypt_start_block_128
|
||||
BEQ.W L_AES_ECB_encrypt_start_block_128
|
||||
#endif
|
||||
CMP r12, #0xc
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_ECB_encrypt_start_block_192
|
||||
#else
|
||||
BEQ.N L_AES_ECB_encrypt_start_block_192
|
||||
BEQ.W L_AES_ECB_encrypt_start_block_192
|
||||
#endif
|
||||
L_AES_ECB_encrypt_loop_block_256:
|
||||
LDR r4, [lr]
|
||||
@ -1179,12 +1187,16 @@ L_AES_ECB_encrypt_loop_block_256:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_ECB_encrypt_loop_block_256
|
||||
#else
|
||||
BNE.N L_AES_ECB_encrypt_loop_block_256
|
||||
BNE.W L_AES_ECB_encrypt_loop_block_256
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
B L_AES_ECB_encrypt_end
|
||||
#else
|
||||
B.N L_AES_ECB_encrypt_end
|
||||
#endif
|
||||
L_AES_ECB_encrypt_start_block_192:
|
||||
L_AES_ECB_encrypt_loop_block_192:
|
||||
LDR r4, [lr]
|
||||
@ -1217,12 +1229,16 @@ L_AES_ECB_encrypt_loop_block_192:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_ECB_encrypt_loop_block_192
|
||||
#else
|
||||
BNE.N L_AES_ECB_encrypt_loop_block_192
|
||||
BNE.W L_AES_ECB_encrypt_loop_block_192
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
B L_AES_ECB_encrypt_end
|
||||
#else
|
||||
B.N L_AES_ECB_encrypt_end
|
||||
#endif
|
||||
L_AES_ECB_encrypt_start_block_128:
|
||||
L_AES_ECB_encrypt_loop_block_128:
|
||||
LDR r4, [lr]
|
||||
@ -1255,10 +1271,10 @@ L_AES_ECB_encrypt_loop_block_128:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_ECB_encrypt_loop_block_128
|
||||
#else
|
||||
BNE.N L_AES_ECB_encrypt_loop_block_128
|
||||
BNE.W L_AES_ECB_encrypt_loop_block_128
|
||||
#endif
|
||||
L_AES_ECB_encrypt_end:
|
||||
POP {r3}
|
||||
@ -1280,16 +1296,16 @@ AES_CBC_encrypt:
|
||||
LDM r9, {r4, r5, r6, r7}
|
||||
PUSH {r3, r9}
|
||||
CMP r8, #0xa
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_CBC_encrypt_start_block_128
|
||||
#else
|
||||
BEQ.N L_AES_CBC_encrypt_start_block_128
|
||||
BEQ.W L_AES_CBC_encrypt_start_block_128
|
||||
#endif
|
||||
CMP r8, #0xc
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_CBC_encrypt_start_block_192
|
||||
#else
|
||||
BEQ.N L_AES_CBC_encrypt_start_block_192
|
||||
BEQ.W L_AES_CBC_encrypt_start_block_192
|
||||
#endif
|
||||
L_AES_CBC_encrypt_loop_block_256:
|
||||
LDR r8, [lr]
|
||||
@ -1326,12 +1342,16 @@ L_AES_CBC_encrypt_loop_block_256:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_CBC_encrypt_loop_block_256
|
||||
#else
|
||||
BNE.N L_AES_CBC_encrypt_loop_block_256
|
||||
BNE.W L_AES_CBC_encrypt_loop_block_256
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
B L_AES_CBC_encrypt_end
|
||||
#else
|
||||
B.N L_AES_CBC_encrypt_end
|
||||
#endif
|
||||
L_AES_CBC_encrypt_start_block_192:
|
||||
L_AES_CBC_encrypt_loop_block_192:
|
||||
LDR r8, [lr]
|
||||
@ -1368,12 +1388,16 @@ L_AES_CBC_encrypt_loop_block_192:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_CBC_encrypt_loop_block_192
|
||||
#else
|
||||
BNE.N L_AES_CBC_encrypt_loop_block_192
|
||||
BNE.W L_AES_CBC_encrypt_loop_block_192
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
B L_AES_CBC_encrypt_end
|
||||
#else
|
||||
B.N L_AES_CBC_encrypt_end
|
||||
#endif
|
||||
L_AES_CBC_encrypt_start_block_128:
|
||||
L_AES_CBC_encrypt_loop_block_128:
|
||||
LDR r8, [lr]
|
||||
@ -1410,10 +1434,10 @@ L_AES_CBC_encrypt_loop_block_128:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_CBC_encrypt_loop_block_128
|
||||
#else
|
||||
BNE.N L_AES_CBC_encrypt_loop_block_128
|
||||
BNE.W L_AES_CBC_encrypt_loop_block_128
|
||||
#endif
|
||||
L_AES_CBC_encrypt_end:
|
||||
POP {r3, r9}
|
||||
@ -1441,16 +1465,16 @@ AES_CTR_encrypt:
|
||||
STM r8, {r4, r5, r6, r7}
|
||||
PUSH {r3, r8}
|
||||
CMP r12, #0xa
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_CTR_encrypt_start_block_128
|
||||
#else
|
||||
BEQ.N L_AES_CTR_encrypt_start_block_128
|
||||
BEQ.W L_AES_CTR_encrypt_start_block_128
|
||||
#endif
|
||||
CMP r12, #0xc
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_CTR_encrypt_start_block_192
|
||||
#else
|
||||
BEQ.N L_AES_CTR_encrypt_start_block_192
|
||||
BEQ.W L_AES_CTR_encrypt_start_block_192
|
||||
#endif
|
||||
L_AES_CTR_encrypt_loop_block_256:
|
||||
PUSH {r1, r2, lr}
|
||||
@ -1491,12 +1515,16 @@ L_AES_CTR_encrypt_loop_block_256:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_CTR_encrypt_loop_block_256
|
||||
#else
|
||||
BNE.N L_AES_CTR_encrypt_loop_block_256
|
||||
BNE.W L_AES_CTR_encrypt_loop_block_256
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
B L_AES_CTR_encrypt_end
|
||||
#else
|
||||
B.W L_AES_CTR_encrypt_end
|
||||
#endif
|
||||
L_AES_CTR_encrypt_start_block_192:
|
||||
L_AES_CTR_encrypt_loop_block_192:
|
||||
PUSH {r1, r2, lr}
|
||||
@ -1537,12 +1565,16 @@ L_AES_CTR_encrypt_loop_block_192:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_CTR_encrypt_loop_block_192
|
||||
#else
|
||||
BNE.N L_AES_CTR_encrypt_loop_block_192
|
||||
BNE.W L_AES_CTR_encrypt_loop_block_192
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
B L_AES_CTR_encrypt_end
|
||||
#else
|
||||
B.W L_AES_CTR_encrypt_end
|
||||
#endif
|
||||
L_AES_CTR_encrypt_start_block_128:
|
||||
L_AES_CTR_encrypt_loop_block_128:
|
||||
PUSH {r1, r2, lr}
|
||||
@ -1583,10 +1615,10 @@ L_AES_CTR_encrypt_loop_block_128:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_CTR_encrypt_loop_block_128
|
||||
#else
|
||||
BNE.N L_AES_CTR_encrypt_loop_block_128
|
||||
BNE.W L_AES_CTR_encrypt_loop_block_128
|
||||
#endif
|
||||
L_AES_CTR_encrypt_end:
|
||||
POP {r3, r8}
|
||||
@ -1709,10 +1741,10 @@ L_AES_decrypt_block_nr:
|
||||
EOR r6, r6, r10
|
||||
EOR r7, r7, r11
|
||||
SUBS r1, r1, #0x1
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_decrypt_block_nr
|
||||
#else
|
||||
BNE.N L_AES_decrypt_block_nr
|
||||
BNE.W L_AES_decrypt_block_nr
|
||||
#endif
|
||||
UBFX r8, r7, #16, #8
|
||||
LSR r11, r4, #24
|
||||
@ -2097,16 +2129,16 @@ AES_ECB_decrypt:
|
||||
MOV r12, r2
|
||||
ADR r2, L_AES_Thumb2_td4
|
||||
CMP r8, #0xa
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_ECB_decrypt_start_block_128
|
||||
#else
|
||||
BEQ.N L_AES_ECB_decrypt_start_block_128
|
||||
BEQ.W L_AES_ECB_decrypt_start_block_128
|
||||
#endif
|
||||
CMP r8, #0xc
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_ECB_decrypt_start_block_192
|
||||
#else
|
||||
BEQ.N L_AES_ECB_decrypt_start_block_192
|
||||
BEQ.W L_AES_ECB_decrypt_start_block_192
|
||||
#endif
|
||||
L_AES_ECB_decrypt_loop_block_256:
|
||||
LDR r4, [lr]
|
||||
@ -2138,12 +2170,16 @@ L_AES_ECB_decrypt_loop_block_256:
|
||||
SUBS r12, r12, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_ECB_decrypt_loop_block_256
|
||||
#else
|
||||
BNE.N L_AES_ECB_decrypt_loop_block_256
|
||||
BNE.W L_AES_ECB_decrypt_loop_block_256
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
B L_AES_ECB_decrypt_end
|
||||
#else
|
||||
B.N L_AES_ECB_decrypt_end
|
||||
#endif
|
||||
L_AES_ECB_decrypt_start_block_192:
|
||||
L_AES_ECB_decrypt_loop_block_192:
|
||||
LDR r4, [lr]
|
||||
@ -2175,12 +2211,16 @@ L_AES_ECB_decrypt_loop_block_192:
|
||||
SUBS r12, r12, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_ECB_decrypt_loop_block_192
|
||||
#else
|
||||
BNE.N L_AES_ECB_decrypt_loop_block_192
|
||||
BNE.W L_AES_ECB_decrypt_loop_block_192
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
B L_AES_ECB_decrypt_end
|
||||
#else
|
||||
B.N L_AES_ECB_decrypt_end
|
||||
#endif
|
||||
L_AES_ECB_decrypt_start_block_128:
|
||||
L_AES_ECB_decrypt_loop_block_128:
|
||||
LDR r4, [lr]
|
||||
@ -2212,10 +2252,10 @@ L_AES_ECB_decrypt_loop_block_128:
|
||||
SUBS r12, r12, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_ECB_decrypt_loop_block_128
|
||||
#else
|
||||
BNE.N L_AES_ECB_decrypt_loop_block_128
|
||||
BNE.W L_AES_ECB_decrypt_loop_block_128
|
||||
#endif
|
||||
L_AES_ECB_decrypt_end:
|
||||
POP {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
@ -2237,16 +2277,16 @@ AES_CBC_decrypt:
|
||||
ADR r2, L_AES_Thumb2_td4
|
||||
PUSH {r3, r4}
|
||||
CMP r8, #0xa
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_CBC_decrypt_loop_block_128
|
||||
#else
|
||||
BEQ.N L_AES_CBC_decrypt_loop_block_128
|
||||
BEQ.W L_AES_CBC_decrypt_loop_block_128
|
||||
#endif
|
||||
CMP r8, #0xc
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_CBC_decrypt_loop_block_192
|
||||
#else
|
||||
BEQ.N L_AES_CBC_decrypt_loop_block_192
|
||||
BEQ.W L_AES_CBC_decrypt_loop_block_192
|
||||
#endif
|
||||
L_AES_CBC_decrypt_loop_block_256:
|
||||
PUSH {r1, r12, lr}
|
||||
@ -2288,10 +2328,10 @@ L_AES_CBC_decrypt_loop_block_256:
|
||||
SUBS r12, r12, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_CBC_decrypt_end_odd
|
||||
#else
|
||||
BEQ.N L_AES_CBC_decrypt_end_odd
|
||||
BEQ.W L_AES_CBC_decrypt_end_odd
|
||||
#endif
|
||||
PUSH {r1, r12, lr}
|
||||
LDR r4, [lr]
|
||||
@ -2333,12 +2373,16 @@ L_AES_CBC_decrypt_loop_block_256:
|
||||
SUBS r12, r12, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_CBC_decrypt_loop_block_256
|
||||
#else
|
||||
BNE.N L_AES_CBC_decrypt_loop_block_256
|
||||
BNE.W L_AES_CBC_decrypt_loop_block_256
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
B L_AES_CBC_decrypt_end
|
||||
#else
|
||||
B.W L_AES_CBC_decrypt_end
|
||||
#endif
|
||||
L_AES_CBC_decrypt_loop_block_192:
|
||||
PUSH {r1, r12, lr}
|
||||
LDR r4, [lr]
|
||||
@ -2379,10 +2423,10 @@ L_AES_CBC_decrypt_loop_block_192:
|
||||
SUBS r12, r12, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_CBC_decrypt_end_odd
|
||||
#else
|
||||
BEQ.N L_AES_CBC_decrypt_end_odd
|
||||
BEQ.W L_AES_CBC_decrypt_end_odd
|
||||
#endif
|
||||
PUSH {r1, r12, lr}
|
||||
LDR r4, [lr]
|
||||
@ -2424,12 +2468,16 @@ L_AES_CBC_decrypt_loop_block_192:
|
||||
SUBS r12, r12, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_CBC_decrypt_loop_block_192
|
||||
#else
|
||||
BNE.N L_AES_CBC_decrypt_loop_block_192
|
||||
BNE.W L_AES_CBC_decrypt_loop_block_192
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
B L_AES_CBC_decrypt_end
|
||||
#else
|
||||
B.W L_AES_CBC_decrypt_end
|
||||
#endif
|
||||
L_AES_CBC_decrypt_loop_block_128:
|
||||
PUSH {r1, r12, lr}
|
||||
LDR r4, [lr]
|
||||
@ -2470,10 +2518,10 @@ L_AES_CBC_decrypt_loop_block_128:
|
||||
SUBS r12, r12, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_CBC_decrypt_end_odd
|
||||
#else
|
||||
BEQ.N L_AES_CBC_decrypt_end_odd
|
||||
BEQ.W L_AES_CBC_decrypt_end_odd
|
||||
#endif
|
||||
PUSH {r1, r12, lr}
|
||||
LDR r4, [lr]
|
||||
@ -2515,12 +2563,16 @@ L_AES_CBC_decrypt_loop_block_128:
|
||||
SUBS r12, r12, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_CBC_decrypt_loop_block_128
|
||||
#else
|
||||
BNE.N L_AES_CBC_decrypt_loop_block_128
|
||||
BNE.W L_AES_CBC_decrypt_loop_block_128
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
B L_AES_CBC_decrypt_end
|
||||
#else
|
||||
B.N L_AES_CBC_decrypt_end
|
||||
#endif
|
||||
L_AES_CBC_decrypt_end_odd:
|
||||
LDR r4, [sp, #4]
|
||||
LDRD r8, r9, [r4, #16]
|
||||
@ -3109,10 +3161,10 @@ L_GCM_gmult_len_start_block:
|
||||
POP {r3}
|
||||
SUBS r3, r3, #0x10
|
||||
ADD r2, r2, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_GCM_gmult_len_start_block
|
||||
#else
|
||||
BNE.N L_GCM_gmult_len_start_block
|
||||
BNE.W L_GCM_gmult_len_start_block
|
||||
#endif
|
||||
POP {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
/* Cycle Count = 742 */
|
||||
@ -3141,16 +3193,16 @@ AES_GCM_encrypt:
|
||||
STM r8, {r4, r5, r6, r7}
|
||||
PUSH {r3, r8}
|
||||
CMP r12, #0xa
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_GCM_encrypt_start_block_128
|
||||
#else
|
||||
BEQ.N L_AES_GCM_encrypt_start_block_128
|
||||
BEQ.W L_AES_GCM_encrypt_start_block_128
|
||||
#endif
|
||||
CMP r12, #0xc
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BEQ L_AES_GCM_encrypt_start_block_192
|
||||
#else
|
||||
BEQ.N L_AES_GCM_encrypt_start_block_192
|
||||
BEQ.W L_AES_GCM_encrypt_start_block_192
|
||||
#endif
|
||||
L_AES_GCM_encrypt_loop_block_256:
|
||||
PUSH {r1, r2, lr}
|
||||
@ -3188,12 +3240,16 @@ L_AES_GCM_encrypt_loop_block_256:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_GCM_encrypt_loop_block_256
|
||||
#else
|
||||
BNE.N L_AES_GCM_encrypt_loop_block_256
|
||||
BNE.W L_AES_GCM_encrypt_loop_block_256
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
B L_AES_GCM_encrypt_end
|
||||
#else
|
||||
B.W L_AES_GCM_encrypt_end
|
||||
#endif
|
||||
L_AES_GCM_encrypt_start_block_192:
|
||||
L_AES_GCM_encrypt_loop_block_192:
|
||||
PUSH {r1, r2, lr}
|
||||
@ -3231,12 +3287,16 @@ L_AES_GCM_encrypt_loop_block_192:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_GCM_encrypt_loop_block_192
|
||||
#else
|
||||
BNE.N L_AES_GCM_encrypt_loop_block_192
|
||||
BNE.W L_AES_GCM_encrypt_loop_block_192
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
B L_AES_GCM_encrypt_end
|
||||
#else
|
||||
B.W L_AES_GCM_encrypt_end
|
||||
#endif
|
||||
L_AES_GCM_encrypt_start_block_128:
|
||||
L_AES_GCM_encrypt_loop_block_128:
|
||||
PUSH {r1, r2, lr}
|
||||
@ -3274,10 +3334,10 @@ L_AES_GCM_encrypt_loop_block_128:
|
||||
SUBS r2, r2, #0x10
|
||||
ADD lr, lr, #0x10
|
||||
ADD r1, r1, #0x10
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_AES_GCM_encrypt_loop_block_128
|
||||
#else
|
||||
BNE.N L_AES_GCM_encrypt_loop_block_128
|
||||
BNE.W L_AES_GCM_encrypt_loop_block_128
|
||||
#endif
|
||||
L_AES_GCM_encrypt_end:
|
||||
POP {r3, r8}
|
||||
|
@ -301,18 +301,19 @@ void AES_invert_key(unsigned char* ks, word32 rounds)
|
||||
"EOR r8, r8, r9, ROR #24\n\t"
|
||||
"STR r8, [%[ks]], #4\n\t"
|
||||
"SUBS r11, r11, #0x1\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_invert_key_mix_loop\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_invert_key_mix_loop\n\t"
|
||||
"BNE.W L_AES_invert_key_mix_loop\n\t"
|
||||
#endif
|
||||
: [ks] "+r" (ks), [rounds] "+r" (rounds),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_AES_Thumb2_te] "+r" (L_AES_Thumb2_te_c), [L_AES_Thumb2_td] "+r" (L_AES_Thumb2_td_c)
|
||||
#else
|
||||
[L_AES_Thumb2_te] "r" (L_AES_Thumb2_te), [L_AES_Thumb2_td] "r" (L_AES_Thumb2_td)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [ks] "+r" (ks), [rounds] "+r" (rounds),
|
||||
[L_AES_Thumb2_te] "+r" (L_AES_Thumb2_te_c), [L_AES_Thumb2_td] "+r" (L_AES_Thumb2_td_c)
|
||||
:
|
||||
#else
|
||||
: [ks] "+r" (ks), [rounds] "+r" (rounds)
|
||||
: [L_AES_Thumb2_te] "r" (L_AES_Thumb2_te), [L_AES_Thumb2_td] "r" (L_AES_Thumb2_td)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r12", "lr", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@ -321,7 +322,7 @@ void AES_invert_key(unsigned char* ks, word32 rounds)
|
||||
static const uint32_t L_AES_Thumb2_rcon[] = {
|
||||
0x01000000, 0x02000000, 0x04000000, 0x08000000,
|
||||
0x10000000, 0x20000000, 0x40000000, 0x80000000,
|
||||
0x1b000000, 0x36000000,
|
||||
0x1b000000, 0x36000000
|
||||
};
|
||||
|
||||
void AES_set_encrypt_key(const unsigned char* key, word32 len,
|
||||
@ -344,16 +345,16 @@ void AES_set_encrypt_key(const unsigned char* key, word32 len, unsigned char* ks
|
||||
"MOV r10, %[L_AES_Thumb2_te]\n\t"
|
||||
"MOV lr, %[L_AES_Thumb2_rcon]\n\t"
|
||||
"CMP %[len], #0x80\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_set_encrypt_key_start_128\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_set_encrypt_key_start_128\n\t"
|
||||
"BEQ.W L_AES_set_encrypt_key_start_128\n\t"
|
||||
#endif
|
||||
"CMP %[len], #0xc0\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_set_encrypt_key_start_192\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_set_encrypt_key_start_192\n\t"
|
||||
"BEQ.W L_AES_set_encrypt_key_start_192\n\t"
|
||||
#endif
|
||||
"LDRD r4, r5, [%[key]]\n\t"
|
||||
"LDRD r6, r7, [%[key], #8]\n\t"
|
||||
@ -441,7 +442,11 @@ void AES_set_encrypt_key(const unsigned char* key, word32 len, unsigned char* ks
|
||||
"ADD %[ks], %[ks], #0x10\n\t"
|
||||
"STM %[ks], {r4, r5, r6, r7}\n\t"
|
||||
"SUB %[ks], %[ks], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
"B L_AES_set_encrypt_key_end\n\t"
|
||||
#else
|
||||
"B.N L_AES_set_encrypt_key_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_set_encrypt_key_start_192:\n\t"
|
||||
"LDRD r4, r5, [%[key]]\n\t"
|
||||
@ -505,7 +510,11 @@ void AES_set_encrypt_key(const unsigned char* key, word32 len, unsigned char* ks
|
||||
"EOR r6, r6, r5\n\t"
|
||||
"EOR r7, r7, r6\n\t"
|
||||
"STM %[ks], {r4, r5, r6, r7}\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
"B L_AES_set_encrypt_key_end\n\t"
|
||||
#else
|
||||
"B.N L_AES_set_encrypt_key_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_set_encrypt_key_start_128:\n\t"
|
||||
"LDRD r4, r5, [%[key]]\n\t"
|
||||
@ -545,13 +554,14 @@ void AES_set_encrypt_key(const unsigned char* key, word32 len, unsigned char* ks
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_set_encrypt_key_end:\n\t"
|
||||
: [key] "+r" (key), [len] "+r" (len), [ks] "+r" (ks),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_AES_Thumb2_te] "+r" (L_AES_Thumb2_te_c), [L_AES_Thumb2_rcon] "+r" (L_AES_Thumb2_rcon_c)
|
||||
#else
|
||||
[L_AES_Thumb2_te] "r" (L_AES_Thumb2_te), [L_AES_Thumb2_rcon] "r" (L_AES_Thumb2_rcon)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [key] "+r" (key), [len] "+r" (len), [ks] "+r" (ks),
|
||||
[L_AES_Thumb2_te] "+r" (L_AES_Thumb2_te_c), [L_AES_Thumb2_rcon] "+r" (L_AES_Thumb2_rcon_c)
|
||||
:
|
||||
#else
|
||||
: [key] "+r" (key), [len] "+r" (len), [ks] "+r" (ks)
|
||||
: [L_AES_Thumb2_te] "r" (L_AES_Thumb2_te), [L_AES_Thumb2_rcon] "r" (L_AES_Thumb2_rcon)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r12", "lr", "r5", "r6", "r7", "r8", "r9", "r10"
|
||||
);
|
||||
}
|
||||
@ -674,10 +684,10 @@ void AES_encrypt_block(const uint32_t* te, int nr, int len, const uint32_t* ks)
|
||||
"EOR r6, r6, r10\n\t"
|
||||
"EOR r7, r7, r11\n\t"
|
||||
"SUBS %[nr], %[nr], #0x1\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_encrypt_block_nr\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_encrypt_block_nr\n\t"
|
||||
"BNE.W L_AES_encrypt_block_nr\n\t"
|
||||
#endif
|
||||
"UBFX r8, r5, #16, #8\n\t"
|
||||
"LSR r11, r4, #24\n\t"
|
||||
@ -809,19 +819,23 @@ void AES_ECB_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
__asm__ __volatile__ (
|
||||
"MOV lr, %[in]\n\t"
|
||||
"MOV r0, %[L_AES_Thumb2_te_ecb]\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r12, r4\n\t"
|
||||
#else
|
||||
"LDR r12, [sp, #36]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
"PUSH {%[ks]}\n\t"
|
||||
"CMP r12, #0xa\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_ECB_encrypt_start_block_128\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_ECB_encrypt_start_block_128\n\t"
|
||||
"BEQ.W L_AES_ECB_encrypt_start_block_128\n\t"
|
||||
#endif
|
||||
"CMP r12, #0xc\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_ECB_encrypt_start_block_192\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_ECB_encrypt_start_block_192\n\t"
|
||||
"BEQ.W L_AES_ECB_encrypt_start_block_192\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_ECB_encrypt_loop_block_256:\n\t"
|
||||
@ -855,12 +869,16 @@ void AES_ECB_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_ECB_encrypt_loop_block_256\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_ECB_encrypt_loop_block_256\n\t"
|
||||
"BNE.W L_AES_ECB_encrypt_loop_block_256\n\t"
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
"B L_AES_ECB_encrypt_end\n\t"
|
||||
#else
|
||||
"B.N L_AES_ECB_encrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_ECB_encrypt_start_block_192:\n\t"
|
||||
"\n"
|
||||
@ -895,12 +913,16 @@ void AES_ECB_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_ECB_encrypt_loop_block_192\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_ECB_encrypt_loop_block_192\n\t"
|
||||
"BNE.W L_AES_ECB_encrypt_loop_block_192\n\t"
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
"B L_AES_ECB_encrypt_end\n\t"
|
||||
#else
|
||||
"B.N L_AES_ECB_encrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_ECB_encrypt_start_block_128:\n\t"
|
||||
"\n"
|
||||
@ -935,21 +957,22 @@ void AES_ECB_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_ECB_encrypt_loop_block_128\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_ECB_encrypt_loop_block_128\n\t"
|
||||
"BNE.W L_AES_ECB_encrypt_loop_block_128\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_ECB_encrypt_end:\n\t"
|
||||
"POP {%[ks]}\n\t"
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_AES_Thumb2_te_ecb] "+r" (L_AES_Thumb2_te_ecb_c)
|
||||
#else
|
||||
[L_AES_Thumb2_te_ecb] "r" (L_AES_Thumb2_te_ecb)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr),
|
||||
[L_AES_Thumb2_te_ecb] "+r" (L_AES_Thumb2_te_ecb_c)
|
||||
:
|
||||
#else
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr)
|
||||
: [L_AES_Thumb2_te_ecb] "r" (L_AES_Thumb2_te_ecb)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r12", "lr", "r6", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@ -975,23 +998,31 @@ void AES_CBC_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r8, r4\n\t"
|
||||
#else
|
||||
"LDR r8, [sp, #36]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r9, r5\n\t"
|
||||
#else
|
||||
"LDR r9, [sp, #40]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
"MOV lr, %[in]\n\t"
|
||||
"MOV r0, %[L_AES_Thumb2_te_ecb]\n\t"
|
||||
"LDM r9, {r4, r5, r6, r7}\n\t"
|
||||
"PUSH {%[ks], r9}\n\t"
|
||||
"CMP r8, #0xa\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_CBC_encrypt_start_block_128\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_CBC_encrypt_start_block_128\n\t"
|
||||
"BEQ.W L_AES_CBC_encrypt_start_block_128\n\t"
|
||||
#endif
|
||||
"CMP r8, #0xc\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_CBC_encrypt_start_block_192\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_CBC_encrypt_start_block_192\n\t"
|
||||
"BEQ.W L_AES_CBC_encrypt_start_block_192\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CBC_encrypt_loop_block_256:\n\t"
|
||||
@ -1029,12 +1060,16 @@ void AES_CBC_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_CBC_encrypt_loop_block_256\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_CBC_encrypt_loop_block_256\n\t"
|
||||
"BNE.W L_AES_CBC_encrypt_loop_block_256\n\t"
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
"B L_AES_CBC_encrypt_end\n\t"
|
||||
#else
|
||||
"B.N L_AES_CBC_encrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CBC_encrypt_start_block_192:\n\t"
|
||||
"\n"
|
||||
@ -1073,12 +1108,16 @@ void AES_CBC_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_CBC_encrypt_loop_block_192\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_CBC_encrypt_loop_block_192\n\t"
|
||||
"BNE.W L_AES_CBC_encrypt_loop_block_192\n\t"
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
"B L_AES_CBC_encrypt_end\n\t"
|
||||
#else
|
||||
"B.N L_AES_CBC_encrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CBC_encrypt_start_block_128:\n\t"
|
||||
"\n"
|
||||
@ -1117,22 +1156,23 @@ void AES_CBC_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_CBC_encrypt_loop_block_128\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_CBC_encrypt_loop_block_128\n\t"
|
||||
"BNE.W L_AES_CBC_encrypt_loop_block_128\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CBC_encrypt_end:\n\t"
|
||||
"POP {%[ks], r9}\n\t"
|
||||
"STM r9, {r4, r5, r6, r7}\n\t"
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [iv] "+r" (iv),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_AES_Thumb2_te_ecb] "+r" (L_AES_Thumb2_te_ecb_c)
|
||||
#else
|
||||
[L_AES_Thumb2_te_ecb] "r" (L_AES_Thumb2_te_ecb)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [iv] "+r" (iv),
|
||||
[L_AES_Thumb2_te_ecb] "+r" (L_AES_Thumb2_te_ecb_c)
|
||||
:
|
||||
#else
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [iv] "+r" (iv)
|
||||
: [L_AES_Thumb2_te_ecb] "r" (L_AES_Thumb2_te_ecb)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r12", "lr", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@ -1158,8 +1198,16 @@ void AES_CTR_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r12, r4\n\t"
|
||||
#else
|
||||
"LDR r12, [sp, #36]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r8, r5\n\t"
|
||||
#else
|
||||
"LDR r8, [sp, #40]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
"MOV lr, %[in]\n\t"
|
||||
"MOV r0, %[L_AES_Thumb2_te_ecb]\n\t"
|
||||
"LDM r8, {r4, r5, r6, r7}\n\t"
|
||||
@ -1170,16 +1218,16 @@ void AES_CTR_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"STM r8, {r4, r5, r6, r7}\n\t"
|
||||
"PUSH {%[ks], r8}\n\t"
|
||||
"CMP r12, #0xa\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_CTR_encrypt_start_block_128\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_CTR_encrypt_start_block_128\n\t"
|
||||
"BEQ.W L_AES_CTR_encrypt_start_block_128\n\t"
|
||||
#endif
|
||||
"CMP r12, #0xc\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_CTR_encrypt_start_block_192\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_CTR_encrypt_start_block_192\n\t"
|
||||
"BEQ.W L_AES_CTR_encrypt_start_block_192\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CTR_encrypt_loop_block_256:\n\t"
|
||||
@ -1221,12 +1269,16 @@ void AES_CTR_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_CTR_encrypt_loop_block_256\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_CTR_encrypt_loop_block_256\n\t"
|
||||
"BNE.W L_AES_CTR_encrypt_loop_block_256\n\t"
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
"B L_AES_CTR_encrypt_end\n\t"
|
||||
#else
|
||||
"B.W L_AES_CTR_encrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CTR_encrypt_start_block_192:\n\t"
|
||||
"\n"
|
||||
@ -1269,12 +1321,16 @@ void AES_CTR_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_CTR_encrypt_loop_block_192\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_CTR_encrypt_loop_block_192\n\t"
|
||||
"BNE.W L_AES_CTR_encrypt_loop_block_192\n\t"
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
"B L_AES_CTR_encrypt_end\n\t"
|
||||
#else
|
||||
"B.W L_AES_CTR_encrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CTR_encrypt_start_block_128:\n\t"
|
||||
"\n"
|
||||
@ -1317,10 +1373,10 @@ void AES_CTR_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_CTR_encrypt_loop_block_128\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_CTR_encrypt_loop_block_128\n\t"
|
||||
"BNE.W L_AES_CTR_encrypt_loop_block_128\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CTR_encrypt_end:\n\t"
|
||||
@ -1330,13 +1386,14 @@ void AES_CTR_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"REV r6, r6\n\t"
|
||||
"REV r7, r7\n\t"
|
||||
"STM r8, {r4, r5, r6, r7}\n\t"
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [ctr] "+r" (ctr),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_AES_Thumb2_te_ecb] "+r" (L_AES_Thumb2_te_ecb_c)
|
||||
#else
|
||||
[L_AES_Thumb2_te_ecb] "r" (L_AES_Thumb2_te_ecb)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [ctr] "+r" (ctr),
|
||||
[L_AES_Thumb2_te_ecb] "+r" (L_AES_Thumb2_te_ecb_c)
|
||||
:
|
||||
#else
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [ctr] "+r" (ctr)
|
||||
: [L_AES_Thumb2_te_ecb] "r" (L_AES_Thumb2_te_ecb)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r12", "lr", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@ -1461,10 +1518,10 @@ void AES_decrypt_block(const uint32_t* td, int nr, const uint8_t* td4)
|
||||
"EOR r6, r6, r10\n\t"
|
||||
"EOR r7, r7, r11\n\t"
|
||||
"SUBS %[nr], %[nr], #0x1\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_decrypt_block_nr\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_decrypt_block_nr\n\t"
|
||||
"BNE.W L_AES_decrypt_block_nr\n\t"
|
||||
#endif
|
||||
"UBFX r8, r7, #16, #8\n\t"
|
||||
"LSR r11, r4, #24\n\t"
|
||||
@ -1628,22 +1685,26 @@ void AES_ECB_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r8, r4\n\t"
|
||||
#else
|
||||
"LDR r8, [sp, #36]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
"MOV lr, %[in]\n\t"
|
||||
"MOV r0, %[L_AES_Thumb2_td_ecb]\n\t"
|
||||
"MOV r12, %[len]\n\t"
|
||||
"MOV r2, %[L_AES_Thumb2_td4]\n\t"
|
||||
"CMP r8, #0xa\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_ECB_decrypt_start_block_128\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_ECB_decrypt_start_block_128\n\t"
|
||||
"BEQ.W L_AES_ECB_decrypt_start_block_128\n\t"
|
||||
#endif
|
||||
"CMP r8, #0xc\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_ECB_decrypt_start_block_192\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_ECB_decrypt_start_block_192\n\t"
|
||||
"BEQ.W L_AES_ECB_decrypt_start_block_192\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_ECB_decrypt_loop_block_256:\n\t"
|
||||
@ -1676,12 +1737,16 @@ void AES_ECB_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS r12, r12, #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_ECB_decrypt_loop_block_256\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_ECB_decrypt_loop_block_256\n\t"
|
||||
"BNE.W L_AES_ECB_decrypt_loop_block_256\n\t"
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
"B L_AES_ECB_decrypt_end\n\t"
|
||||
#else
|
||||
"B.N L_AES_ECB_decrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_ECB_decrypt_start_block_192:\n\t"
|
||||
"\n"
|
||||
@ -1715,12 +1780,16 @@ void AES_ECB_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS r12, r12, #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_ECB_decrypt_loop_block_192\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_ECB_decrypt_loop_block_192\n\t"
|
||||
"BNE.W L_AES_ECB_decrypt_loop_block_192\n\t"
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
"B L_AES_ECB_decrypt_end\n\t"
|
||||
#else
|
||||
"B.N L_AES_ECB_decrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_ECB_decrypt_start_block_128:\n\t"
|
||||
"\n"
|
||||
@ -1754,20 +1823,21 @@ void AES_ECB_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS r12, r12, #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_ECB_decrypt_loop_block_128\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_ECB_decrypt_loop_block_128\n\t"
|
||||
"BNE.W L_AES_ECB_decrypt_loop_block_128\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_ECB_decrypt_end:\n\t"
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_AES_Thumb2_td_ecb] "+r" (L_AES_Thumb2_td_ecb_c), [L_AES_Thumb2_td4] "+r" (L_AES_Thumb2_td4_c)
|
||||
#else
|
||||
[L_AES_Thumb2_td_ecb] "r" (L_AES_Thumb2_td_ecb), [L_AES_Thumb2_td4] "r" (L_AES_Thumb2_td4)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr),
|
||||
[L_AES_Thumb2_td_ecb] "+r" (L_AES_Thumb2_td_ecb_c), [L_AES_Thumb2_td4] "+r" (L_AES_Thumb2_td4_c)
|
||||
:
|
||||
#else
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr)
|
||||
: [L_AES_Thumb2_td_ecb] "r" (L_AES_Thumb2_td_ecb), [L_AES_Thumb2_td4] "r" (L_AES_Thumb2_td4)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r12", "lr", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@ -1794,24 +1864,32 @@ void AES_CBC_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r8, r4\n\t"
|
||||
#else
|
||||
"LDR r8, [sp, #36]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r4, r5\n\t"
|
||||
#else
|
||||
"LDR r4, [sp, #40]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
"MOV lr, %[in]\n\t"
|
||||
"MOV r0, %[L_AES_Thumb2_td_ecb]\n\t"
|
||||
"MOV r12, %[len]\n\t"
|
||||
"MOV r2, %[L_AES_Thumb2_td4]\n\t"
|
||||
"PUSH {%[ks], r4}\n\t"
|
||||
"CMP r8, #0xa\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_CBC_decrypt_loop_block_128\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_CBC_decrypt_loop_block_128\n\t"
|
||||
"BEQ.W L_AES_CBC_decrypt_loop_block_128\n\t"
|
||||
#endif
|
||||
"CMP r8, #0xc\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_CBC_decrypt_loop_block_192\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_CBC_decrypt_loop_block_192\n\t"
|
||||
"BEQ.W L_AES_CBC_decrypt_loop_block_192\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CBC_decrypt_loop_block_256:\n\t"
|
||||
@ -1854,10 +1932,10 @@ void AES_CBC_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS r12, r12, #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_CBC_decrypt_end_odd\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_CBC_decrypt_end_odd\n\t"
|
||||
"BEQ.W L_AES_CBC_decrypt_end_odd\n\t"
|
||||
#endif
|
||||
"PUSH {r1, r12, lr}\n\t"
|
||||
"LDR r4, [lr]\n\t"
|
||||
@ -1899,12 +1977,16 @@ void AES_CBC_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS r12, r12, #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_CBC_decrypt_loop_block_256\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_CBC_decrypt_loop_block_256\n\t"
|
||||
"BNE.W L_AES_CBC_decrypt_loop_block_256\n\t"
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
"B L_AES_CBC_decrypt_end\n\t"
|
||||
#else
|
||||
"B.W L_AES_CBC_decrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CBC_decrypt_loop_block_192:\n\t"
|
||||
"PUSH {r1, r12, lr}\n\t"
|
||||
@ -1946,10 +2028,10 @@ void AES_CBC_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS r12, r12, #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_CBC_decrypt_end_odd\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_CBC_decrypt_end_odd\n\t"
|
||||
"BEQ.W L_AES_CBC_decrypt_end_odd\n\t"
|
||||
#endif
|
||||
"PUSH {r1, r12, lr}\n\t"
|
||||
"LDR r4, [lr]\n\t"
|
||||
@ -1991,12 +2073,16 @@ void AES_CBC_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS r12, r12, #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_CBC_decrypt_loop_block_192\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_CBC_decrypt_loop_block_192\n\t"
|
||||
"BNE.W L_AES_CBC_decrypt_loop_block_192\n\t"
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
"B L_AES_CBC_decrypt_end\n\t"
|
||||
#else
|
||||
"B.W L_AES_CBC_decrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CBC_decrypt_loop_block_128:\n\t"
|
||||
"PUSH {r1, r12, lr}\n\t"
|
||||
@ -2038,10 +2124,10 @@ void AES_CBC_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS r12, r12, #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_CBC_decrypt_end_odd\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_CBC_decrypt_end_odd\n\t"
|
||||
"BEQ.W L_AES_CBC_decrypt_end_odd\n\t"
|
||||
#endif
|
||||
"PUSH {r1, r12, lr}\n\t"
|
||||
"LDR r4, [lr]\n\t"
|
||||
@ -2083,12 +2169,16 @@ void AES_CBC_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS r12, r12, #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_CBC_decrypt_loop_block_128\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_CBC_decrypt_loop_block_128\n\t"
|
||||
"BNE.W L_AES_CBC_decrypt_loop_block_128\n\t"
|
||||
#endif
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
"B L_AES_CBC_decrypt_end\n\t"
|
||||
#else
|
||||
"B.N L_AES_CBC_decrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_CBC_decrypt_end_odd:\n\t"
|
||||
"LDR r4, [sp, #4]\n\t"
|
||||
@ -2099,13 +2189,14 @@ void AES_CBC_decrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"\n"
|
||||
"L_AES_CBC_decrypt_end:\n\t"
|
||||
"POP {%[ks], r4}\n\t"
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [iv] "+r" (iv),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_AES_Thumb2_td_ecb] "+r" (L_AES_Thumb2_td_ecb_c), [L_AES_Thumb2_td4] "+r" (L_AES_Thumb2_td4_c)
|
||||
#else
|
||||
[L_AES_Thumb2_td_ecb] "r" (L_AES_Thumb2_td_ecb), [L_AES_Thumb2_td4] "r" (L_AES_Thumb2_td4)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [iv] "+r" (iv),
|
||||
[L_AES_Thumb2_td_ecb] "+r" (L_AES_Thumb2_td_ecb_c), [L_AES_Thumb2_td4] "+r" (L_AES_Thumb2_td4_c)
|
||||
:
|
||||
#else
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [iv] "+r" (iv)
|
||||
: [L_AES_Thumb2_td_ecb] "r" (L_AES_Thumb2_td_ecb), [L_AES_Thumb2_td4] "r" (L_AES_Thumb2_td4)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r12", "lr", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@ -2685,18 +2776,19 @@ void GCM_gmult_len(unsigned char* x, const unsigned char** m, const unsigned cha
|
||||
"POP {r3}\n\t"
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD %[data], %[data], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_GCM_gmult_len_start_block\n\t"
|
||||
#else
|
||||
"BNE.N L_GCM_gmult_len_start_block\n\t"
|
||||
"BNE.W L_GCM_gmult_len_start_block\n\t"
|
||||
#endif
|
||||
: [x] "+r" (x), [m] "+r" (m), [data] "+r" (data), [len] "+r" (len),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_GCM_gmult_len_r] "+r" (L_GCM_gmult_len_r_c)
|
||||
#else
|
||||
[L_GCM_gmult_len_r] "r" (L_GCM_gmult_len_r)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [x] "+r" (x), [m] "+r" (m), [data] "+r" (data), [len] "+r" (len),
|
||||
[L_GCM_gmult_len_r] "+r" (L_GCM_gmult_len_r_c)
|
||||
:
|
||||
#else
|
||||
: [x] "+r" (x), [m] "+r" (m), [data] "+r" (data), [len] "+r" (len)
|
||||
: [L_GCM_gmult_len_r] "r" (L_GCM_gmult_len_r)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r12", "lr", "r5", "r6", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@ -2721,8 +2813,16 @@ void AES_GCM_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r12, r4\n\t"
|
||||
#else
|
||||
"LDR r12, [sp, #36]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
"MOV r8, r5\n\t"
|
||||
#else
|
||||
"LDR r8, [sp, #40]\n\t"
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
"MOV lr, %[in]\n\t"
|
||||
"MOV r0, %[L_AES_Thumb2_te_gcm]\n\t"
|
||||
"LDM r8, {r4, r5, r6, r7}\n\t"
|
||||
@ -2733,16 +2833,16 @@ void AES_GCM_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"STM r8, {r4, r5, r6, r7}\n\t"
|
||||
"PUSH {%[ks], r8}\n\t"
|
||||
"CMP r12, #0xa\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_GCM_encrypt_start_block_128\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_GCM_encrypt_start_block_128\n\t"
|
||||
"BEQ.W L_AES_GCM_encrypt_start_block_128\n\t"
|
||||
#endif
|
||||
"CMP r12, #0xc\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BEQ L_AES_GCM_encrypt_start_block_192\n\t"
|
||||
#else
|
||||
"BEQ.N L_AES_GCM_encrypt_start_block_192\n\t"
|
||||
"BEQ.W L_AES_GCM_encrypt_start_block_192\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_GCM_encrypt_loop_block_256:\n\t"
|
||||
@ -2781,12 +2881,16 @@ void AES_GCM_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_GCM_encrypt_loop_block_256\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_GCM_encrypt_loop_block_256\n\t"
|
||||
"BNE.W L_AES_GCM_encrypt_loop_block_256\n\t"
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
"B L_AES_GCM_encrypt_end\n\t"
|
||||
#else
|
||||
"B.W L_AES_GCM_encrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_GCM_encrypt_start_block_192:\n\t"
|
||||
"\n"
|
||||
@ -2826,12 +2930,16 @@ void AES_GCM_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_GCM_encrypt_loop_block_192\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_GCM_encrypt_loop_block_192\n\t"
|
||||
"BNE.W L_AES_GCM_encrypt_loop_block_192\n\t"
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
"B L_AES_GCM_encrypt_end\n\t"
|
||||
#else
|
||||
"B.W L_AES_GCM_encrypt_end\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_GCM_encrypt_start_block_128:\n\t"
|
||||
"\n"
|
||||
@ -2871,10 +2979,10 @@ void AES_GCM_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"SUBS %[len], %[len], #0x10\n\t"
|
||||
"ADD lr, lr, #0x10\n\t"
|
||||
"ADD %[out], %[out], #0x10\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_AES_GCM_encrypt_loop_block_128\n\t"
|
||||
#else
|
||||
"BNE.N L_AES_GCM_encrypt_loop_block_128\n\t"
|
||||
"BNE.W L_AES_GCM_encrypt_loop_block_128\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_AES_GCM_encrypt_end:\n\t"
|
||||
@ -2884,13 +2992,14 @@ void AES_GCM_encrypt(const unsigned char* in, unsigned char* out, unsigned long
|
||||
"REV r6, r6\n\t"
|
||||
"REV r7, r7\n\t"
|
||||
"STM r8, {r4, r5, r6, r7}\n\t"
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [ctr] "+r" (ctr),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_AES_Thumb2_te_gcm] "+r" (L_AES_Thumb2_te_gcm_c)
|
||||
#else
|
||||
[L_AES_Thumb2_te_gcm] "r" (L_AES_Thumb2_te_gcm)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [ctr] "+r" (ctr),
|
||||
[L_AES_Thumb2_te_gcm] "+r" (L_AES_Thumb2_te_gcm_c)
|
||||
:
|
||||
#else
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks), [nr] "+r" (nr), [ctr] "+r" (ctr)
|
||||
: [L_AES_Thumb2_te_gcm] "r" (L_AES_Thumb2_te_gcm)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r12", "lr", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
|
@ -925,10 +925,10 @@ L_SHA256_transform_len_start:
|
||||
STR r9, [sp, #60]
|
||||
ADD r3, r3, #0x40
|
||||
SUBS r12, r12, #0x1
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_SHA256_transform_len_start
|
||||
#else
|
||||
BNE.N L_SHA256_transform_len_start
|
||||
BNE.W L_SHA256_transform_len_start
|
||||
#endif
|
||||
/* Round 0 */
|
||||
LDR r5, [r0, #16]
|
||||
@ -1470,10 +1470,10 @@ L_SHA256_transform_len_start:
|
||||
SUBS r2, r2, #0x40
|
||||
SUB r3, r3, #0xc0
|
||||
ADD r1, r1, #0x40
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_SHA256_transform_len_begin
|
||||
#else
|
||||
BNE.N L_SHA256_transform_len_begin
|
||||
BNE.W L_SHA256_transform_len_begin
|
||||
#endif
|
||||
ADD sp, sp, #0xc0
|
||||
POP {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
|
@ -904,10 +904,10 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"STR r9, [sp, #60]\n\t"
|
||||
"ADD r3, r3, #0x40\n\t"
|
||||
"SUBS r12, r12, #0x1\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_SHA256_transform_len_start\n\t"
|
||||
#else
|
||||
"BNE.N L_SHA256_transform_len_start\n\t"
|
||||
"BNE.W L_SHA256_transform_len_start\n\t"
|
||||
#endif
|
||||
/* Round 0 */
|
||||
"LDR r5, [%[sha256], #16]\n\t"
|
||||
@ -1449,19 +1449,20 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"SUBS %[len], %[len], #0x40\n\t"
|
||||
"SUB r3, r3, #0xc0\n\t"
|
||||
"ADD %[data], %[data], #0x40\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_SHA256_transform_len_begin\n\t"
|
||||
#else
|
||||
"BNE.N L_SHA256_transform_len_begin\n\t"
|
||||
"BNE.W L_SHA256_transform_len_begin\n\t"
|
||||
#endif
|
||||
"ADD sp, sp, #0xc0\n\t"
|
||||
: [sha256] "+r" (sha256), [data] "+r" (data), [len] "+r" (len),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_SHA256_transform_len_k] "+r" (L_SHA256_transform_len_k_c)
|
||||
#else
|
||||
[L_SHA256_transform_len_k] "r" (L_SHA256_transform_len_k)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [sha256] "+r" (sha256), [data] "+r" (data), [len] "+r" (len),
|
||||
[L_SHA256_transform_len_k] "+r" (L_SHA256_transform_len_k_c)
|
||||
:
|
||||
#else
|
||||
: [sha256] "+r" (sha256), [data] "+r" (data), [len] "+r" (len)
|
||||
: [L_SHA256_transform_len_k] "r" (L_SHA256_transform_len_k)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
|
||||
);
|
||||
}
|
||||
|
@ -2319,10 +2319,10 @@ L_SHA512_transform_len_start:
|
||||
STRD r4, r5, [sp, #120]
|
||||
ADD r3, r3, #0x80
|
||||
SUBS r12, r12, #0x1
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_SHA512_transform_len_start
|
||||
#else
|
||||
BNE.N L_SHA512_transform_len_start
|
||||
BNE.W L_SHA512_transform_len_start
|
||||
#endif
|
||||
/* Round 0 */
|
||||
LDRD r4, r5, [r0, #32]
|
||||
@ -3656,10 +3656,10 @@ L_SHA512_transform_len_start:
|
||||
SUBS r2, r2, #0x80
|
||||
SUB r3, r3, #0x200
|
||||
ADD r1, r1, #0x80
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
BNE L_SHA512_transform_len_begin
|
||||
#else
|
||||
BNE.N L_SHA512_transform_len_begin
|
||||
BNE.W L_SHA512_transform_len_begin
|
||||
#endif
|
||||
EOR r0, r0, r0
|
||||
ADD sp, sp, #0xc0
|
||||
|
@ -2226,10 +2226,10 @@ void Transform_Sha512_Len(wc_Sha512* sha512, const byte* data, word32 len)
|
||||
"STRD r4, r5, [sp, #120]\n\t"
|
||||
"ADD r3, r3, #0x80\n\t"
|
||||
"SUBS r12, r12, #0x1\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_SHA512_transform_len_start\n\t"
|
||||
#else
|
||||
"BNE.N L_SHA512_transform_len_start\n\t"
|
||||
"BNE.W L_SHA512_transform_len_start\n\t"
|
||||
#endif
|
||||
/* Round 0 */
|
||||
"LDRD r4, r5, [%[sha512], #32]\n\t"
|
||||
@ -3563,20 +3563,21 @@ void Transform_Sha512_Len(wc_Sha512* sha512, const byte* data, word32 len)
|
||||
"SUBS %[len], %[len], #0x80\n\t"
|
||||
"SUB r3, r3, #0x200\n\t"
|
||||
"ADD %[data], %[data], #0x80\n\t"
|
||||
#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#ifdef __GNUC__
|
||||
"BNE L_SHA512_transform_len_begin\n\t"
|
||||
#else
|
||||
"BNE.N L_SHA512_transform_len_begin\n\t"
|
||||
"BNE.W L_SHA512_transform_len_begin\n\t"
|
||||
#endif
|
||||
"EOR r0, r0, r0\n\t"
|
||||
"ADD sp, sp, #0xc0\n\t"
|
||||
: [sha512] "+r" (sha512), [data] "+r" (data), [len] "+r" (len),
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
[L_SHA512_transform_len_k] "+r" (L_SHA512_transform_len_k_c)
|
||||
#else
|
||||
[L_SHA512_transform_len_k] "r" (L_SHA512_transform_len_k)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: [sha512] "+r" (sha512), [data] "+r" (data), [len] "+r" (len),
|
||||
[L_SHA512_transform_len_k] "+r" (L_SHA512_transform_len_k_c)
|
||||
:
|
||||
#else
|
||||
: [sha512] "+r" (sha512), [data] "+r" (data), [len] "+r" (len)
|
||||
: [L_SHA512_transform_len_k] "r" (L_SHA512_transform_len_k)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
|
||||
);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user