projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[MIPS] vr41xx: need one more nop with mtc0_tlbw_hazard()
[powerpc.git]
/
include
/
asm-mips
/
futex.h
diff --git
a/include/asm-mips/futex.h
b/include/asm-mips/futex.h
index
1f94640
..
47e5679
100644
(file)
--- a/
include/asm-mips/futex.h
+++ b/
include/asm-mips/futex.h
@@
-1,20
+1,21
@@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (c) 2006 Ralf Baechle (ralf@linux-mips.org)
+ */
#ifndef _ASM_FUTEX_H
#define _ASM_FUTEX_H
#ifdef __KERNEL__
#ifndef _ASM_FUTEX_H
#define _ASM_FUTEX_H
#ifdef __KERNEL__
-#include <linux/config.h>
#include <linux/futex.h>
#include <linux/futex.h>
+#include <asm/barrier.h>
#include <asm/errno.h>
#include <asm/uaccess.h>
#include <asm/war.h>
#include <asm/errno.h>
#include <asm/uaccess.h>
#include <asm/war.h>
-#ifdef CONFIG_SMP
-#define __FUTEX_SMP_SYNC " sync \n"
-#else
-#define __FUTEX_SMP_SYNC
-#endif
-
#define __futex_atomic_op(insn, ret, oldval, uaddr, oparg) \
{ \
if (cpu_has_llsc && R10000_LLSC_WAR) { \
#define __futex_atomic_op(insn, ret, oldval, uaddr, oparg) \
{ \
if (cpu_has_llsc && R10000_LLSC_WAR) { \
@@
-28,7
+29,7
@@
" .set mips3 \n" \
"2: sc $1, %2 \n" \
" beqzl $1, 1b \n" \
" .set mips3 \n" \
"2: sc $1, %2 \n" \
" beqzl $1, 1b \n" \
- __
FUTEX_SMP_SYNC
\
+ __
WEAK_ORDERING_MB
\
"3: \n" \
" .set pop \n" \
" .set mips0 \n" \
"3: \n" \
" .set pop \n" \
" .set mips0 \n" \
@@
-54,7
+55,7
@@
" .set mips3 \n" \
"2: sc $1, %2 \n" \
" beqz $1, 1b \n" \
" .set mips3 \n" \
"2: sc $1, %2 \n" \
" beqz $1, 1b \n" \
- __
FUTEX_SMP_SYNC
\
+ __
WEAK_ORDERING_MB
\
"3: \n" \
" .set pop \n" \
" .set mips0 \n" \
"3: \n" \
" .set pop \n" \
" .set mips0 \n" \
@@
-87,7
+88,7
@@
futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
return -EFAULT;
if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
return -EFAULT;
-
inc_preempt_count
();
+
pagefault_disable
();
switch (op) {
case FUTEX_OP_SET:
switch (op) {
case FUTEX_OP_SET:
@@
-114,7
+115,7
@@
futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
ret = -ENOSYS;
}
ret = -ENOSYS;
}
-
dec_preempt_count
();
+
pagefault_enable
();
if (!ret) {
switch (cmp) {
if (!ret) {
switch (cmp) {
@@
-151,7
+152,7
@@
futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
" .set mips3 \n"
"2: sc $1, %1 \n"
" beqzl $1, 1b \n"
" .set mips3 \n"
"2: sc $1, %1 \n"
" beqzl $1, 1b \n"
- __
FUTEX_SMP_SYNC
+ __
WEAK_ORDERING_MB
"3: \n"
" .set pop \n"
" .section .fixup,\"ax\" \n"
"3: \n"
" .set pop \n"
" .section .fixup,\"ax\" \n"
@@
-178,7
+179,7
@@
futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
" .set mips3 \n"
"2: sc $1, %1 \n"
" beqz $1, 1b \n"
" .set mips3 \n"
"2: sc $1, %1 \n"
" beqz $1, 1b \n"
- __
FUTEX_SMP_SYNC
+ __
WEAK_ORDERING_MB
"3: \n"
" .set pop \n"
" .section .fixup,\"ax\" \n"
"3: \n"
" .set pop \n"
" .section .fixup,\"ax\" \n"