cmpxchg-cas.h (549B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __ASM_SH_CMPXCHG_CAS_H 3#define __ASM_SH_CMPXCHG_CAS_H 4 5static 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 15static 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 */