Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | #ifndef __ASM_SH_CMPXCHG_CAS_H |
3 | #define __ASM_SH_CMPXCHG_CAS_H |
4 | |
5 | static inline unsigned long |
6 | __cmpxchg_u32(volatile u32 *m, unsigned long old, unsigned long new) |
7 | { |
8 | __asm__ __volatile__("cas.l %1,%0,@r0" |
9 | : "+r"(new) |
10 | : "r"(old), "z"(m) |
11 | : "t", "memory" ); |
12 | return new; |
13 | } |
14 | |
15 | static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val) |
16 | { |
17 | unsigned long old; |
18 | do old = *m; |
19 | while (__cmpxchg_u32(m, old, val) != old); |
20 | return old; |
21 | } |
22 | |
23 | #include <asm/cmpxchg-xchg.h> |
24 | |
25 | #endif /* __ASM_SH_CMPXCHG_CAS_H */ |
26 |
Warning: This file is not a C or C++ file. It does not have highlighting.