1 #ifndef _ASM_PARISC_FUTEX_H
2 #define _ASM_PARISC_FUTEX_H
6 #include <linux/futex.h>
8 #include <asm/atomic.h>
15 _futex_spin_lock_irqsave(
u32 __user *
uaddr,
unsigned long int *
flags)
17 extern u32 lws_lock_start[];
25 _futex_spin_unlock_irqrestore(
u32 __user *
uaddr,
unsigned long int *
flags)
27 extern u32 lws_lock_start[];
37 unsigned long int flags;
39 int op = (encoded_op >> 28) & 7;
40 int cmp = (encoded_op >> 24) & 15;
41 int oparg = (encoded_op << 8) >> 20;
42 int cmparg = (encoded_op << 20) >> 20;
52 _futex_spin_lock_irqsave(uaddr, &flags);
81 val = oldval & ~oparg;
97 _futex_spin_unlock_irqrestore(uaddr, &flags);
117 futex_atomic_cmpxchg_inatomic(
u32 *uval,
u32 __user *uaddr,
139 _futex_spin_lock_irqsave(uaddr, &flags);
143 if (!ret && val == oldval)
148 _futex_spin_unlock_irqrestore(uaddr, &flags);