diff --git a/wolfcrypt/src/aes.c b/wolfcrypt/src/aes.c index 173523d2c..09062cc57 100644 --- a/wolfcrypt/src/aes.c +++ b/wolfcrypt/src/aes.c @@ -782,7 +782,6 @@ block cipher mechanism that uses n-bit binary string parameter key with 128-bits const int bits, Aes* aes) { int nr; - int ret; #ifdef WOLFSSL_SMALL_STACK Aes *temp_key; #else @@ -813,12 +812,11 @@ block cipher mechanism that uses n-bit binary string parameter key with 128-bits nr = temp_key->rounds; aes->rounds = nr; - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) { + SAVE_VECTOR_REGISTERS( #ifdef WOLFSSL_SMALL_STACK XFREE(temp_key, aes->heap, DYNAMIC_TYPE_AES); #endif - return ret; - } + return _svr_ret;); Key_Schedule[nr] = Temp_Key_Schedule[0]; Key_Schedule[nr-1] = _mm_aesimc_si128(Temp_Key_Schedule[1]); @@ -3139,11 +3137,8 @@ int wc_AesSetIV(Aes* aes, const byte* iv) __must_check int wc_AesEncryptDirect(Aes* aes, byte* out, const byte* in) { - if (haveAESNI && aes->use_aesni) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; - } + if (haveAESNI && aes->use_aesni) + SAVE_VECTOR_REGISTERS(return _svr_ret;); wc_AesEncrypt(aes, in, out); if (haveAESNI && aes->use_aesni) RESTORE_VECTOR_REGISTERS(); @@ -3158,11 +3153,8 @@ int wc_AesSetIV(Aes* aes, const byte* iv) /* Allow direct access to one block decrypt */ __must_check int wc_AesDecryptDirect(Aes* aes, byte* out, const byte* in) { - if (haveAESNI && aes->use_aesni) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; - } + if (haveAESNI && aes->use_aesni) + SAVE_VECTOR_REGISTERS(return _svr_ret;); wc_AesDecrypt(aes, in, out); if (haveAESNI && aes->use_aesni) RESTORE_VECTOR_REGISTERS(); @@ -3960,7 +3952,6 @@ int wc_AesSetIV(Aes* aes, const byte* iv) #ifdef WOLFSSL_AESNI if (haveAESNI) { - int ret; #ifdef DEBUG_AESNI printf("about to aes cbc encrypt\n"); printf("in = %p\n", in); @@ -3981,10 +3972,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) tmp_align = tmp + (AESNI_ALIGN - ((wc_ptr_t)tmp % AESNI_ALIGN)); XMEMCPY(tmp_align, in, sz); - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) { - XFREE(tmp, aes->heap, DYNAMIC_TYPE_TMP_BUFFER); - return ret; - } + SAVE_VECTOR_REGISTERS(XFREE(tmp, aes->heap, DYNAMIC_TYPE_TMP_BUFFER); return _svr_ret;); AES_CBC_encrypt(tmp_align, tmp_align, (byte*)aes->reg, sz, (byte*)aes->key, aes->rounds); RESTORE_VECTOR_REGISTERS(); @@ -4000,8 +3988,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) #endif } - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); AES_CBC_encrypt(in, out, (byte*)aes->reg, sz, (byte*)aes->key, aes->rounds); RESTORE_VECTOR_REGISTERS(); @@ -4086,7 +4073,6 @@ int wc_AesSetIV(Aes* aes, const byte* iv) #ifdef WOLFSSL_AESNI if (haveAESNI) { - int ret; #ifdef DEBUG_AESNI printf("about to aes cbc decrypt\n"); printf("in = %p\n", in); @@ -4099,8 +4085,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv) /* if input and output same will overwrite input iv */ XMEMCPY(aes->tmp, in + sz - AES_BLOCK_SIZE, AES_BLOCK_SIZE); - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); #if defined(WOLFSSL_AESNI_BY4) AES_CBC_decrypt_by4(in, out, (byte*)aes->reg, sz, (byte*)aes->key, aes->rounds); @@ -7675,9 +7660,7 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz, #ifdef WOLFSSL_AESNI #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_AVX2(intel_flags)) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); AES_GCM_encrypt_avx2(in, out, authIn, iv, authTag, sz, authInSz, ivSz, authTagSz, (const byte*)aes->key, aes->rounds); RESTORE_VECTOR_REGISTERS(); @@ -7687,9 +7670,7 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz, #endif #ifdef HAVE_INTEL_AVX1 if (IS_INTEL_AVX1(intel_flags)) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); AES_GCM_encrypt_avx1(in, out, authIn, iv, authTag, sz, authInSz, ivSz, authTagSz, (const byte*)aes->key, aes->rounds); RESTORE_VECTOR_REGISTERS(); @@ -8201,9 +8182,7 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, #ifdef WOLFSSL_AESNI #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_AVX2(intel_flags)) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); AES_GCM_decrypt_avx2(in, out, authIn, iv, authTag, sz, authInSz, ivSz, authTagSz, (byte*)aes->key, aes->rounds, &res); RESTORE_VECTOR_REGISTERS(); @@ -8215,9 +8194,7 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, #endif #ifdef HAVE_INTEL_AVX1 if (IS_INTEL_AVX1(intel_flags)) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); AES_GCM_decrypt_avx1(in, out, authIn, iv, authTag, sz, authInSz, ivSz, authTagSz, (byte*)aes->key, aes->rounds, &res); RESTORE_VECTOR_REGISTERS(); @@ -8473,9 +8450,7 @@ static int AesGcmInit_aesni(Aes* aes, const byte* iv, word32 ivSz) #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_AVX2(intel_flags)) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); AES_GCM_init_avx2((byte*)aes->key, aes->rounds, iv, ivSz, aes->H, AES_COUNTER(aes), AES_INITCTR(aes)); RESTORE_VECTOR_REGISTERS(); @@ -8484,9 +8459,7 @@ static int AesGcmInit_aesni(Aes* aes, const byte* iv, word32 ivSz) #endif #ifdef HAVE_INTEL_AVX1 if (IS_INTEL_AVX1(intel_flags)) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); AES_GCM_init_avx1((byte*)aes->key, aes->rounds, iv, ivSz, aes->H, AES_COUNTER(aes), AES_INITCTR(aes)); RESTORE_VECTOR_REGISTERS(); @@ -8494,9 +8467,7 @@ static int AesGcmInit_aesni(Aes* aes, const byte* iv, word32 ivSz) else #endif { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return BAD_STATE_E; + SAVE_VECTOR_REGISTERS(return _svr_ret;); AES_GCM_init_aesni((byte*)aes->key, aes->rounds, iv, ivSz, aes->H, AES_COUNTER(aes), AES_INITCTR(aes)); RESTORE_VECTOR_REGISTERS(); @@ -8635,9 +8606,7 @@ static int AesGcmEncryptUpdate_aesni(Aes* aes, byte* c, const byte* p, word32 blocks; int partial; - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); /* Hash in A, the Authentication Data */ AesGcmAadUpdate_aesni(aes, a, aSz, (cSz > 0) && (c != NULL)); @@ -8763,9 +8732,7 @@ static int AesGcmEncryptFinal_aesni(Aes* aes, byte* authTag, word32 authTagSz) /* AAD block incomplete when > 0 */ byte over = aes->aOver; - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); if (aes->cOver > 0) { /* Cipher text block incomplete. */ over = aes->cOver; @@ -8863,9 +8830,7 @@ static int AesGcmDecryptUpdate_aesni(Aes* aes, byte* p, const byte* c, word32 blocks; int partial; - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); /* Hash in A, the Authentication Data */ AesGcmAadUpdate_aesni(aes, a, aSz, (cSz > 0) && (c != NULL)); @@ -8999,8 +8964,7 @@ static int AesGcmDecryptFinal_aesni(Aes* aes, const byte* authTag, byte over = aes->aOver; byte *lastBlock = AES_LASTGBLOCK(aes); - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); if (aes->cOver > 0) { /* Cipher text block incomplete. */ over = aes->cOver; @@ -10001,9 +9965,7 @@ int wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz, B[15] = 1; #ifdef WOLFSSL_AESNI if (haveAESNI && aes->use_aesni) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); while (inSz >= AES_BLOCK_SIZE * 4) { AesCcmCtrIncSet4(B, lenSz); @@ -10089,9 +10051,7 @@ int wc_AesCcmDecrypt(Aes* aes, byte* out, const byte* in, word32 inSz, #ifdef WOLFSSL_AESNI if (haveAESNI && aes->use_aesni) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); while (oSz >= AES_BLOCK_SIZE * 4) { AesCcmCtrIncSet4(B, lenSz); @@ -10520,8 +10480,7 @@ int wc_AesEcbEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) if ((in == NULL) || (out == NULL) || (aes == NULL)) return BAD_FUNC_ARG; - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); ret = _AesEcbEncrypt(aes, out, in, sz); RESTORE_VECTOR_REGISTERS(); @@ -10535,8 +10494,7 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz) if ((in == NULL) || (out == NULL) || (aes == NULL)) return BAD_FUNC_ARG; - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); ret = _AesEcbDecrypt(aes, out, in, sz); RESTORE_VECTOR_REGISTERS(); @@ -10565,7 +10523,6 @@ static int wc_AesFeedbackEncrypt(Aes* aes, byte* out, const byte* in, #ifdef WOLFSSL_AES_CFB byte* reg = NULL; #endif - int ret; if (aes == NULL || out == NULL || in == NULL) { return BAD_FUNC_ARG; @@ -10591,8 +10548,7 @@ static int wc_AesFeedbackEncrypt(Aes* aes, byte* out, const byte* in, sz--; } - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); while (sz >= AES_BLOCK_SIZE) { /* Using aes->tmp here for inline case i.e. in=out */ @@ -10662,7 +10618,6 @@ static int wc_AesFeedbackDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, byte mode) { byte* tmp; - int ret; if (aes == NULL || out == NULL || in == NULL) { return BAD_FUNC_ARG; @@ -10684,8 +10639,7 @@ static int wc_AesFeedbackDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, sz--; } - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); while (sz > AES_BLOCK_SIZE) { /* Using aes->tmp here for inline case i.e. in=out */ @@ -10803,7 +10757,6 @@ static int wc_AesFeedbackCFB8(Aes* aes, byte* out, const byte* in, word32 sz, byte dir) { byte *pt; - int ret; if (aes == NULL || out == NULL || in == NULL) { return BAD_FUNC_ARG; @@ -10813,8 +10766,7 @@ static int wc_AesFeedbackCFB8(Aes* aes, byte* out, const byte* in, return 0; } - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); while (sz > 0) { wc_AesEncryptDirect(aes, (byte*)aes->tmp, (byte*)aes->reg); @@ -10858,7 +10810,6 @@ static int wc_AesFeedbackCFB1(Aes* aes, byte* out, const byte* in, byte cur = 0; /* hold current work in order to handle inline in=out */ byte* pt; int bit = 7; - int ret; if (aes == NULL || out == NULL || in == NULL) { return BAD_FUNC_ARG; @@ -10868,8 +10819,7 @@ static int wc_AesFeedbackCFB1(Aes* aes, byte* out, const byte* in, return 0; } - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); while (sz > 0) { wc_AesEncryptDirect(aes, (byte*)aes->tmp, (byte*)aes->reg); @@ -11074,8 +11024,6 @@ int wc_AesKeyWrap_ex(Aes *aes, const byte* in, word32 inSz, byte* out, byte t[KEYWRAP_BLOCK_SIZE]; byte tmp[AES_BLOCK_SIZE]; - int ret; - /* n must be at least 2 64-bit blocks, output size is (n + 1) 8 bytes (64-bit) */ if (aes == NULL || in == NULL || inSz < 2*KEYWRAP_BLOCK_SIZE || out == NULL || outSz < (inSz + KEYWRAP_BLOCK_SIZE)) @@ -11096,8 +11044,7 @@ int wc_AesKeyWrap_ex(Aes *aes, const byte* in, word32 inSz, byte* out, XMEMCPY(tmp, iv, KEYWRAP_BLOCK_SIZE); } - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); for (j = 0; j <= 5; j++) { for (i = 1; i <= inSz / KEYWRAP_BLOCK_SIZE; i++) { @@ -11182,8 +11129,6 @@ int wc_AesKeyUnWrap_ex(Aes *aes, const byte* in, word32 inSz, byte* out, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6 }; - int ret; - if (aes == NULL || in == NULL || inSz < 3 * KEYWRAP_BLOCK_SIZE || out == NULL || outSz < (inSz - KEYWRAP_BLOCK_SIZE)) return BAD_FUNC_ARG; @@ -11203,8 +11148,7 @@ int wc_AesKeyUnWrap_ex(Aes *aes, const byte* in, word32 inSz, byte* out, XMEMCPY(out, in + KEYWRAP_BLOCK_SIZE, inSz - KEYWRAP_BLOCK_SIZE); XMEMSET(t, 0, sizeof(t)); - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); /* initialize counter to 6n */ n = (inSz - 1) / KEYWRAP_BLOCK_SIZE; @@ -11487,8 +11431,7 @@ int wc_AesXtsEncrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz, XMEMSET(tmp, 0, AES_BLOCK_SIZE); /* set to 0's in case of improper AES * key setup passed to encrypt direct*/ - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); wc_AesEncryptDirect(tweak, tmp, i); @@ -11603,8 +11546,7 @@ int wc_AesXtsDecrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz, XMEMSET(tmp, 0, AES_BLOCK_SIZE); /* set to 0's in case of improper AES * key setup passed to decrypt direct*/ - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); wc_AesEncryptDirect(tweak, tmp, i); diff --git a/wolfcrypt/src/chacha.c b/wolfcrypt/src/chacha.c index cc5a5a7d1..f3019577b 100644 --- a/wolfcrypt/src/chacha.c +++ b/wolfcrypt/src/chacha.c @@ -418,18 +418,14 @@ int wc_Chacha_Process(ChaCha* ctx, byte* output, const byte* input, #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_AVX2(cpuidFlags)) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); chacha_encrypt_avx2(ctx, input, output, msglen); RESTORE_VECTOR_REGISTERS(); return 0; } #endif if (IS_INTEL_AVX1(cpuidFlags)) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); chacha_encrypt_avx1(ctx, input, output, msglen); RESTORE_VECTOR_REGISTERS(); return 0; diff --git a/wolfcrypt/src/curve25519.c b/wolfcrypt/src/curve25519.c index 6dc402cdd..f5b3e80a3 100644 --- a/wolfcrypt/src/curve25519.c +++ b/wolfcrypt/src/curve25519.c @@ -128,8 +128,7 @@ int wc_curve25519_make_pub(int public_size, byte* pub, int private_size, #else fe_init(); - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); ret = curve25519(pub, priv, kCurve25519BasePoint); @@ -171,8 +170,7 @@ int wc_curve25519_generic(int public_size, byte* pub, fe_init(); - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); ret = curve25519(pub, priv, basepoint); @@ -289,8 +287,7 @@ int wc_curve25519_shared_secret_ex(curve25519_key* private_key, ret = nxp_ltc_curve25519(&o, private_key->k, &public_key->p, kLTC_Curve25519); #else - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); ret = curve25519(o.point, private_key->k, public_key->p.point); diff --git a/wolfcrypt/src/poly1305.c b/wolfcrypt/src/poly1305.c index 2db1cafc2..816efb236 100644 --- a/wolfcrypt/src/poly1305.c +++ b/wolfcrypt/src/poly1305.c @@ -267,9 +267,7 @@ static int poly1305_blocks(Poly1305* ctx, const unsigned char *m, { #ifdef USE_INTEL_SPEEDUP /* AVX2 is handled in wc_Poly1305Update. */ - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); poly1305_blocks_avx(ctx, m, bytes); RESTORE_VECTOR_REGISTERS(); return 0; @@ -403,9 +401,7 @@ static int poly1305_block(Poly1305* ctx, const unsigned char *m) { #ifdef USE_INTEL_SPEEDUP /* No call to poly1305_block when AVX2, AVX2 does 4 blocks at a time. */ - int ret= SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); poly1305_block_avx(ctx, m); RESTORE_VECTOR_REGISTERS(); return 0; @@ -444,11 +440,7 @@ int wc_Poly1305SetKey(Poly1305* ctx, const byte* key, word32 keySz) intel_flags = cpuid_get_flags(); cpu_flags_set = 1; } - { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; - } + SAVE_VECTOR_REGISTERS(return _svr_ret;); #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_AVX2(intel_flags)) poly1305_setkey_avx2(ctx, key); @@ -511,7 +503,6 @@ int wc_Poly1305SetKey(Poly1305* ctx, const byte* key, word32 keySz) int wc_Poly1305Final(Poly1305* ctx, byte* mac) { #ifdef USE_INTEL_SPEEDUP - int ret; #elif defined(POLY130564) word64 h0,h1,h2,c; @@ -531,8 +522,7 @@ int wc_Poly1305Final(Poly1305* ctx, byte* mac) return BAD_FUNC_ARG; #ifdef USE_INTEL_SPEEDUP - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_AVX2(intel_flags)) poly1305_final_avx2(ctx, mac); @@ -720,9 +710,7 @@ int wc_Poly1305Update(Poly1305* ctx, const byte* m, word32 bytes) #ifdef USE_INTEL_SPEEDUP #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_AVX2(intel_flags)) { - int ret = SAVE_VECTOR_REGISTERS(); - if (ret != 0) - return ret; + SAVE_VECTOR_REGISTERS(return _svr_ret;); /* handle leftover */ diff --git a/wolfcrypt/src/sha256.c b/wolfcrypt/src/sha256.c index bf64a1b27..9e73381b2 100644 --- a/wolfcrypt/src/sha256.c +++ b/wolfcrypt/src/sha256.c @@ -320,10 +320,8 @@ static int InitSha256(wc_Sha256* sha256) static WC_INLINE int inline_XTRANSFORM(wc_Sha256* S, const byte* D) { int ret; - if (Transform_Sha256_is_vectorized) { - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; - } + if (Transform_Sha256_is_vectorized) + SAVE_VECTOR_REGISTERS(return _svr_ret;); ret = (*Transform_Sha256_p)(S, D); if (Transform_Sha256_is_vectorized) RESTORE_VECTOR_REGISTERS(); @@ -333,10 +331,8 @@ static int InitSha256(wc_Sha256* sha256) static WC_INLINE int inline_XTRANSFORM_LEN(wc_Sha256* S, const byte* D, word32 L) { int ret; - if (Transform_Sha256_is_vectorized) { - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; - } + if (Transform_Sha256_is_vectorized) + SAVE_VECTOR_REGISTERS(return _svr_ret;); ret = (*Transform_Sha256_Len_p)(S, D, L); if (Transform_Sha256_is_vectorized) RESTORE_VECTOR_REGISTERS(); diff --git a/wolfcrypt/src/sha512.c b/wolfcrypt/src/sha512.c index e638b25d7..b6ffb9dee 100644 --- a/wolfcrypt/src/sha512.c +++ b/wolfcrypt/src/sha512.c @@ -509,10 +509,8 @@ static int InitSha512_256(wc_Sha512* sha512) static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) { int ret; - if (Transform_Sha512_is_vectorized) { - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; - } + if (Transform_Sha512_is_vectorized) + SAVE_VECTOR_REGISTERS(return _svr_ret;); ret = (*Transform_Sha512_p)(sha512); if (Transform_Sha512_is_vectorized) RESTORE_VECTOR_REGISTERS(); @@ -520,10 +518,8 @@ static int InitSha512_256(wc_Sha512* sha512) } static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) { int ret; - if (Transform_Sha512_is_vectorized) { - if ((ret = SAVE_VECTOR_REGISTERS()) != 0) - return ret; - } + if (Transform_Sha512_is_vectorized) + SAVE_VECTOR_REGISTERS(return _svr_ret;); ret = (*Transform_Sha512_Len_p)(sha512, len); if (Transform_Sha512_is_vectorized) RESTORE_VECTOR_REGISTERS(); diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index d7b1de39a..596d94da6 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -137,7 +137,7 @@ #include #endif #ifndef SAVE_VECTOR_REGISTERS - #define SAVE_VECTOR_REGISTERS() save_vector_registers_x86() + #define SAVE_VECTOR_REGISTERS(fail_clause) { int _svr_ret = save_vector_registers_x86(); if (_svr_ret != 0) { fail_clause } } #endif #ifndef RESTORE_VECTOR_REGISTERS #define RESTORE_VECTOR_REGISTERS() restore_vector_registers_x86() @@ -152,7 +152,7 @@ #define WOLFSSL_LINUXKM_SIMD_ARM #include #ifndef SAVE_VECTOR_REGISTERS - #define SAVE_VECTOR_REGISTERS() save_vector_registers_arm() + #define SAVE_VECTOR_REGISTERS(fail_clause) { int _svr_ret = save_vector_registers_arm(); if (_svr_ret != 0) { fail_clause } } #endif #ifndef RESTORE_VECTOR_REGISTERS #define RESTORE_VECTOR_REGISTERS() restore_vector_registers_arm() @@ -162,7 +162,7 @@ #define WOLFSSL_NO_ASM #endif #ifndef SAVE_VECTOR_REGISTERS - #define SAVE_VECTOR_REGISTERS() 0 + #define SAVE_VECTOR_REGISTERS(...) ({}) #endif #ifndef RESTORE_VECTOR_REGISTERS #define RESTORE_VECTOR_REGISTERS() ({}) @@ -620,7 +620,7 @@ #else /* ! WOLFSSL_LINUXKM */ #ifndef SAVE_VECTOR_REGISTERS - #define SAVE_VECTOR_REGISTERS() 0 + #define SAVE_VECTOR_REGISTERS(...) do{}while(0) #endif #ifndef RESTORE_VECTOR_REGISTERS #define RESTORE_VECTOR_REGISTERS() do{}while(0)