Skip to content

Commit 99d60a0

Browse files
committed
SP; Mac M1 failure fix
Give the compiler a hint that mask needs special attention.
1 parent e867f0d commit 99d60a0

4 files changed

Lines changed: 32 additions & 32 deletions

File tree

wolfcrypt/src/sp_arm32.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11810,7 +11810,7 @@ static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_dig
1181011810
r1 = sp_2048_cmp_32(&t1[32], d) >= 0;
1181111811
sp_2048_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1);
1181211812
for (i = 31; i >= 0; i--) {
11813-
sp_digit mask = 0 - (t1[32 + i] == div);
11813+
volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div);
1181411814
sp_digit hi = t1[32 + i] + mask;
1181511815
r1 = div_2048_word_32(hi, t1[32 + i - 1], div);
1181611816
r1 |= mask;
@@ -16009,7 +16009,7 @@ static WC_INLINE int sp_2048_div_64(const sp_digit* a, const sp_digit* d, sp_dig
1600916009
r1 = sp_2048_cmp_64(&t1[64], d) >= 0;
1601016010
sp_2048_cond_sub_64(&t1[64], &t1[64], d, (sp_digit)0 - r1);
1601116011
for (i = 63; i >= 0; i--) {
16012-
sp_digit mask = 0 - (t1[64 + i] == div);
16012+
volatile sp_digit mask = (sp_digit)0 - (t1[64 + i] == div);
1601316013
sp_digit hi = t1[64 + i] + mask;
1601416014
r1 = div_2048_word_64(hi, t1[64 + i - 1], div);
1601516015
r1 |= mask;
@@ -36953,7 +36953,7 @@ static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_dig
3695336953
r1 = sp_3072_cmp_48(&t1[48], d) >= 0;
3695436954
sp_3072_cond_sub_48(&t1[48], &t1[48], d, (sp_digit)0 - r1);
3695536955
for (i = 47; i >= 0; i--) {
36956-
sp_digit mask = 0 - (t1[48 + i] == div);
36956+
volatile sp_digit mask = (sp_digit)0 - (t1[48 + i] == div);
3695736957
sp_digit hi = t1[48 + i] + mask;
3695836958
r1 = div_3072_word_48(hi, t1[48 + i - 1], div);
3695936959
r1 |= mask;
@@ -42798,7 +42798,7 @@ static WC_INLINE int sp_3072_div_96(const sp_digit* a, const sp_digit* d, sp_dig
4279842798
r1 = sp_3072_cmp_96(&t1[96], d) >= 0;
4279942799
sp_3072_cond_sub_96(&t1[96], &t1[96], d, (sp_digit)0 - r1);
4280042800
for (i = 95; i >= 0; i--) {
42801-
sp_digit mask = 0 - (t1[96 + i] == div);
42801+
volatile sp_digit mask = (sp_digit)0 - (t1[96 + i] == div);
4280242802
sp_digit hi = t1[96 + i] + mask;
4280342803
r1 = div_3072_word_96(hi, t1[96 + i - 1], div);
4280442804
r1 |= mask;
@@ -58046,7 +58046,7 @@ static WC_INLINE int sp_4096_div_128(const sp_digit* a, const sp_digit* d, sp_di
5804658046
r1 = sp_4096_cmp_128(&t1[128], d) >= 0;
5804758047
sp_4096_cond_sub_128(&t1[128], &t1[128], d, (sp_digit)0 - r1);
5804858048
for (i = 127; i >= 0; i--) {
58049-
sp_digit mask = 0 - (t1[128 + i] == div);
58049+
volatile sp_digit mask = (sp_digit)0 - (t1[128 + i] == div);
5805058050
sp_digit hi = t1[128 + i] + mask;
5805158051
r1 = div_4096_word_128(hi, t1[128 + i - 1], div);
5805258052
r1 |= mask;
@@ -74919,7 +74919,7 @@ static WC_INLINE int sp_256_div_8(const sp_digit* a, const sp_digit* d, sp_digit
7491974919
r1 = sp_256_cmp_8(&t1[8], d) >= 0;
7492074920
sp_256_cond_sub_8(&t1[8], &t1[8], d, (sp_digit)0 - r1);
7492174921
for (i = 7; i >= 0; i--) {
74922-
sp_digit mask = 0 - (t1[8 + i] == div);
74922+
volatile sp_digit mask = (sp_digit)0 - (t1[8 + i] == div);
7492374923
sp_digit hi = t1[8 + i] + mask;
7492474924
r1 = div_256_word_8(hi, t1[8 + i - 1], div);
7492574925
r1 |= mask;
@@ -92413,7 +92413,7 @@ static WC_INLINE int sp_384_div_12(const sp_digit* a, const sp_digit* d, sp_digi
9241392413
r1 = sp_384_cmp_12(&t1[12], d) >= 0;
9241492414
sp_384_cond_sub_12(&t1[12], &t1[12], d, (sp_digit)0 - r1);
9241592415
for (i = 11; i >= 0; i--) {
92416-
sp_digit mask = 0 - (t1[12 + i] == div);
92416+
volatile sp_digit mask = (sp_digit)0 - (t1[12 + i] == div);
9241792417
sp_digit hi = t1[12 + i] + mask;
9241892418
r1 = div_384_word_12(hi, t1[12 + i - 1], div);
9241992419
r1 |= mask;
@@ -141159,7 +141159,7 @@ static WC_INLINE int sp_1024_div_32(const sp_digit* a, const sp_digit* d, sp_dig
141159141159
r1 = sp_1024_cmp_32(&t1[32], d) >= 0;
141160141160
sp_1024_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1);
141161141161
for (i = 31; i >= 0; i--) {
141162-
sp_digit mask = 0 - (t1[32 + i] == div);
141162+
volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div);
141163141163
sp_digit hi = t1[32 + i] + mask;
141164141164
r1 = div_1024_word_32(hi, t1[32 + i - 1], div);
141165141165
r1 |= mask;

wolfcrypt/src/sp_arm64.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3940,7 +3940,7 @@ static WC_INLINE int sp_2048_div_16(const sp_digit* a, const sp_digit* d, sp_dig
39403940
r1 = sp_2048_cmp_16(&t1[16], d) >= 0;
39413941
sp_2048_cond_sub_16(&t1[16], &t1[16], d, (sp_digit)0 - r1);
39423942
for (i = 15; i >= 0; i--) {
3943-
sp_digit mask = 0 - (t1[16 + i] == div);
3943+
volatile sp_digit mask = (sp_digit)0 - (t1[16 + i] == div);
39443944
sp_digit hi = t1[16 + i] + mask;
39453945
r1 = div_2048_word_16(hi, t1[16 + i - 1], div);
39463946
r1 |= mask;
@@ -5547,7 +5547,7 @@ static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_dig
55475547
r1 = sp_2048_cmp_32(&t1[32], d) >= 0;
55485548
sp_2048_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1);
55495549
for (i = 31; i >= 0; i--) {
5550-
sp_digit mask = 0 - (t1[32 + i] == div);
5550+
volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div);
55515551
sp_digit hi = t1[32 + i] + mask;
55525552
r1 = div_2048_word_32(hi, t1[32 + i - 1], div);
55535553
r1 |= mask;
@@ -13095,7 +13095,7 @@ static WC_INLINE int sp_3072_div_24(const sp_digit* a, const sp_digit* d, sp_dig
1309513095
r1 = sp_3072_cmp_24(&t1[24], d) >= 0;
1309613096
sp_3072_cond_sub_24(&t1[24], &t1[24], d, (sp_digit)0 - r1);
1309713097
for (i = 23; i >= 0; i--) {
13098-
sp_digit mask = 0 - (t1[24 + i] == div);
13098+
volatile sp_digit mask = (sp_digit)0 - (t1[24 + i] == div);
1309913099
sp_digit hi = t1[24 + i] + mask;
1310013100
r1 = div_3072_word_24(hi, t1[24 + i - 1], div);
1310113101
r1 |= mask;
@@ -15094,7 +15094,7 @@ static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_dig
1509415094
r1 = sp_3072_cmp_48(&t1[48], d) >= 0;
1509515095
sp_3072_cond_sub_48(&t1[48], &t1[48], d, (sp_digit)0 - r1);
1509615096
for (i = 47; i >= 0; i--) {
15097-
sp_digit mask = 0 - (t1[48 + i] == div);
15097+
volatile sp_digit mask = (sp_digit)0 - (t1[48 + i] == div);
1509815098
sp_digit hi = t1[48 + i] + mask;
1509915099
r1 = div_3072_word_48(hi, t1[48 + i - 1], div);
1510015100
r1 |= mask;
@@ -20169,7 +20169,7 @@ static WC_INLINE int sp_4096_div_64(const sp_digit* a, const sp_digit* d, sp_dig
2016920169
r1 = sp_4096_cmp_64(&t1[64], d) >= 0;
2017020170
sp_4096_cond_sub_64(&t1[64], &t1[64], d, (sp_digit)0 - r1);
2017120171
for (i = 63; i >= 0; i--) {
20172-
sp_digit mask = 0 - (t1[64 + i] == div);
20172+
volatile sp_digit mask = (sp_digit)0 - (t1[64 + i] == div);
2017320173
sp_digit hi = t1[64 + i] + mask;
2017420174
r1 = div_4096_word_64(hi, t1[64 + i - 1], div);
2017520175
r1 |= mask;
@@ -40041,7 +40041,7 @@ static WC_INLINE int sp_256_div_4(const sp_digit* a, const sp_digit* d, sp_digit
4004140041
r1 = sp_256_cmp_4(&t1[4], d) >= 0;
4004240042
sp_256_cond_sub_4(&t1[4], &t1[4], d, (sp_digit)0 - r1);
4004340043
for (i = 3; i >= 0; i--) {
40044-
sp_digit mask = 0 - (t1[4 + i] == div);
40044+
volatile sp_digit mask = (sp_digit)0 - (t1[4 + i] == div);
4004540045
sp_digit hi = t1[4 + i] + mask;
4004640046
r1 = div_256_word_4(hi, t1[4 + i - 1], div);
4004740047
r1 |= mask;
@@ -66122,7 +66122,7 @@ static WC_INLINE int sp_384_div_6(const sp_digit* a, const sp_digit* d, sp_digit
6612266122
r1 = sp_384_cmp_6(&t1[6], d) >= 0;
6612366123
sp_384_cond_sub_6(&t1[6], &t1[6], d, (sp_digit)0 - r1);
6612466124
for (i = 5; i >= 0; i--) {
66125-
sp_digit mask = 0 - (t1[6 + i] == div);
66125+
volatile sp_digit mask = (sp_digit)0 - (t1[6 + i] == div);
6612666126
sp_digit hi = t1[6 + i] + mask;
6612766127
r1 = div_384_word_6(hi, t1[6 + i - 1], div);
6612866128
r1 |= mask;
@@ -114358,7 +114358,7 @@ static WC_INLINE int sp_1024_div_16(const sp_digit* a, const sp_digit* d, sp_dig
114358114358
r1 = sp_1024_cmp_16(&t1[16], d) >= 0;
114359114359
sp_1024_cond_sub_16(&t1[16], &t1[16], d, (sp_digit)0 - r1);
114360114360
for (i = 15; i >= 0; i--) {
114361-
sp_digit mask = 0 - (t1[16 + i] == div);
114361+
volatile sp_digit mask = (sp_digit)0 - (t1[16 + i] == div);
114362114362
sp_digit hi = t1[16 + i] + mask;
114363114363
r1 = div_1024_word_16(hi, t1[16 + i - 1], div);
114364114364
r1 |= mask;

wolfcrypt/src/sp_armthumb.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23943,7 +23943,7 @@ static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_dig
2394323943
r1 = sp_2048_cmp_32(&t1[32], d) >= 0;
2394423944
sp_2048_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1);
2394523945
for (i = 31; i >= 0; i--) {
23946-
sp_digit mask = 0 - (t1[32 + i] == div);
23946+
volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div);
2394723947
sp_digit hi = t1[32 + i] + mask;
2394823948
r1 = div_2048_word_32(hi, t1[32 + i - 1], div);
2394923949
r1 |= mask;
@@ -27530,7 +27530,7 @@ static WC_INLINE int sp_2048_div_64(const sp_digit* a, const sp_digit* d, sp_dig
2753027530
r1 = sp_2048_cmp_64(&t1[64], d) >= 0;
2753127531
sp_2048_cond_sub_64(&t1[64], &t1[64], d, (sp_digit)0 - r1);
2753227532
for (i = 63; i >= 0; i--) {
27533-
sp_digit mask = 0 - (t1[64 + i] == div);
27533+
volatile sp_digit mask = (sp_digit)0 - (t1[64 + i] == div);
2753427534
sp_digit hi = t1[64 + i] + mask;
2753527535
r1 = div_2048_word_64(hi, t1[64 + i - 1], div);
2753627536
r1 |= mask;
@@ -75403,7 +75403,7 @@ static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_dig
7540375403
r1 = sp_3072_cmp_48(&t1[48], d) >= 0;
7540475404
sp_3072_cond_sub_48(&t1[48], &t1[48], d, (sp_digit)0 - r1);
7540575405
for (i = 47; i >= 0; i--) {
75406-
sp_digit mask = 0 - (t1[48 + i] == div);
75406+
volatile sp_digit mask = (sp_digit)0 - (t1[48 + i] == div);
7540775407
sp_digit hi = t1[48 + i] + mask;
7540875408
r1 = div_3072_word_48(hi, t1[48 + i - 1], div);
7540975409
r1 |= mask;
@@ -79821,7 +79821,7 @@ static WC_INLINE int sp_3072_div_96(const sp_digit* a, const sp_digit* d, sp_dig
7982179821
r1 = sp_3072_cmp_96(&t1[96], d) >= 0;
7982279822
sp_3072_cond_sub_96(&t1[96], &t1[96], d, (sp_digit)0 - r1);
7982379823
for (i = 95; i >= 0; i--) {
79824-
sp_digit mask = 0 - (t1[96 + i] == div);
79824+
volatile sp_digit mask = (sp_digit)0 - (t1[96 + i] == div);
7982579825
sp_digit hi = t1[96 + i] + mask;
7982679826
r1 = div_3072_word_96(hi, t1[96 + i - 1], div);
7982779827
r1 |= mask;
@@ -92369,7 +92369,7 @@ static WC_INLINE int sp_4096_div_128(const sp_digit* a, const sp_digit* d, sp_di
9236992369
r1 = sp_4096_cmp_128(&t1[128], d) >= 0;
9237092370
sp_4096_cond_sub_128(&t1[128], &t1[128], d, (sp_digit)0 - r1);
9237192371
for (i = 127; i >= 0; i--) {
92372-
sp_digit mask = 0 - (t1[128 + i] == div);
92372+
volatile sp_digit mask = (sp_digit)0 - (t1[128 + i] == div);
9237392373
sp_digit hi = t1[128 + i] + mask;
9237492374
r1 = div_4096_word_128(hi, t1[128 + i - 1], div);
9237592375
r1 |= mask;
@@ -105395,7 +105395,7 @@ static WC_INLINE int sp_256_div_8(const sp_digit* a, const sp_digit* d, sp_digit
105395105395
r1 = sp_256_cmp_8(&t1[8], d) >= 0;
105396105396
sp_256_cond_sub_8(&t1[8], &t1[8], d, (sp_digit)0 - r1);
105397105397
for (i = 7; i >= 0; i--) {
105398-
sp_digit mask = 0 - (t1[8 + i] == div);
105398+
volatile sp_digit mask = (sp_digit)0 - (t1[8 + i] == div);
105399105399
sp_digit hi = t1[8 + i] + mask;
105400105400
r1 = div_256_word_8(hi, t1[8 + i - 1], div);
105401105401
r1 |= mask;
@@ -116161,7 +116161,7 @@ static WC_INLINE int sp_384_div_12(const sp_digit* a, const sp_digit* d, sp_digi
116161116161
r1 = sp_384_cmp_12(&t1[12], d) >= 0;
116162116162
sp_384_cond_sub_12(&t1[12], &t1[12], d, (sp_digit)0 - r1);
116163116163
for (i = 11; i >= 0; i--) {
116164-
sp_digit mask = 0 - (t1[12 + i] == div);
116164+
volatile sp_digit mask = (sp_digit)0 - (t1[12 + i] == div);
116165116165
sp_digit hi = t1[12 + i] + mask;
116166116166
r1 = div_384_word_12(hi, t1[12 + i - 1], div);
116167116167
r1 |= mask;
@@ -202265,7 +202265,7 @@ static WC_INLINE int sp_1024_div_32(const sp_digit* a, const sp_digit* d, sp_dig
202265202265
r1 = sp_1024_cmp_32(&t1[32], d) >= 0;
202266202266
sp_1024_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1);
202267202267
for (i = 31; i >= 0; i--) {
202268-
sp_digit mask = 0 - (t1[32 + i] == div);
202268+
volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div);
202269202269
sp_digit hi = t1[32 + i] + mask;
202270202270
r1 = div_1024_word_32(hi, t1[32 + i - 1], div);
202271202271
r1 |= mask;

wolfcrypt/src/sp_cortexm.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3378,7 +3378,7 @@ static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_dig
33783378
r1 = sp_2048_cmp_32(&t1[32], d) >= 0;
33793379
sp_2048_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1);
33803380
for (i = 31; i >= 0; i--) {
3381-
sp_digit mask = 0 - (t1[32 + i] == div);
3381+
volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div);
33823382
sp_digit hi = t1[32 + i] + mask;
33833383
r1 = div_2048_word_32(hi, t1[32 + i - 1], div);
33843384
r1 |= mask;
@@ -4374,7 +4374,7 @@ static WC_INLINE int sp_2048_div_64(const sp_digit* a, const sp_digit* d, sp_dig
43744374
r1 = sp_2048_cmp_64(&t1[64], d) >= 0;
43754375
sp_2048_cond_sub_64(&t1[64], &t1[64], d, (sp_digit)0 - r1);
43764376
for (i = 63; i >= 0; i--) {
4377-
sp_digit mask = 0 - (t1[64 + i] == div);
4377+
volatile sp_digit mask = (sp_digit)0 - (t1[64 + i] == div);
43784378
sp_digit hi = t1[64 + i] + mask;
43794379
r1 = div_2048_word_64(hi, t1[64 + i - 1], div);
43804380
r1 |= mask;
@@ -8908,7 +8908,7 @@ static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_dig
89088908
r1 = sp_3072_cmp_48(&t1[48], d) >= 0;
89098909
sp_3072_cond_sub_48(&t1[48], &t1[48], d, (sp_digit)0 - r1);
89108910
for (i = 47; i >= 0; i--) {
8911-
sp_digit mask = 0 - (t1[48 + i] == div);
8911+
volatile sp_digit mask = (sp_digit)0 - (t1[48 + i] == div);
89128912
sp_digit hi = t1[48 + i] + mask;
89138913
r1 = div_3072_word_48(hi, t1[48 + i - 1], div);
89148914
r1 |= mask;
@@ -9988,7 +9988,7 @@ static WC_INLINE int sp_3072_div_96(const sp_digit* a, const sp_digit* d, sp_dig
99889988
r1 = sp_3072_cmp_96(&t1[96], d) >= 0;
99899989
sp_3072_cond_sub_96(&t1[96], &t1[96], d, (sp_digit)0 - r1);
99909990
for (i = 95; i >= 0; i--) {
9991-
sp_digit mask = 0 - (t1[96 + i] == div);
9991+
volatile sp_digit mask = (sp_digit)0 - (t1[96 + i] == div);
99929992
sp_digit hi = t1[96 + i] + mask;
99939993
r1 = div_3072_word_96(hi, t1[96 + i - 1], div);
99949994
r1 |= mask;
@@ -13779,7 +13779,7 @@ static WC_INLINE int sp_4096_div_128(const sp_digit* a, const sp_digit* d, sp_di
1377913779
r1 = sp_4096_cmp_128(&t1[128], d) >= 0;
1378013780
sp_4096_cond_sub_128(&t1[128], &t1[128], d, (sp_digit)0 - r1);
1378113781
for (i = 127; i >= 0; i--) {
13782-
sp_digit mask = 0 - (t1[128 + i] == div);
13782+
volatile sp_digit mask = (sp_digit)0 - (t1[128 + i] == div);
1378313783
sp_digit hi = t1[128 + i] + mask;
1378413784
r1 = div_4096_word_128(hi, t1[128 + i - 1], div);
1378513785
r1 |= mask;
@@ -23278,7 +23278,7 @@ static WC_INLINE int sp_256_div_8(const sp_digit* a, const sp_digit* d, sp_digit
2327823278
r1 = sp_256_cmp_8(&t1[8], d) >= 0;
2327923279
sp_256_cond_sub_8(&t1[8], &t1[8], d, (sp_digit)0 - r1);
2328023280
for (i = 7; i >= 0; i--) {
23281-
sp_digit mask = 0 - (t1[8 + i] == div);
23281+
volatile sp_digit mask = (sp_digit)0 - (t1[8 + i] == div);
2328223282
sp_digit hi = t1[8 + i] + mask;
2328323283
r1 = div_256_word_8(hi, t1[8 + i - 1], div);
2328423284
r1 |= mask;
@@ -30600,7 +30600,7 @@ static WC_INLINE int sp_384_div_12(const sp_digit* a, const sp_digit* d, sp_digi
3060030600
r1 = sp_384_cmp_12(&t1[12], d) >= 0;
3060130601
sp_384_cond_sub_12(&t1[12], &t1[12], d, (sp_digit)0 - r1);
3060230602
for (i = 11; i >= 0; i--) {
30603-
sp_digit mask = 0 - (t1[12 + i] == div);
30603+
volatile sp_digit mask = (sp_digit)0 - (t1[12 + i] == div);
3060430604
sp_digit hi = t1[12 + i] + mask;
3060530605
r1 = div_384_word_12(hi, t1[12 + i - 1], div);
3060630606
r1 |= mask;
@@ -42691,7 +42691,7 @@ static WC_INLINE int sp_1024_div_32(const sp_digit* a, const sp_digit* d, sp_dig
4269142691
r1 = sp_1024_cmp_32(&t1[32], d) >= 0;
4269242692
sp_1024_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1);
4269342693
for (i = 31; i >= 0; i--) {
42694-
sp_digit mask = 0 - (t1[32 + i] == div);
42694+
volatile sp_digit mask = (sp_digit)0 - (t1[32 + i] == div);
4269542695
sp_digit hi = t1[32 + i] + mask;
4269642696
r1 = div_1024_word_32(hi, t1[32 + i - 1], div);
4269742697
r1 |= mask;

0 commit comments

Comments
 (0)