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.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git]
/
include
/
asm-mips
/
futex.h
diff --git
a/include/asm-mips/futex.h
b/include/asm-mips/futex.h
index
12d118f
..
ed023ea
100644
(file)
--- a/
include/asm-mips/futex.h
+++ b/
include/asm-mips/futex.h
@@
-3,7
+3,6
@@
#ifdef __KERNEL__
#ifdef __KERNEL__
-#include <linux/config.h>
#include <linux/futex.h>
#include <asm/errno.h>
#include <asm/uaccess.h>
#include <linux/futex.h>
#include <asm/errno.h>
#include <asm/uaccess.h>
@@
-22,51
+21,53
@@
" .set push \n" \
" .set noat \n" \
" .set mips3 \n" \
" .set push \n" \
" .set noat \n" \
" .set mips3 \n" \
- "1: ll %1,
(%3) # __futex_atomic_op \n"
\
+ "1: ll %1,
%4 # __futex_atomic_op \n"
\
" .set mips0 \n" \
" " insn " \n" \
" .set mips3 \n" \
" .set mips0 \n" \
" " insn " \n" \
" .set mips3 \n" \
- "2: sc $1,
(%3)
\n" \
+ "2: sc $1,
%2
\n" \
" beqzl $1, 1b \n" \
__FUTEX_SMP_SYNC \
"3: \n" \
" .set pop \n" \
" .set mips0 \n" \
" .section .fixup,\"ax\" \n" \
" beqzl $1, 1b \n" \
__FUTEX_SMP_SYNC \
"3: \n" \
" .set pop \n" \
" .set mips0 \n" \
" .section .fixup,\"ax\" \n" \
- "4: li %0, %
5
\n" \
+ "4: li %0, %
6
\n" \
" j 2b \n" \
" .previous \n" \
" .section __ex_table,\"a\" \n" \
" "__UA_ADDR "\t1b, 4b \n" \
" "__UA_ADDR "\t2b, 4b \n" \
" .previous \n" \
" j 2b \n" \
" .previous \n" \
" .section __ex_table,\"a\" \n" \
" "__UA_ADDR "\t1b, 4b \n" \
" "__UA_ADDR "\t2b, 4b \n" \
" .previous \n" \
- : "=r" (ret), "=r" (oldval) \
- : "0" (0), "r" (uaddr), "Jr" (oparg), "i" (-EFAULT)); \
+ : "=r" (ret), "=&r" (oldval), "=R" (*uaddr) \
+ : "0" (0), "R" (*uaddr), "Jr" (oparg), "i" (-EFAULT) \
+ : "memory"); \
} else if (cpu_has_llsc) { \
__asm__ __volatile__( \
" .set push \n" \
" .set noat \n" \
" .set mips3 \n" \
} else if (cpu_has_llsc) { \
__asm__ __volatile__( \
" .set push \n" \
" .set noat \n" \
" .set mips3 \n" \
- "1: ll %1,
(%3) # __futex_atomic_op \n"
\
+ "1: ll %1,
%4 # __futex_atomic_op \n"
\
" .set mips0 \n" \
" " insn " \n" \
" .set mips3 \n" \
" .set mips0 \n" \
" " insn " \n" \
" .set mips3 \n" \
- "2: sc $1,
(%3)
\n" \
+ "2: sc $1,
%2
\n" \
" beqz $1, 1b \n" \
__FUTEX_SMP_SYNC \
"3: \n" \
" .set pop \n" \
" .set mips0 \n" \
" .section .fixup,\"ax\" \n" \
" beqz $1, 1b \n" \
__FUTEX_SMP_SYNC \
"3: \n" \
" .set pop \n" \
" .set mips0 \n" \
" .section .fixup,\"ax\" \n" \
- "4: li %0, %
5
\n" \
+ "4: li %0, %
6
\n" \
" j 2b \n" \
" .previous \n" \
" .section __ex_table,\"a\" \n" \
" "__UA_ADDR "\t1b, 4b \n" \
" "__UA_ADDR "\t2b, 4b \n" \
" .previous \n" \
" j 2b \n" \
" .previous \n" \
" .section __ex_table,\"a\" \n" \
" "__UA_ADDR "\t1b, 4b \n" \
" "__UA_ADDR "\t2b, 4b \n" \
" .previous \n" \
- : "=r" (ret), "=r" (oldval) \
- : "0" (0), "r" (uaddr), "Jr" (oparg), "i" (-EFAULT)); \
+ : "=r" (ret), "=&r" (oldval), "=R" (*uaddr) \
+ : "0" (0), "R" (*uaddr), "Jr" (oparg), "i" (-EFAULT) \
+ : "memory"); \
} else \
ret = -ENOSYS; \
}
} else \
ret = -ENOSYS; \
}
@@
-89,23
+90,23
@@
futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
switch (op) {
case FUTEX_OP_SET:
switch (op) {
case FUTEX_OP_SET:
- __futex_atomic_op("move $1, %z
4
", ret, oldval, uaddr, oparg);
+ __futex_atomic_op("move $1, %z
5
", ret, oldval, uaddr, oparg);
break;
case FUTEX_OP_ADD:
break;
case FUTEX_OP_ADD:
- __futex_atomic_op("addu $1, %1, %z
4
",
+ __futex_atomic_op("addu $1, %1, %z
5
",
ret, oldval, uaddr, oparg);
break;
case FUTEX_OP_OR:
ret, oldval, uaddr, oparg);
break;
case FUTEX_OP_OR:
- __futex_atomic_op("or $1, %1, %z
4
",
+ __futex_atomic_op("or $1, %1, %z
5
",
ret, oldval, uaddr, oparg);
break;
case FUTEX_OP_ANDN:
ret, oldval, uaddr, oparg);
break;
case FUTEX_OP_ANDN:
- __futex_atomic_op("and $1, %1, %z
4
",
+ __futex_atomic_op("and $1, %1, %z
5
",
ret, oldval, uaddr, ~oparg);
break;
case FUTEX_OP_XOR:
ret, oldval, uaddr, ~oparg);
break;
case FUTEX_OP_XOR:
- __futex_atomic_op("xor $1, %1, %z
4
",
+ __futex_atomic_op("xor $1, %1, %z
5
",
ret, oldval, uaddr, oparg);
break;
default:
ret, oldval, uaddr, oparg);
break;
default: