Re: [patch 5/6] lightweight robust futexes: i386

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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]
  Powered by Linux