summaryrefslogtreecommitdiffstats
path: root/arch/mips/include
diff options
context:
space:
mode:
authorMarkos Chandras <markos.chandras@imgtec.com>2013-12-04 09:58:36 +0000
committerRalf Baechle <ralf@linux-mips.org>2014-03-26 23:09:12 +0100
commita6813fe5c28656b9a5d7d4f515c689876802d947 (patch)
tree8d2ca6c29613d4401fd6859910bcf60b4c9b1503 /arch/mips/include
parent932449459522ef879c6d6a8fa707d801bdd8080e (diff)
downloadop-kernel-dev-a6813fe5c28656b9a5d7d4f515c689876802d947.zip
op-kernel-dev-a6813fe5c28656b9a5d7d4f515c689876802d947.tar.gz
MIPS: futex: Add EVA support for futex operations
Use LLE/SCE instructions for performing an address translation for userspace when EVA is enabled. Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Diffstat (limited to 'arch/mips/include')
-rw-r--r--arch/mips/include/asm/futex.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/mips/include/asm/futex.h b/arch/mips/include/asm/futex.h
index 6ea1581..1fe2cd6 100644
--- a/arch/mips/include/asm/futex.h
+++ b/arch/mips/include/asm/futex.h
@@ -12,6 +12,7 @@
#include <linux/futex.h>
#include <linux/uaccess.h>
+#include <asm/asm-eva.h>
#include <asm/barrier.h>
#include <asm/errno.h>
#include <asm/war.h>
@@ -49,11 +50,11 @@
" .set push \n" \
" .set noat \n" \
" .set mips3 \n" \
- "1: ll %1, %4 # __futex_atomic_op \n" \
+ "1: "user_ll("%1", "%4")" # __futex_atomic_op\n" \
" .set mips0 \n" \
" " insn " \n" \
" .set mips3 \n" \
- "2: sc $1, %2 \n" \
+ "2: "user_sc("$1", "%2")" \n" \
" beqz $1, 1b \n" \
__WEAK_LLSC_MB \
"3: \n" \
@@ -174,12 +175,12 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
" .set push \n"
" .set noat \n"
" .set mips3 \n"
- "1: ll %1, %3 \n"
+ "1: "user_ll("%1", "%3")" \n"
" bne %1, %z4, 3f \n"
" .set mips0 \n"
" move $1, %z5 \n"
" .set mips3 \n"
- "2: sc $1, %2 \n"
+ "2: "user_sc("$1", "%2")" \n"
" beqz $1, 1b \n"
__WEAK_LLSC_MB
"3: \n"
OpenPOWER on IntegriCloud