summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm64/include/asm/futex.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/arm64/include/asm/futex.h b/arch/arm64/include/asm/futex.h
index cccb83ad7fa8..e1d95f08f8e1 100644
--- a/arch/arm64/include/asm/futex.h
+++ b/arch/arm64/include/asm/futex.h
@@ -30,8 +30,8 @@ do { \
30" prfm pstl1strm, %2\n" \ 30" prfm pstl1strm, %2\n" \
31"1: ldxr %w1, %2\n" \ 31"1: ldxr %w1, %2\n" \
32 insn "\n" \ 32 insn "\n" \
33"2: stlxr %w3, %w0, %2\n" \ 33"2: stlxr %w0, %w3, %2\n" \
34" cbnz %w3, 1b\n" \ 34" cbnz %w0, 1b\n" \
35" dmb ish\n" \ 35" dmb ish\n" \
36"3:\n" \ 36"3:\n" \
37" .pushsection .fixup,\"ax\"\n" \ 37" .pushsection .fixup,\"ax\"\n" \
@@ -50,30 +50,30 @@ do { \
50static inline int 50static inline int
51arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *_uaddr) 51arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *_uaddr)
52{ 52{
53 int oldval = 0, ret, tmp; 53 int oldval, ret, tmp;
54 u32 __user *uaddr = __uaccess_mask_ptr(_uaddr); 54 u32 __user *uaddr = __uaccess_mask_ptr(_uaddr);
55 55
56 pagefault_disable(); 56 pagefault_disable();
57 57
58 switch (op) { 58 switch (op) {
59 case FUTEX_OP_SET: 59 case FUTEX_OP_SET:
60 __futex_atomic_op("mov %w0, %w4", 60 __futex_atomic_op("mov %w3, %w4",
61 ret, oldval, uaddr, tmp, oparg); 61 ret, oldval, uaddr, tmp, oparg);
62 break; 62 break;
63 case FUTEX_OP_ADD: 63 case FUTEX_OP_ADD:
64 __futex_atomic_op("add %w0, %w1, %w4", 64 __futex_atomic_op("add %w3, %w1, %w4",
65 ret, oldval, uaddr, tmp, oparg); 65 ret, oldval, uaddr, tmp, oparg);
66 break; 66 break;
67 case FUTEX_OP_OR: 67 case FUTEX_OP_OR:
68 __futex_atomic_op("orr %w0, %w1, %w4", 68 __futex_atomic_op("orr %w3, %w1, %w4",
69 ret, oldval, uaddr, tmp, oparg); 69 ret, oldval, uaddr, tmp, oparg);
70 break; 70 break;
71 case FUTEX_OP_ANDN: 71 case FUTEX_OP_ANDN:
72 __futex_atomic_op("and %w0, %w1, %w4", 72 __futex_atomic_op("and %w3, %w1, %w4",
73 ret, oldval, uaddr, tmp, ~oparg); 73 ret, oldval, uaddr, tmp, ~oparg);
74 break; 74 break;
75 case FUTEX_OP_XOR: 75 case FUTEX_OP_XOR:
76 __futex_atomic_op("eor %w0, %w1, %w4", 76 __futex_atomic_op("eor %w3, %w1, %w4",
77 ret, oldval, uaddr, tmp, oparg); 77 ret, oldval, uaddr, tmp, oparg);
78 break; 78 break;
79 default: 79 default: