]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.4.152/parisc-remove-ordered-stores-from-syscall.s.patch
Linux 4.4.152
[thirdparty/kernel/stable-queue.git] / releases / 4.4.152 / parisc-remove-ordered-stores-from-syscall.s.patch
CommitLineData
15877d25
GKH
1From 7797167ffde1f00446301cb22b37b7c03194cfaf Mon Sep 17 00:00:00 2001
2From: John David Anglin <dave.anglin@bell.net>
3Date: Sun, 12 Aug 2018 16:38:03 -0400
4Subject: parisc: Remove ordered stores from syscall.S
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9From: John David Anglin <dave.anglin@bell.net>
10
11commit 7797167ffde1f00446301cb22b37b7c03194cfaf upstream.
12
13Now that we use a sync prior to releasing the locks in syscall.S, we don't need
14the PA 2.0 ordered stores used to release some locks.  Using an ordered store,
15potentially slows the release and subsequent code.
16
17There are a number of other ordered stores and loads that serve no purpose.  I
18have converted these to normal stores.
19
20Signed-off-by: John David Anglin <dave.anglin@bell.net>
21Cc: stable@vger.kernel.org # 4.0+
22Signed-off-by: Helge Deller <deller@gmx.de>
23Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
24
25---
26 arch/parisc/kernel/syscall.S | 24 ++++++++++++------------
27 1 file changed, 12 insertions(+), 12 deletions(-)
28
29--- a/arch/parisc/kernel/syscall.S
30+++ b/arch/parisc/kernel/syscall.S
31@@ -627,12 +627,12 @@ cas_action:
32 stw %r1, 4(%sr2,%r20)
33 #endif
34 /* The load and store could fail */
35-1: ldw,ma 0(%r26), %r28
36+1: ldw 0(%r26), %r28
37 sub,<> %r28, %r25, %r0
38-2: stw,ma %r24, 0(%r26)
39+2: stw %r24, 0(%r26)
40 /* Free lock */
41 sync
42- stw,ma %r20, 0(%sr2,%r20)
43+ stw %r20, 0(%sr2,%r20)
44 #if ENABLE_LWS_DEBUG
45 /* Clear thread register indicator */
46 stw %r0, 4(%sr2,%r20)
47@@ -796,30 +796,30 @@ cas2_action:
48 ldo 1(%r0),%r28
49
50 /* 8bit CAS */
51-13: ldb,ma 0(%r26), %r29
52+13: ldb 0(%r26), %r29
53 sub,= %r29, %r25, %r0
54 b,n cas2_end
55-14: stb,ma %r24, 0(%r26)
56+14: stb %r24, 0(%r26)
57 b cas2_end
58 copy %r0, %r28
59 nop
60 nop
61
62 /* 16bit CAS */
63-15: ldh,ma 0(%r26), %r29
64+15: ldh 0(%r26), %r29
65 sub,= %r29, %r25, %r0
66 b,n cas2_end
67-16: sth,ma %r24, 0(%r26)
68+16: sth %r24, 0(%r26)
69 b cas2_end
70 copy %r0, %r28
71 nop
72 nop
73
74 /* 32bit CAS */
75-17: ldw,ma 0(%r26), %r29
76+17: ldw 0(%r26), %r29
77 sub,= %r29, %r25, %r0
78 b,n cas2_end
79-18: stw,ma %r24, 0(%r26)
80+18: stw %r24, 0(%r26)
81 b cas2_end
82 copy %r0, %r28
83 nop
84@@ -827,10 +827,10 @@ cas2_action:
85
86 /* 64bit CAS */
87 #ifdef CONFIG_64BIT
88-19: ldd,ma 0(%r26), %r29
89+19: ldd 0(%r26), %r29
90 sub,*= %r29, %r25, %r0
91 b,n cas2_end
92-20: std,ma %r24, 0(%r26)
93+20: std %r24, 0(%r26)
94 copy %r0, %r28
95 #else
96 /* Compare first word */
97@@ -849,7 +849,7 @@ cas2_action:
98 cas2_end:
99 /* Free lock */
100 sync
101- stw,ma %r20, 0(%sr2,%r20)
102+ stw %r20, 0(%sr2,%r20)
103 /* Enable interrupts */
104 ssm PSW_SM_I, %r0
105 /* Return to userspace, set no error */