diff --git a/wolfcrypt/src/port/arm/thumb2-aes-asm.S b/wolfcrypt/src/port/arm/thumb2-aes-asm.S index 0badf8f97..68695a7ea 100644 --- a/wolfcrypt/src/port/arm/thumb2-aes-asm.S +++ b/wolfcrypt/src/port/arm/thumb2-aes-asm.S @@ -714,15 +714,19 @@ AES_set_encrypt_key: #else BEQ.W L_AES_set_encrypt_key_start_192 #endif - LDRD r4, r5, [r0] - LDRD r6, r7, [r0, #8] + LDR r4, [r0] + LDR r5, [r0, #4] + LDR r6, [r0, #8] + LDR r7, [r0, #12] REV r4, r4 REV r5, r5 REV r6, r6 REV r7, r7 STM r2!, {r4, r5, r6, r7} - LDRD r4, r5, [r0, #16] - LDRD r6, r7, [r0, #24] + LDR r4, [r0, #16] + LDR r5, [r0, #20] + LDR r6, [r0, #24] + LDR r7, [r0, #28] REV r4, r4 REV r5, r5 REV r6, r6 @@ -805,9 +809,12 @@ L_AES_set_encrypt_key_loop_256: 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] - LDRD r8, r9, [r0, #16] + LDR r4, [r0] + LDR r5, [r0, #4] + LDR r6, [r0, #8] + LDR r7, [r0, #12] + LDR r8, [r0, #16] + LDR r9, [r0, #20] REV r4, r4 REV r5, r5 REV r6, r6 @@ -871,8 +878,10 @@ L_AES_set_encrypt_key_loop_192: 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] + LDR r4, [r0] + LDR r5, [r0, #4] + LDR r6, [r0, #8] + LDR r7, [r0, #12] REV r4, r4 REV r5, r5 REV r6, r6 @@ -907,7 +916,7 @@ L_AES_set_encrypt_key_loop_128: #endif L_AES_set_encrypt_key_end: POP {r4, r5, r6, r7, r8, r9, r10, pc} - /* Cycle Count = 331 */ + /* Cycle Count = 340 */ .size AES_set_encrypt_key,.-AES_set_encrypt_key .text .align 4 diff --git a/wolfcrypt/src/port/arm/thumb2-aes-asm_c.c b/wolfcrypt/src/port/arm/thumb2-aes-asm_c.c index 9699ac29c..fc4be05f8 100644 --- a/wolfcrypt/src/port/arm/thumb2-aes-asm_c.c +++ b/wolfcrypt/src/port/arm/thumb2-aes-asm_c.c @@ -357,15 +357,19 @@ void AES_set_encrypt_key(const unsigned char* key, word32 len, unsigned char* ks #else "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" + "LDR r4, [%[key]]\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 r5, r5\n\t" "REV r6, r6\n\t" "REV r7, r7\n\t" "STM %[ks]!, {r4, r5, r6, r7}\n\t" - "LDRD r4, r5, [%[key], #16]\n\t" - "LDRD r6, r7, [%[key], #24]\n\t" + "LDR r4, [%[key], #16]\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 r5, r5\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 "\n" "L_AES_set_encrypt_key_start_192:\n\t" - "LDRD r4, r5, [%[key]]\n\t" - "LDRD r6, r7, [%[key], #8]\n\t" - "LDRD r8, r9, [%[key], #16]\n\t" + "LDR r4, [%[key]]\n\t" + "LDR r5, [%[key], #4]\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 r5, r5\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 "\n" "L_AES_set_encrypt_key_start_128:\n\t" - "LDRD r4, r5, [%[key]]\n\t" - "LDRD r6, r7, [%[key], #8]\n\t" + "LDR r4, [%[key]]\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 r5, r5\n\t" "REV r6, r6\n\t"