mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
549 B
25 lines
549 B
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef __ASM_SH_CMPXCHG_CAS_H |
|
#define __ASM_SH_CMPXCHG_CAS_H |
|
|
|
static inline unsigned long |
|
__cmpxchg_u32(volatile u32 *m, unsigned long old, unsigned long new) |
|
{ |
|
__asm__ __volatile__("cas.l %1,%0,@r0" |
|
: "+r"(new) |
|
: "r"(old), "z"(m) |
|
: "t", "memory" ); |
|
return new; |
|
} |
|
|
|
static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val) |
|
{ |
|
unsigned long old; |
|
do old = *m; |
|
while (__cmpxchg_u32(m, old, val) != old); |
|
return old; |
|
} |
|
|
|
#include <asm/cmpxchg-xchg.h> |
|
|
|
#endif /* __ASM_SH_CMPXCHG_CAS_H */
|
|
|