1717#endif
1818
1919#include <asm/cmpxchg.h>
20- #include <asm/barrier.h>
2120
2221#define __atomic_acquire_fence () \
2322 __asm__ __volatile__(RISCV_ACQUIRE_BARRIER "" ::: "memory")
@@ -207,7 +206,7 @@ static __always_inline int arch_atomic_fetch_add_unless(atomic_t *v, int a, int
207206 " add %[rc], %[p], %[a]\n"
208207 " sc.w.rl %[rc], %[rc], %[c]\n"
209208 " bnez %[rc], 0b\n"
210- " fence rw, rw\n"
209+ RISCV_FULL_BARRIER
211210 "1:\n"
212211 : [p ]"=&r" (prev ), [rc ]"=&r" (rc ), [c ]"+A" (v -> counter )
213212 : [a ]"r" (a ), [u ]"r" (u )
@@ -228,7 +227,7 @@ static __always_inline s64 arch_atomic64_fetch_add_unless(atomic64_t *v, s64 a,
228227 " add %[rc], %[p], %[a]\n"
229228 " sc.d.rl %[rc], %[rc], %[c]\n"
230229 " bnez %[rc], 0b\n"
231- " fence rw, rw\n"
230+ RISCV_FULL_BARRIER
232231 "1:\n"
233232 : [p ]"=&r" (prev ), [rc ]"=&r" (rc ), [c ]"+A" (v -> counter )
234233 : [a ]"r" (a ), [u ]"r" (u )
@@ -248,7 +247,7 @@ static __always_inline bool arch_atomic_inc_unless_negative(atomic_t *v)
248247 " addi %[rc], %[p], 1\n"
249248 " sc.w.rl %[rc], %[rc], %[c]\n"
250249 " bnez %[rc], 0b\n"
251- " fence rw, rw\n"
250+ RISCV_FULL_BARRIER
252251 "1:\n"
253252 : [p ]"=&r" (prev ), [rc ]"=&r" (rc ), [c ]"+A" (v -> counter )
254253 :
@@ -268,7 +267,7 @@ static __always_inline bool arch_atomic_dec_unless_positive(atomic_t *v)
268267 " addi %[rc], %[p], -1\n"
269268 " sc.w.rl %[rc], %[rc], %[c]\n"
270269 " bnez %[rc], 0b\n"
271- " fence rw, rw\n"
270+ RISCV_FULL_BARRIER
272271 "1:\n"
273272 : [p ]"=&r" (prev ), [rc ]"=&r" (rc ), [c ]"+A" (v -> counter )
274273 :
@@ -288,7 +287,7 @@ static __always_inline int arch_atomic_dec_if_positive(atomic_t *v)
288287 " bltz %[rc], 1f\n"
289288 " sc.w.rl %[rc], %[rc], %[c]\n"
290289 " bnez %[rc], 0b\n"
291- " fence rw, rw\n"
290+ RISCV_FULL_BARRIER
292291 "1:\n"
293292 : [p ]"=&r" (prev ), [rc ]"=&r" (rc ), [c ]"+A" (v -> counter )
294293 :
@@ -310,7 +309,7 @@ static __always_inline bool arch_atomic64_inc_unless_negative(atomic64_t *v)
310309 " addi %[rc], %[p], 1\n"
311310 " sc.d.rl %[rc], %[rc], %[c]\n"
312311 " bnez %[rc], 0b\n"
313- " fence rw, rw\n"
312+ RISCV_FULL_BARRIER
314313 "1:\n"
315314 : [p ]"=&r" (prev ), [rc ]"=&r" (rc ), [c ]"+A" (v -> counter )
316315 :
@@ -331,7 +330,7 @@ static __always_inline bool arch_atomic64_dec_unless_positive(atomic64_t *v)
331330 " addi %[rc], %[p], -1\n"
332331 " sc.d.rl %[rc], %[rc], %[c]\n"
333332 " bnez %[rc], 0b\n"
334- " fence rw, rw\n"
333+ RISCV_FULL_BARRIER
335334 "1:\n"
336335 : [p ]"=&r" (prev ), [rc ]"=&r" (rc ), [c ]"+A" (v -> counter )
337336 :
@@ -352,7 +351,7 @@ static __always_inline s64 arch_atomic64_dec_if_positive(atomic64_t *v)
352351 " bltz %[rc], 1f\n"
353352 " sc.d.rl %[rc], %[rc], %[c]\n"
354353 " bnez %[rc], 0b\n"
355- " fence rw, rw\n"
354+ RISCV_FULL_BARRIER
356355 "1:\n"
357356 : [p ]"=&r" (prev ), [rc ]"=&r" (rc ), [c ]"+A" (v -> counter )
358357 :
0 commit comments