Skip to content

Commit b744111

Browse files
kjbraceyadbridge
authored andcommitted
Remove unnecessary casts
The volatile qualifier on the __LDREX/__STREX prototypes only means that it's safe to use them on volatile objects. Doesn't mean you actually have to pass them volatile pointers. Adding the volatile is a bit like doing strlen((const char *) ptr) because you've got a non-const pointer.
1 parent 1a2b41c commit b744111

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

platform/mbed_critical.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -119,67 +119,67 @@ void core_util_critical_section_exit(void)
119119
bool core_util_atomic_cas_u8(uint8_t *ptr, uint8_t *expectedCurrentValue, uint8_t desiredValue)
120120
{
121121
do {
122-
uint8_t currentValue = __LDREXB((volatile uint8_t*)ptr);
122+
uint8_t currentValue = __LDREXB(ptr);
123123
if (currentValue != *expectedCurrentValue) {
124124
*expectedCurrentValue = currentValue;
125125
__CLREX();
126126
return false;
127127
}
128-
} while (__STREXB(desiredValue, (volatile uint8_t*)ptr));
128+
} while (__STREXB(desiredValue, ptr));
129129
return true;
130130
}
131131

132132
bool core_util_atomic_cas_u16(uint16_t *ptr, uint16_t *expectedCurrentValue, uint16_t desiredValue)
133133
{
134134
do {
135-
uint16_t currentValue = __LDREXH((volatile uint16_t*)ptr);
135+
uint16_t currentValue = __LDREXH(ptr);
136136
if (currentValue != *expectedCurrentValue) {
137137
*expectedCurrentValue = currentValue;
138138
__CLREX();
139139
return false;
140140
}
141-
} while (__STREXH(desiredValue, (volatile uint16_t*)ptr));
141+
} while (__STREXH(desiredValue, ptr));
142142
return true;
143143
}
144144

145145

146146
bool core_util_atomic_cas_u32(uint32_t *ptr, uint32_t *expectedCurrentValue, uint32_t desiredValue)
147147
{
148148
do {
149-
uint32_t currentValue = __LDREXW((volatile uint32_t*)ptr);
149+
uint32_t currentValue = __LDREXW(ptr);
150150
if (currentValue != *expectedCurrentValue) {
151151
*expectedCurrentValue = currentValue;
152152
__CLREX();
153153
return false;
154154
}
155-
} while (__STREXW(desiredValue, (volatile uint32_t*)ptr));
155+
} while (__STREXW(desiredValue, ptr));
156156
return true;
157157
}
158158

159159
uint8_t core_util_atomic_incr_u8(uint8_t *valuePtr, uint8_t delta)
160160
{
161161
uint8_t newValue;
162162
do {
163-
newValue = __LDREXB((volatile uint8_t*)valuePtr) + delta;
164-
} while (__STREXB(newValue, (volatile uint8_t*)valuePtr));
163+
newValue = __LDREXB(valuePtr) + delta;
164+
} while (__STREXB(newValue, valuePtr));
165165
return newValue;
166166
}
167167

168168
uint16_t core_util_atomic_incr_u16(uint16_t *valuePtr, uint16_t delta)
169169
{
170170
uint16_t newValue;
171171
do {
172-
newValue = __LDREXH((volatile uint16_t*)valuePtr) + delta;
173-
} while (__STREXH(newValue, (volatile uint16_t*)valuePtr));
172+
newValue = __LDREXH(valuePtr) + delta;
173+
} while (__STREXH(newValue, valuePtr));
174174
return newValue;
175175
}
176176

177177
uint32_t core_util_atomic_incr_u32(uint32_t *valuePtr, uint32_t delta)
178178
{
179179
uint32_t newValue;
180180
do {
181-
newValue = __LDREXW((volatile uint32_t*)valuePtr) + delta;
182-
} while (__STREXW(newValue, (volatile uint32_t*)valuePtr));
181+
newValue = __LDREXW(valuePtr) + delta;
182+
} while (__STREXW(newValue, valuePtr));
183183
return newValue;
184184
}
185185

@@ -188,26 +188,26 @@ uint8_t core_util_atomic_decr_u8(uint8_t *valuePtr, uint8_t delta)
188188
{
189189
uint8_t newValue;
190190
do {
191-
newValue = __LDREXB((volatile uint8_t*)valuePtr) - delta;
192-
} while (__STREXB(newValue, (volatile uint8_t*)valuePtr));
191+
newValue = __LDREXB(valuePtr) - delta;
192+
} while (__STREXB(newValue, valuePtr));
193193
return newValue;
194194
}
195195

196196
uint16_t core_util_atomic_decr_u16(uint16_t *valuePtr, uint16_t delta)
197197
{
198198
uint16_t newValue;
199199
do {
200-
newValue = __LDREXH((volatile uint16_t*)valuePtr) - delta;
201-
} while (__STREXH(newValue, (volatile uint16_t*)valuePtr));
200+
newValue = __LDREXH(valuePtr) - delta;
201+
} while (__STREXH(newValue, valuePtr));
202202
return newValue;
203203
}
204204

205205
uint32_t core_util_atomic_decr_u32(uint32_t *valuePtr, uint32_t delta)
206206
{
207207
uint32_t newValue;
208208
do {
209-
newValue = __LDREXW((volatile uint32_t*)valuePtr) - delta;
210-
} while (__STREXW(newValue, (volatile uint32_t*)valuePtr));
209+
newValue = __LDREXW(valuePtr) - delta;
210+
} while (__STREXW(newValue, valuePtr));
211211
return newValue;
212212
}
213213

0 commit comments

Comments
 (0)