Skip to content

Commit e41d017

Browse files
authored
Merge pull request #10594 from kjbracey-arm/atomic_armc5_fix
ARMC5: fix mbed_atomic_impl.h assembly
2 parents 344ad43 + c799dc3 commit e41d017

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

platform/internal/mbed_atomic_impl.h

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,10 @@ extern "C" {
100100
// inlining. ARM C 5 is being retired anyway.
101101

102102
#ifdef __CC_ARM
103+
#pragma diag_suppress 3732
103104
#define DO_MBED_LOCKFREE_EXCHG_ASM(M) \
104105
__asm { \
105-
LDREX##M oldValue, [valuePtr] \
106+
LDREX##M oldValue, [valuePtr] ; \
106107
STREX##M fail, newValue, [valuePtr] \
107108
}
108109
#elif defined __clang__ || defined __GNUC__
@@ -133,8 +134,8 @@ extern "C" {
133134
#ifdef __CC_ARM
134135
#define DO_MBED_LOCKFREE_3OP_ASM(OP, Constants, M) \
135136
__asm { \
136-
LDREX##M oldValue, [valuePtr] \
137-
OP newValue, oldValue, arg \
137+
LDREX##M oldValue, [valuePtr] ; \
138+
OP newValue, oldValue, arg ; \
138139
STREX##M fail, newValue, [valuePtr] \
139140
}
140141
#elif defined __clang__ || defined __GNUC__
@@ -172,9 +173,9 @@ extern "C" {
172173
#ifdef __CC_ARM
173174
#define DO_MBED_LOCKFREE_2OP_ASM(OP, Constants, M) \
174175
__asm { \
175-
LDREX##M oldValue, [valuePtr] \
176-
MOV newValue, oldValue \
177-
OP newValue, arg \
176+
LDREX##M oldValue, [valuePtr] ; \
177+
MOV newValue, oldValue ; \
178+
OP newValue, arg ; \
178179
STREX##M fail, newValue, [valuePtr] \
179180
}
180181
#elif defined __clang__ || defined __GNUC__
@@ -216,8 +217,8 @@ extern "C" {
216217
#ifdef __CC_ARM
217218
#define DO_MBED_LOCKFREE_CAS_WEAK_ASM(M) \
218219
__asm { \
219-
LDREX##M oldValue, [ptr] \
220-
SUBS fail, oldValue, expectedValue \
220+
LDREX##M oldValue, [ptr] ; \
221+
SUBS fail, oldValue, expectedValue ; \
221222
STREX##M##EQ fail, desiredValue, [ptr] \
222223
}
223224
#elif defined __clang__ || defined __GNUC__
@@ -251,10 +252,10 @@ extern "C" {
251252
#ifdef __CC_ARM
252253
#define DO_MBED_LOCKFREE_CAS_WEAK_ASM(M) \
253254
__asm { \
254-
LDREX##M oldValue, [ptr] \
255-
SUBS fail, oldValue, expectedValue \
256-
BNE done \
257-
STREX##M fail, desiredValue, [ptr] \
255+
LDREX##M oldValue, [ptr] ; \
256+
SUBS fail, oldValue, expectedValue ; \
257+
BNE done ; \
258+
STREX##M fail, desiredValue, [ptr] ; \
258259
done: \
259260
}
260261
#elif defined __clang__ || defined __GNUC__
@@ -298,13 +299,13 @@ done: \
298299
#ifdef __CC_ARM
299300
#define DO_MBED_LOCKFREE_CAS_STRONG_ASM(M) \
300301
__asm { \
301-
retry: \
302-
LDREX##M oldValue, [ptr] \
303-
SUBS fail, oldValue, expectedValue \
304-
BNE done \
305-
STREX##M fail, desiredValue, [ptr] \
306-
CMP fail, #0 \
307-
BNE retry \
302+
retry: ; \
303+
LDREX##M oldValue, [ptr] ; \
304+
SUBS fail, oldValue, expectedValue ; \
305+
BNE done ; \
306+
STREX##M fail, desiredValue, [ptr] ; \
307+
CMP fail, 0 ; \
308+
BNE retry ; \
308309
done: \
309310
}
310311
#elif defined __clang__ || defined __GNUC__

0 commit comments

Comments
 (0)