361
362
asm volatile("0: cs %1,%4,0(%5)\n"
364
365
EX_TABLE(0b,2b) EX_TABLE(1b,2b)
365
366
: "=d" (ret), "+d" (oldval), "=m" (*uaddr)
366
367
: "0" (-EFAULT), "d" (newval), "a" (uaddr), "m" (*uaddr)
375
378
if (segment_eq(get_fs(), KERNEL_DS))
379
return __futex_atomic_cmpxchg_pt(uval, uaddr, oldval, newval);
377
380
spin_lock(¤t->mm->page_table_lock);
378
381
uaddr = (int __user *) __dat_user_addr((unsigned long) uaddr);