Skip to content

Commit 643d697

Browse files
committed
xtensa: use named assembly arguments in atomic.h
Numeric assembly arguments are hard to understand and assembly code that uses them is hard to modify. Use named arguments in ATOMIC_OP, ATOMIC_OP_RETURN and ATOMIC_FETCH_OP macros. Signed-off-by: Max Filippov <[email protected]>
1 parent 5bf6709 commit 643d697

File tree

1 file changed

+60
-60
lines changed

1 file changed

+60
-60
lines changed

arch/xtensa/include/asm/atomic.h

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,13 @@ static inline void atomic_##op(int i, atomic_t *v) \
6464
int result; \
6565
\
6666
__asm__ __volatile__( \
67-
"1: l32ex %1, %3\n" \
68-
" " #op " %0, %1, %2\n" \
69-
" s32ex %0, %3\n" \
70-
" getex %0\n" \
71-
" beqz %0, 1b\n" \
72-
: "=&a" (result), "=&a" (tmp) \
73-
: "a" (i), "a" (v) \
67+
"1: l32ex %[tmp], %[addr]\n" \
68+
" " #op " %[result], %[tmp], %[i]\n" \
69+
" s32ex %[result], %[addr]\n" \
70+
" getex %[result]\n" \
71+
" beqz %[result], 1b\n" \
72+
: [result] "=&a" (result), [tmp] "=&a" (tmp) \
73+
: [i] "a" (i), [addr] "a" (v) \
7474
: "memory" \
7575
); \
7676
} \
@@ -82,14 +82,14 @@ static inline int atomic_##op##_return(int i, atomic_t *v) \
8282
int result; \
8383
\
8484
__asm__ __volatile__( \
85-
"1: l32ex %1, %3\n" \
86-
" " #op " %0, %1, %2\n" \
87-
" s32ex %0, %3\n" \
88-
" getex %0\n" \
89-
" beqz %0, 1b\n" \
90-
" " #op " %0, %1, %2\n" \
91-
: "=&a" (result), "=&a" (tmp) \
92-
: "a" (i), "a" (v) \
85+
"1: l32ex %[tmp], %[addr]\n" \
86+
" " #op " %[result], %[tmp], %[i]\n" \
87+
" s32ex %[result], %[addr]\n" \
88+
" getex %[result]\n" \
89+
" beqz %[result], 1b\n" \
90+
" " #op " %[result], %[tmp], %[i]\n" \
91+
: [result] "=&a" (result), [tmp] "=&a" (tmp) \
92+
: [i] "a" (i), [addr] "a" (v) \
9393
: "memory" \
9494
); \
9595
\
@@ -103,13 +103,13 @@ static inline int atomic_fetch_##op(int i, atomic_t *v) \
103103
int result; \
104104
\
105105
__asm__ __volatile__( \
106-
"1: l32ex %1, %3\n" \
107-
" " #op " %0, %1, %2\n" \
108-
" s32ex %0, %3\n" \
109-
" getex %0\n" \
110-
" beqz %0, 1b\n" \
111-
: "=&a" (result), "=&a" (tmp) \
112-
: "a" (i), "a" (v) \
106+
"1: l32ex %[tmp], %[addr]\n" \
107+
" " #op " %[result], %[tmp], %[i]\n" \
108+
" s32ex %[result], %[addr]\n" \
109+
" getex %[result]\n" \
110+
" beqz %[result], 1b\n" \
111+
: [result] "=&a" (result), [tmp] "=&a" (tmp) \
112+
: [i] "a" (i), [addr] "a" (v) \
113113
: "memory" \
114114
); \
115115
\
@@ -124,13 +124,13 @@ static inline void atomic_##op(int i, atomic_t * v) \
124124
int result; \
125125
\
126126
__asm__ __volatile__( \
127-
"1: l32i %1, %3, 0\n" \
128-
" wsr %1, scompare1\n" \
129-
" " #op " %0, %1, %2\n" \
130-
" s32c1i %0, %3, 0\n" \
131-
" bne %0, %1, 1b\n" \
132-
: "=&a" (result), "=&a" (tmp) \
133-
: "a" (i), "a" (v) \
127+
"1: l32i %[tmp], %[addr], 0\n" \
128+
" wsr %[tmp], scompare1\n" \
129+
" " #op " %[result], %[tmp], %[i]\n" \
130+
" s32c1i %[result], %[addr], 0\n" \
131+
" bne %[result], %[tmp], 1b\n" \
132+
: [result] "=&a" (result), [tmp] "=&a" (tmp) \
133+
: [i] "a" (i), [addr] "a" (v) \
134134
: "memory" \
135135
); \
136136
} \
@@ -142,14 +142,14 @@ static inline int atomic_##op##_return(int i, atomic_t * v) \
142142
int result; \
143143
\
144144
__asm__ __volatile__( \
145-
"1: l32i %1, %3, 0\n" \
146-
" wsr %1, scompare1\n" \
147-
" " #op " %0, %1, %2\n" \
148-
" s32c1i %0, %3, 0\n" \
149-
" bne %0, %1, 1b\n" \
150-
" " #op " %0, %0, %2\n" \
151-
: "=&a" (result), "=&a" (tmp) \
152-
: "a" (i), "a" (v) \
145+
"1: l32i %[tmp], %[addr], 0\n" \
146+
" wsr %[tmp], scompare1\n" \
147+
" " #op " %[result], %[tmp], %[i]\n" \
148+
" s32c1i %[result], %[addr], 0\n" \
149+
" bne %[result], %[tmp], 1b\n" \
150+
" " #op " %[result], %[result], %[i]\n" \
151+
: [result] "=&a" (result), [tmp] "=&a" (tmp) \
152+
: [i] "a" (i), [addr] "a" (v) \
153153
: "memory" \
154154
); \
155155
\
@@ -163,13 +163,13 @@ static inline int atomic_fetch_##op(int i, atomic_t * v) \
163163
int result; \
164164
\
165165
__asm__ __volatile__( \
166-
"1: l32i %1, %3, 0\n" \
167-
" wsr %1, scompare1\n" \
168-
" " #op " %0, %1, %2\n" \
169-
" s32c1i %0, %3, 0\n" \
170-
" bne %0, %1, 1b\n" \
171-
: "=&a" (result), "=&a" (tmp) \
172-
: "a" (i), "a" (v) \
166+
"1: l32i %[tmp], %[addr], 0\n" \
167+
" wsr %[tmp], scompare1\n" \
168+
" " #op " %[result], %[tmp], %[i]\n" \
169+
" s32c1i %[result], %[addr], 0\n" \
170+
" bne %[result], %[tmp], 1b\n" \
171+
: [result] "=&a" (result), [tmp] "=&a" (tmp) \
172+
: [i] "a" (i), [addr] "a" (v) \
173173
: "memory" \
174174
); \
175175
\
@@ -184,14 +184,14 @@ static inline void atomic_##op(int i, atomic_t * v) \
184184
unsigned int vval; \
185185
\
186186
__asm__ __volatile__( \
187-
" rsil a15, "__stringify(TOPLEVEL)"\n"\
188-
" l32i %0, %2, 0\n" \
189-
" " #op " %0, %0, %1\n" \
190-
" s32i %0, %2, 0\n" \
187+
" rsil a15, "__stringify(TOPLEVEL)"\n" \
188+
" l32i %[result], %[addr], 0\n" \
189+
" " #op " %[result], %[result], %[i]\n" \
190+
" s32i %[result], %[addr], 0\n" \
191191
" wsr a15, ps\n" \
192192
" rsync\n" \
193-
: "=&a" (vval) \
194-
: "a" (i), "a" (v) \
193+
: [result] "=&a" (vval) \
194+
: [i] "a" (i), [addr] "a" (v) \
195195
: "a15", "memory" \
196196
); \
197197
} \
@@ -203,13 +203,13 @@ static inline int atomic_##op##_return(int i, atomic_t * v) \
203203
\
204204
__asm__ __volatile__( \
205205
" rsil a15,"__stringify(TOPLEVEL)"\n" \
206-
" l32i %0, %2, 0\n" \
207-
" " #op " %0, %0, %1\n" \
208-
" s32i %0, %2, 0\n" \
206+
" l32i %[result], %[addr], 0\n" \
207+
" " #op " %[result], %[result], %[i]\n" \
208+
" s32i %[result], %[addr], 0\n" \
209209
" wsr a15, ps\n" \
210210
" rsync\n" \
211-
: "=&a" (vval) \
212-
: "a" (i), "a" (v) \
211+
: [result] "=&a" (vval) \
212+
: [i] "a" (i), [addr] "a" (v) \
213213
: "a15", "memory" \
214214
); \
215215
\
@@ -223,13 +223,13 @@ static inline int atomic_fetch_##op(int i, atomic_t * v) \
223223
\
224224
__asm__ __volatile__( \
225225
" rsil a15,"__stringify(TOPLEVEL)"\n" \
226-
" l32i %0, %3, 0\n" \
227-
" " #op " %1, %0, %2\n" \
228-
" s32i %1, %3, 0\n" \
226+
" l32i %[result], %[addr], 0\n" \
227+
" " #op " %[tmp], %[result], %[i]\n" \
228+
" s32i %[tmp], %[addr], 0\n" \
229229
" wsr a15, ps\n" \
230230
" rsync\n" \
231-
: "=&a" (vval), "=&a" (tmp) \
232-
: "a" (i), "a" (v) \
231+
: [result] "=&a" (vval), [tmp] "=&a" (tmp) \
232+
: [i] "a" (i), [addr] "a" (v) \
233233
: "a15", "memory" \
234234
); \
235235
\

0 commit comments

Comments
 (0)