futex-irq.h (482B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __ASM_SH_FUTEX_IRQ_H 3#define __ASM_SH_FUTEX_IRQ_H 4 5static inline int atomic_futex_op_cmpxchg_inatomic(u32 *uval, 6 u32 __user *uaddr, 7 u32 oldval, u32 newval) 8{ 9 unsigned long flags; 10 int ret; 11 u32 prev = 0; 12 13 local_irq_save(flags); 14 15 ret = get_user(prev, uaddr); 16 if (!ret && oldval == prev) 17 ret = put_user(newval, uaddr); 18 19 local_irq_restore(flags); 20 21 *uval = prev; 22 return ret; 23} 24 25#endif /* __ASM_SH_FUTEX_IRQ_H */