@@ -420,10 +420,17 @@ void AES_invert_key(unsigned char* ks, word32 rounds)
420420 "str r8, [%[ks]], #4\n\t"
421421 "subs r11, r11, #1\n\t"
422422 "bne L_AES_invert_key_mix_loop_%=\n\t"
423+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
423424 : [ks ] "+ r " (ks), [rounds] " + r " (rounds),
424425 [L_AES_ARM32_te ] "+ r " (L_AES_ARM32_te_c),
425426 [L_AES_ARM32_td ] "+ r " (L_AES_ARM32_td_c)
426427 :
428+ #else
429+ :
430+ : [ks ] "r" (ks ), [rounds ] "r" (rounds ),
431+ [L_AES_ARM32_te ] "r" (L_AES_ARM32_te_c ),
432+ [L_AES_ARM32_td ] "r" (L_AES_ARM32_td_c )
433+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
427434 : "memory" , "cc" , "r12" , "lr" , "r4" , "r5" , "r6" , "r7" , "r8" , "r9" ,
428435 "r10" , "r11"
429436 );
@@ -956,10 +963,17 @@ void AES_set_encrypt_key(const unsigned char* key, word32 len,
956963 "bne L_AES_set_encrypt_key_loop_128_%=\n\t"
957964 "\n"
958965 "L_AES_set_encrypt_key_end_%=: \n\t"
966+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
959967 : [key ] "+ r " (key), [len] " + r " (len), [ks] " + r " (ks),
960968 [L_AES_ARM32_te ] "+ r " (L_AES_ARM32_te_c),
961969 [L_AES_ARM32_rcon ] "+ r " (L_AES_ARM32_rcon_c)
962970 :
971+ #else
972+ :
973+ : [key ] "r" (key ), [len ] "r " (len), [ks] " r " (ks),
974+ [L_AES_ARM32_te ] "r " (L_AES_ARM32_te_c),
975+ [L_AES_ARM32_rcon ] "r " (L_AES_ARM32_rcon_c)
976+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
963977 : "memory" , "cc" , "r12" , "lr" , "r5" , "r6" , "r7" , "r8"
964978 );
965979}
@@ -1617,8 +1631,13 @@ void AES_encrypt_block(const word32* te, int nr, int len, const word32* ks)
16171631 "eor r5, r5, r9\n\t"
16181632 "eor r6, r6, r10\n\t"
16191633 "eor r7, r7, r11\n\t"
1634+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
16201635 : [te ] "+ r " (te), [nr] " + r " (nr), [len] " + r " (len), [ks] " + r " (ks)
16211636 :
1637+ #else
1638+ :
1639+ : [te ] "r" (te ), [nr ] "r " (nr), [len] " r " (len), [ks] " r " (ks)
1640+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
16221641 : " memory ", " cc ", " lr "
16231642 );
16241643}
@@ -1884,9 +1903,15 @@ void AES_ECB_encrypt(const unsigned char* in, unsigned char* out,
18841903 "\n"
18851904 "L_AES_ECB_encrypt_end_%=: \n\t"
18861905 "pop {%[ks]}\n\t"
1906+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
18871907 : [in ] "+ r " (in ), [out ] "+ r " (out ), [len ] "+ r " (len ), [ks ] "+ r " (ks ),
18881908 [nr ] "+ r " (nr ), [L_AES_ARM32_te_ecb ] "+ r " (L_AES_ARM32_te_ecb_c )
18891909 :
1910+ #else
1911+ :
1912+ : [in ] "r " (in ), [out ] "r " (out ), [len ] "r " (len ), [ks ] "r " (ks ),
1913+ [nr ] "r " (nr ), [L_AES_ARM32_te_ecb ] "r " (L_AES_ARM32_te_ecb_c )
1914+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
18901915 : "memory" , "cc" , "r12" , "lr" , "r6" , "r7" , "r8" , "r9" , "r10" , "r11"
18911916 );
18921917}
@@ -2175,10 +2200,17 @@ void AES_CBC_encrypt(const unsigned char* in, unsigned char* out,
21752200 "L_AES_CBC_encrypt_end_%=: \n\t"
21762201 "pop {%[ks], r9}\n\t"
21772202 "stm r9, {r4, r5, r6, r7}\n\t"
2203+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
21782204 : [in ] "+ r " (in ), [out ] "+ r " (out ), [len ] "+ r " (len ), [ks ] "+ r " (ks ),
21792205 [nr ] "+ r " (nr ), [iv ] "+ r " (iv ),
21802206 [L_AES_ARM32_te_cbc ] "+ r " (L_AES_ARM32_te_cbc_c )
21812207 :
2208+ #else
2209+ :
2210+ : [in ] "r " (in ), [out ] "r " (out ), [len ] "r " (len ), [ks ] "r " (ks ),
2211+ [nr ] "r " (nr ), [iv ] "r " (iv ),
2212+ [L_AES_ARM32_te_cbc ] "r " (L_AES_ARM32_te_cbc_c )
2213+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
21822214 : "memory" , "cc" , "r12" , "lr" , "r7" , "r8" , "r9" , "r10" , "r11"
21832215 );
21842216}
@@ -2468,10 +2500,17 @@ void AES_CTR_encrypt(const unsigned char* in, unsigned char* out,
24682500 " rev r7 , r7 \n \t "
24692501#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH < 6 */
24702502 " stm r8 , {r4 , r5 , r6 , r7 }\n \t "
2503+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
24712504 : [in ] "+ r " (in ), [out ] "+ r " (out ), [len ] "+ r " (len ), [ks ] "+ r " (ks ),
24722505 [nr ] "+ r " (nr ), [ctr ] "+ r " (ctr ),
24732506 [L_AES_ARM32_te_ctr ] "+ r " (L_AES_ARM32_te_ctr_c )
24742507 :
2508+ #else
2509+ :
2510+ : [in ] "r " (in ), [out ] "r " (out ), [len ] "r " (len ), [ks ] "r " (ks ),
2511+ [nr ] "r " (nr ), [ctr ] "r " (ctr ),
2512+ [L_AES_ARM32_te_ctr ] "r " (L_AES_ARM32_te_ctr_c )
2513+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
24752514 : "memory" , "cc" , "r12" , "lr" , "r7" , "r8" , "r9" , "r10" , "r11"
24762515 );
24772516}
@@ -3130,8 +3169,13 @@ void AES_decrypt_block(const word32* td, int nr, const byte* td4)
31303169 "eor r5, r5, r9\n\t"
31313170 "eor r6, r6, r10\n\t"
31323171 "eor r7, r7, r11\n\t"
3172+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
31333173 : [td ] "+ r " (td), [nr] " + r " (nr), [td4] " + r " (td4)
31343174 :
3175+ #else
3176+ :
3177+ : [td ] "r" (td ), [nr ] "r " (nr), [td4] " r " (td4)
3178+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
31353179 : " memory ", " cc ", " lr "
31363180 );
31373181}
@@ -3431,10 +3475,17 @@ void AES_ECB_decrypt(const unsigned char* in, unsigned char* out,
34313475 "bne L_AES_ECB_decrypt_loop_block_128_%=\n\t"
34323476 "\n"
34333477 "L_AES_ECB_decrypt_end_%=: \n\t"
3478+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
34343479 : [in ] "+ r " (in ), [out ] "+ r " (out ), [len ] "+ r " (len ), [ks ] "+ r " (ks ),
34353480 [nr ] "+ r " (nr ), [L_AES_ARM32_td_ecb ] "+ r " (L_AES_ARM32_td_ecb_c ),
34363481 [L_AES_ARM32_td4 ] "+ r " (L_AES_ARM32_td4_c )
34373482 :
3483+ #else
3484+ :
3485+ : [in ] "r " (in ), [out ] "r " (out ), [len ] "r " (len ), [ks ] "r " (ks ),
3486+ [nr ] "r " (nr ), [L_AES_ARM32_td_ecb ] "r " (L_AES_ARM32_td_ecb_c ),
3487+ [L_AES_ARM32_td4 ] "r " (L_AES_ARM32_td4_c )
3488+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
34383489 : "memory" , "cc" , "r12" , "lr" , "r7" , "r8" , "r9" , "r10" , "r11"
34393490 );
34403491}
@@ -4086,11 +4137,19 @@ void AES_CBC_decrypt(const unsigned char* in, unsigned char* out,
40864137 "\n"
40874138 "L_AES_CBC_decrypt_end_%=: \n\t"
40884139 "pop {%[ks]-r4}\n\t"
4140+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
40894141 : [in ] "+ r " (in), [out] " + r " (out), [len] " + r " (len), [ks] " + r " (ks),
40904142 [nr ] "+ r " (nr), [iv] " + r " (iv),
40914143 [L_AES_ARM32_td_ecb ] "+ r " (L_AES_ARM32_td_ecb_c),
40924144 [L_AES_ARM32_td4 ] "+ r " (L_AES_ARM32_td4_c)
40934145 :
4146+ #else
4147+ :
4148+ : [in ] "r" (in ), [out ] "r " (out), [len] " r " (len), [ks] " r " (ks),
4149+ [nr ] "r " (nr), [iv] " r " (iv),
4150+ [L_AES_ARM32_td_ecb ] "r " (L_AES_ARM32_td_ecb_c),
4151+ [L_AES_ARM32_td4 ] "r " (L_AES_ARM32_td4_c)
4152+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
40944153 : "memory" , "cc" , "r12" , "lr" , "r8" , "r9" , "r10" , "r11"
40954154 );
40964155}
@@ -4701,9 +4760,15 @@ void GCM_gmult_len(unsigned char* x, const unsigned char** m,
47014760 " subs %[len ], %[len ], #16 \n \t "
47024761 " add %[data ], %[data ], #16 \n \t "
47034762 " bne L_GCM_gmult_len_start_block_ %=\n \t "
4763+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
47044764 : [x ] "+ r " (x ), [m ] "+ r " (m ), [data ] "+ r " (data ), [len ] "+ r " (len ),
47054765 [L_GCM_gmult_len_r ] "+ r " (L_GCM_gmult_len_r_c )
47064766 :
4767+ #else
4768+ :
4769+ : [x ] "r " (x ), [m ] "r " (m ), [data ] "r " (data ), [len ] "r " (len ),
4770+ [L_GCM_gmult_len_r ] "r " (L_GCM_gmult_len_r_c )
4771+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
47074772 : "memory" , "cc" , "r12" , "lr" , "r5" , "r6" , "r7" , "r8" , "r9" , "r10" ,
47084773 "r11"
47094774 );
@@ -4983,10 +5048,17 @@ void AES_GCM_encrypt(const unsigned char* in, unsigned char* out,
49835048 " rev r7 , r7 \n \t "
49845049#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH < 6 */
49855050 " stm r8 , {r4 , r5 , r6 , r7 }\n \t "
5051+ #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
49865052 : [in ] "+ r " (in ), [out ] "+ r " (out ), [len ] "+ r " (len ), [ks ] "+ r " (ks ),
49875053 [nr ] "+ r " (nr ), [ctr ] "+ r " (ctr ),
49885054 [L_AES_ARM32_te_gcm ] "+ r " (L_AES_ARM32_te_gcm_c )
49895055 :
5056+ #else
5057+ :
5058+ : [in ] "r " (in ), [out ] "r " (out ), [len ] "r " (len ), [ks ] "r " (ks ),
5059+ [nr ] "r " (nr ), [ctr ] "r " (ctr ),
5060+ [L_AES_ARM32_te_gcm ] "r " (L_AES_ARM32_te_gcm_c )
5061+ #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
49905062 : "memory" , "cc" , "r12" , "lr" , "r7" , "r8" , "r9" , "r10" , "r11"
49915063 );
49925064}
0 commit comments