In-Reply-To: <[email protected]>
On Thu, 16 Feb 2006 at 10:42:34 +0100, Ingo Molnar wrote:
> --- linux-robust-list.q.orig/include/asm-i386/futex.h
> +++ linux-robust-list.q/include/asm-i386/futex.h
> @@ -107,7 +107,25 @@ futex_atomic_op_inuser (int encoded_op,
> static inline int
> futex_atomic_cmpxchg_inuser(int __user *uaddr, int oldval, int newval)
> {
> - return -ENOSYS;
> + __asm__ __volatile__(
> + "1: " LOCK_PREFIX "cmpxchgl %3, %1 \n"
> +
> + "2: .section .fixup, \"ax\" \n"
> + "3: mov %2, %0 \n"
> + " jmp 2b \n"
> + " .previous \n"
> +
> + " .section __ex_table, \"a\" \n"
> + " .align 8 \n"
> + " .long 1b,3b \n"
> + " .previous \n"
> +
> + : "=a" (oldval), "=m" (*uaddr)
^^^^
Should be "+m" because it's both read and written.
> + : "i" (-EFAULT), "r" (newval), "0" (oldval)
> + : "memory"
^^^^^^^^
Is this necessary? Every possible memory location that could be
affected has been listed in the operands if the above change is made.
> + );
> +
> + return oldval;
> }
>
> #endif
--
Chuck
"Equations are the Devil's sentences." --Stephen Colbert
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]