From 99d60a07817fca44261a92c8be226bfd4acd863d Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Tue, 13 Sep 2022 13:54:06 +1000 Subject: [PATCH] SP; Mac M1 failure fix Give the compiler a hint that mask needs special attention. --- wolfcrypt/src/sp_arm32.c | 16 ++++++++-------- wolfcrypt/src/sp_arm64.c | 16 ++++++++-------- wolfcrypt/src/sp_armthumb.c | 16 ++++++++-------- wolfcrypt/src/sp_cortexm.c | 16 ++++++++-------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/wolfcrypt/src/sp_arm32.c b/wolfcrypt/src/sp_arm32.c index ca421b239..59fb269dc 100644 --- a/wolfcrypt/src/sp_arm32.c +++ b/wolfcrypt/src/sp_arm32.c @@ -11810,7 +11810,7 @@ static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_2048_cmp_32(&t1[32], d) >= 0; sp_2048_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1); for (i = 31; i >= 0; i--) { - sp_digit mask = 0 - (t1[32 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div); sp_digit hi = t1[32 + i] + mask; r1 = div_2048_word_32(hi, t1[32 + i - 1], div); r1 |= mask; @@ -16009,7 +16009,7 @@ static WC_INLINE int sp_2048_div_64(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_2048_cmp_64(&t1[64], d) >= 0; sp_2048_cond_sub_64(&t1[64], &t1[64], d, (sp_digit)0 - r1); for (i = 63; i >= 0; i--) { - sp_digit mask = 0 - (t1[64 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[64 + i] == div); sp_digit hi = t1[64 + i] + mask; r1 = div_2048_word_64(hi, t1[64 + i - 1], div); r1 |= mask; @@ -36953,7 +36953,7 @@ static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_3072_cmp_48(&t1[48], d) >= 0; sp_3072_cond_sub_48(&t1[48], &t1[48], d, (sp_digit)0 - r1); for (i = 47; i >= 0; i--) { - sp_digit mask = 0 - (t1[48 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[48 + i] == div); sp_digit hi = t1[48 + i] + mask; r1 = div_3072_word_48(hi, t1[48 + i - 1], div); r1 |= mask; @@ -42798,7 +42798,7 @@ static WC_INLINE int sp_3072_div_96(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_3072_cmp_96(&t1[96], d) >= 0; sp_3072_cond_sub_96(&t1[96], &t1[96], d, (sp_digit)0 - r1); for (i = 95; i >= 0; i--) { - sp_digit mask = 0 - (t1[96 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[96 + i] == div); sp_digit hi = t1[96 + i] + mask; r1 = div_3072_word_96(hi, t1[96 + i - 1], div); r1 |= mask; @@ -58046,7 +58046,7 @@ static WC_INLINE int sp_4096_div_128(const sp_digit* a, const sp_digit* d, sp_di r1 = sp_4096_cmp_128(&t1[128], d) >= 0; sp_4096_cond_sub_128(&t1[128], &t1[128], d, (sp_digit)0 - r1); for (i = 127; i >= 0; i--) { - sp_digit mask = 0 - (t1[128 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[128 + i] == div); sp_digit hi = t1[128 + i] + mask; r1 = div_4096_word_128(hi, t1[128 + i - 1], div); r1 |= mask; @@ -74919,7 +74919,7 @@ static WC_INLINE int sp_256_div_8(const sp_digit* a, const sp_digit* d, sp_digit r1 = sp_256_cmp_8(&t1[8], d) >= 0; sp_256_cond_sub_8(&t1[8], &t1[8], d, (sp_digit)0 - r1); for (i = 7; i >= 0; i--) { - sp_digit mask = 0 - (t1[8 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[8 + i] == div); sp_digit hi = t1[8 + i] + mask; r1 = div_256_word_8(hi, t1[8 + i - 1], div); r1 |= mask; @@ -92413,7 +92413,7 @@ static WC_INLINE int sp_384_div_12(const sp_digit* a, const sp_digit* d, sp_digi r1 = sp_384_cmp_12(&t1[12], d) >= 0; sp_384_cond_sub_12(&t1[12], &t1[12], d, (sp_digit)0 - r1); for (i = 11; i >= 0; i--) { - sp_digit mask = 0 - (t1[12 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[12 + i] == div); sp_digit hi = t1[12 + i] + mask; r1 = div_384_word_12(hi, t1[12 + i - 1], div); r1 |= mask; @@ -141159,7 +141159,7 @@ static WC_INLINE int sp_1024_div_32(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_1024_cmp_32(&t1[32], d) >= 0; sp_1024_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1); for (i = 31; i >= 0; i--) { - sp_digit mask = 0 - (t1[32 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div); sp_digit hi = t1[32 + i] + mask; r1 = div_1024_word_32(hi, t1[32 + i - 1], div); r1 |= mask; diff --git a/wolfcrypt/src/sp_arm64.c b/wolfcrypt/src/sp_arm64.c index 1526cae33..869c3b2c5 100644 --- a/wolfcrypt/src/sp_arm64.c +++ b/wolfcrypt/src/sp_arm64.c @@ -3940,7 +3940,7 @@ static WC_INLINE int sp_2048_div_16(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_2048_cmp_16(&t1[16], d) >= 0; sp_2048_cond_sub_16(&t1[16], &t1[16], d, (sp_digit)0 - r1); for (i = 15; i >= 0; i--) { - sp_digit mask = 0 - (t1[16 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[16 + i] == div); sp_digit hi = t1[16 + i] + mask; r1 = div_2048_word_16(hi, t1[16 + i - 1], div); r1 |= mask; @@ -5547,7 +5547,7 @@ static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_2048_cmp_32(&t1[32], d) >= 0; sp_2048_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1); for (i = 31; i >= 0; i--) { - sp_digit mask = 0 - (t1[32 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div); sp_digit hi = t1[32 + i] + mask; r1 = div_2048_word_32(hi, t1[32 + i - 1], div); r1 |= mask; @@ -13095,7 +13095,7 @@ static WC_INLINE int sp_3072_div_24(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_3072_cmp_24(&t1[24], d) >= 0; sp_3072_cond_sub_24(&t1[24], &t1[24], d, (sp_digit)0 - r1); for (i = 23; i >= 0; i--) { - sp_digit mask = 0 - (t1[24 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[24 + i] == div); sp_digit hi = t1[24 + i] + mask; r1 = div_3072_word_24(hi, t1[24 + i - 1], div); r1 |= mask; @@ -15094,7 +15094,7 @@ static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_3072_cmp_48(&t1[48], d) >= 0; sp_3072_cond_sub_48(&t1[48], &t1[48], d, (sp_digit)0 - r1); for (i = 47; i >= 0; i--) { - sp_digit mask = 0 - (t1[48 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[48 + i] == div); sp_digit hi = t1[48 + i] + mask; r1 = div_3072_word_48(hi, t1[48 + i - 1], div); r1 |= mask; @@ -20169,7 +20169,7 @@ static WC_INLINE int sp_4096_div_64(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_4096_cmp_64(&t1[64], d) >= 0; sp_4096_cond_sub_64(&t1[64], &t1[64], d, (sp_digit)0 - r1); for (i = 63; i >= 0; i--) { - sp_digit mask = 0 - (t1[64 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[64 + i] == div); sp_digit hi = t1[64 + i] + mask; r1 = div_4096_word_64(hi, t1[64 + i - 1], div); r1 |= mask; @@ -40041,7 +40041,7 @@ static WC_INLINE int sp_256_div_4(const sp_digit* a, const sp_digit* d, sp_digit r1 = sp_256_cmp_4(&t1[4], d) >= 0; sp_256_cond_sub_4(&t1[4], &t1[4], d, (sp_digit)0 - r1); for (i = 3; i >= 0; i--) { - sp_digit mask = 0 - (t1[4 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[4 + i] == div); sp_digit hi = t1[4 + i] + mask; r1 = div_256_word_4(hi, t1[4 + i - 1], div); r1 |= mask; @@ -66122,7 +66122,7 @@ static WC_INLINE int sp_384_div_6(const sp_digit* a, const sp_digit* d, sp_digit r1 = sp_384_cmp_6(&t1[6], d) >= 0; sp_384_cond_sub_6(&t1[6], &t1[6], d, (sp_digit)0 - r1); for (i = 5; i >= 0; i--) { - sp_digit mask = 0 - (t1[6 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[6 + i] == div); sp_digit hi = t1[6 + i] + mask; r1 = div_384_word_6(hi, t1[6 + i - 1], div); r1 |= mask; @@ -114358,7 +114358,7 @@ static WC_INLINE int sp_1024_div_16(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_1024_cmp_16(&t1[16], d) >= 0; sp_1024_cond_sub_16(&t1[16], &t1[16], d, (sp_digit)0 - r1); for (i = 15; i >= 0; i--) { - sp_digit mask = 0 - (t1[16 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[16 + i] == div); sp_digit hi = t1[16 + i] + mask; r1 = div_1024_word_16(hi, t1[16 + i - 1], div); r1 |= mask; diff --git a/wolfcrypt/src/sp_armthumb.c b/wolfcrypt/src/sp_armthumb.c index 5fea65bb6..3d171d989 100644 --- a/wolfcrypt/src/sp_armthumb.c +++ b/wolfcrypt/src/sp_armthumb.c @@ -23943,7 +23943,7 @@ static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_2048_cmp_32(&t1[32], d) >= 0; sp_2048_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1); for (i = 31; i >= 0; i--) { - sp_digit mask = 0 - (t1[32 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div); sp_digit hi = t1[32 + i] + mask; r1 = div_2048_word_32(hi, t1[32 + i - 1], div); r1 |= mask; @@ -27530,7 +27530,7 @@ static WC_INLINE int sp_2048_div_64(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_2048_cmp_64(&t1[64], d) >= 0; sp_2048_cond_sub_64(&t1[64], &t1[64], d, (sp_digit)0 - r1); for (i = 63; i >= 0; i--) { - sp_digit mask = 0 - (t1[64 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[64 + i] == div); sp_digit hi = t1[64 + i] + mask; r1 = div_2048_word_64(hi, t1[64 + i - 1], div); r1 |= mask; @@ -75403,7 +75403,7 @@ static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_3072_cmp_48(&t1[48], d) >= 0; sp_3072_cond_sub_48(&t1[48], &t1[48], d, (sp_digit)0 - r1); for (i = 47; i >= 0; i--) { - sp_digit mask = 0 - (t1[48 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[48 + i] == div); sp_digit hi = t1[48 + i] + mask; r1 = div_3072_word_48(hi, t1[48 + i - 1], div); r1 |= mask; @@ -79821,7 +79821,7 @@ static WC_INLINE int sp_3072_div_96(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_3072_cmp_96(&t1[96], d) >= 0; sp_3072_cond_sub_96(&t1[96], &t1[96], d, (sp_digit)0 - r1); for (i = 95; i >= 0; i--) { - sp_digit mask = 0 - (t1[96 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[96 + i] == div); sp_digit hi = t1[96 + i] + mask; r1 = div_3072_word_96(hi, t1[96 + i - 1], div); r1 |= mask; @@ -92369,7 +92369,7 @@ static WC_INLINE int sp_4096_div_128(const sp_digit* a, const sp_digit* d, sp_di r1 = sp_4096_cmp_128(&t1[128], d) >= 0; sp_4096_cond_sub_128(&t1[128], &t1[128], d, (sp_digit)0 - r1); for (i = 127; i >= 0; i--) { - sp_digit mask = 0 - (t1[128 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[128 + i] == div); sp_digit hi = t1[128 + i] + mask; r1 = div_4096_word_128(hi, t1[128 + i - 1], div); r1 |= mask; @@ -105395,7 +105395,7 @@ static WC_INLINE int sp_256_div_8(const sp_digit* a, const sp_digit* d, sp_digit r1 = sp_256_cmp_8(&t1[8], d) >= 0; sp_256_cond_sub_8(&t1[8], &t1[8], d, (sp_digit)0 - r1); for (i = 7; i >= 0; i--) { - sp_digit mask = 0 - (t1[8 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[8 + i] == div); sp_digit hi = t1[8 + i] + mask; r1 = div_256_word_8(hi, t1[8 + i - 1], div); r1 |= mask; @@ -116161,7 +116161,7 @@ static WC_INLINE int sp_384_div_12(const sp_digit* a, const sp_digit* d, sp_digi r1 = sp_384_cmp_12(&t1[12], d) >= 0; sp_384_cond_sub_12(&t1[12], &t1[12], d, (sp_digit)0 - r1); for (i = 11; i >= 0; i--) { - sp_digit mask = 0 - (t1[12 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[12 + i] == div); sp_digit hi = t1[12 + i] + mask; r1 = div_384_word_12(hi, t1[12 + i - 1], div); r1 |= mask; @@ -202265,7 +202265,7 @@ static WC_INLINE int sp_1024_div_32(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_1024_cmp_32(&t1[32], d) >= 0; sp_1024_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1); for (i = 31; i >= 0; i--) { - sp_digit mask = 0 - (t1[32 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div); sp_digit hi = t1[32 + i] + mask; r1 = div_1024_word_32(hi, t1[32 + i - 1], div); r1 |= mask; diff --git a/wolfcrypt/src/sp_cortexm.c b/wolfcrypt/src/sp_cortexm.c index a738d9262..0f84995ce 100644 --- a/wolfcrypt/src/sp_cortexm.c +++ b/wolfcrypt/src/sp_cortexm.c @@ -3378,7 +3378,7 @@ static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_2048_cmp_32(&t1[32], d) >= 0; sp_2048_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1); for (i = 31; i >= 0; i--) { - sp_digit mask = 0 - (t1[32 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div); sp_digit hi = t1[32 + i] + mask; r1 = div_2048_word_32(hi, t1[32 + i - 1], div); r1 |= mask; @@ -4374,7 +4374,7 @@ static WC_INLINE int sp_2048_div_64(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_2048_cmp_64(&t1[64], d) >= 0; sp_2048_cond_sub_64(&t1[64], &t1[64], d, (sp_digit)0 - r1); for (i = 63; i >= 0; i--) { - sp_digit mask = 0 - (t1[64 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[64 + i] == div); sp_digit hi = t1[64 + i] + mask; r1 = div_2048_word_64(hi, t1[64 + i - 1], div); r1 |= mask; @@ -8908,7 +8908,7 @@ static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_3072_cmp_48(&t1[48], d) >= 0; sp_3072_cond_sub_48(&t1[48], &t1[48], d, (sp_digit)0 - r1); for (i = 47; i >= 0; i--) { - sp_digit mask = 0 - (t1[48 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[48 + i] == div); sp_digit hi = t1[48 + i] + mask; r1 = div_3072_word_48(hi, t1[48 + i - 1], div); r1 |= mask; @@ -9988,7 +9988,7 @@ static WC_INLINE int sp_3072_div_96(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_3072_cmp_96(&t1[96], d) >= 0; sp_3072_cond_sub_96(&t1[96], &t1[96], d, (sp_digit)0 - r1); for (i = 95; i >= 0; i--) { - sp_digit mask = 0 - (t1[96 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[96 + i] == div); sp_digit hi = t1[96 + i] + mask; r1 = div_3072_word_96(hi, t1[96 + i - 1], div); r1 |= mask; @@ -13779,7 +13779,7 @@ static WC_INLINE int sp_4096_div_128(const sp_digit* a, const sp_digit* d, sp_di r1 = sp_4096_cmp_128(&t1[128], d) >= 0; sp_4096_cond_sub_128(&t1[128], &t1[128], d, (sp_digit)0 - r1); for (i = 127; i >= 0; i--) { - sp_digit mask = 0 - (t1[128 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[128 + i] == div); sp_digit hi = t1[128 + i] + mask; r1 = div_4096_word_128(hi, t1[128 + i - 1], div); r1 |= mask; @@ -23278,7 +23278,7 @@ static WC_INLINE int sp_256_div_8(const sp_digit* a, const sp_digit* d, sp_digit r1 = sp_256_cmp_8(&t1[8], d) >= 0; sp_256_cond_sub_8(&t1[8], &t1[8], d, (sp_digit)0 - r1); for (i = 7; i >= 0; i--) { - sp_digit mask = 0 - (t1[8 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[8 + i] == div); sp_digit hi = t1[8 + i] + mask; r1 = div_256_word_8(hi, t1[8 + i - 1], div); r1 |= mask; @@ -30600,7 +30600,7 @@ static WC_INLINE int sp_384_div_12(const sp_digit* a, const sp_digit* d, sp_digi r1 = sp_384_cmp_12(&t1[12], d) >= 0; sp_384_cond_sub_12(&t1[12], &t1[12], d, (sp_digit)0 - r1); for (i = 11; i >= 0; i--) { - sp_digit mask = 0 - (t1[12 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[12 + i] == div); sp_digit hi = t1[12 + i] + mask; r1 = div_384_word_12(hi, t1[12 + i - 1], div); r1 |= mask; @@ -42691,7 +42691,7 @@ static WC_INLINE int sp_1024_div_32(const sp_digit* a, const sp_digit* d, sp_dig r1 = sp_1024_cmp_32(&t1[32], d) >= 0; sp_1024_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1); for (i = 31; i >= 0; i--) { - sp_digit mask = 0 - (t1[32 + i] == div); + volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div); sp_digit hi = t1[32 + i] + mask; r1 = div_1024_word_32(hi, t1[32 + i - 1], div); r1 |= mask;