git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.18-1.2255_FC5-vs2.0.2.2-rc9 patched with stable patch...
[linux-2.6.git]
/
include
/
asm-sparc64
/
futex.h
diff --git
a/include/asm-sparc64/futex.h
b/include/asm-sparc64/futex.h
index
dee4020
..
7392fc4
100644
(file)
--- a/
include/asm-sparc64/futex.h
+++ b/
include/asm-sparc64/futex.h
@@
-87,24
+87,22
@@
static inline int
futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
{
__asm__ __volatile__(
futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
{
__asm__ __volatile__(
- "\n1: lduwa [%2] %%asi, %0\n"
- "2: casa [%2] %%asi, %0, %1\n"
- "3:\n"
+ "\n1: casa [%3] %%asi, %2, %0\n"
+ "2:\n"
" .section .fixup,#alloc,#execinstr\n"
" .align 4\n"
" .section .fixup,#alloc,#execinstr\n"
" .align 4\n"
- "
4: ba 3
b\n"
- " mov %
3
, %0\n"
+ "
3: ba 2
b\n"
+ " mov %
4
, %0\n"
" .previous\n"
" .section __ex_table,\"a\"\n"
" .align 4\n"
" .previous\n"
" .section __ex_table,\"a\"\n"
" .align 4\n"
- " .word 1b, 4b\n"
- " .word 2b, 4b\n"
+ " .word 1b, 3b\n"
" .previous\n"
" .previous\n"
- : "=
&r" (old
val)
- : "
r" (new
val), "r" (uaddr), "i" (-EFAULT)
+ : "=
r" (new
val)
+ : "
0" (newval), "r" (old
val), "r" (uaddr), "i" (-EFAULT)
: "memory");
: "memory");
- return
old
val;
+ return
new
val;
}
#endif /* !(_SPARC64_FUTEX_H) */
}
#endif /* !(_SPARC64_FUTEX_H) */