/* SPDX-License-Identifier: GPL-2.0 */ | |
#ifndef __ASM_SH_FUTEX_IRQ_H | |
#define __ASM_SH_FUTEX_IRQ_H | |
static inline int atomic_futex_op_cmpxchg_inatomic(u32 *uval, | |
u32 __user *uaddr, | |
u32 oldval, u32 newval) | |
{ | |
unsigned long flags; | |
int ret; | |
u32 prev = 0; | |
local_irq_save(flags); | |
ret = get_user(prev, uaddr); | |
if (!ret && oldval == prev) | |
ret = put_user(newval, uaddr); | |
local_irq_restore(flags); | |
*uval = prev; | |
return ret; | |
} | |
#endif /* __ASM_SH_FUTEX_IRQ_H */ |