diff options
-rw-r--r-- | arch/arm64/include/asm/futex.h | 16 |
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 { \ | |||
50 | static inline int | 50 | static inline int |
51 | arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *_uaddr) | 51 | arch_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: |