Skip to content

Commit 5eda25b

Browse files
author
Martin Schwidefsky
committed
s390/lib: use expoline for all bcr instructions
The memove, memset, memcpy, __memset16, __memset32 and __memset64 function have an additional indirect return branch in form of a "bzr" instruction. These need to use expolines as well. Cc: <[email protected]> # v4.17+ Fixes: 97489e0 ("s390/lib: use expoline for indirect branches") Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Martin Schwidefsky <[email protected]>
1 parent fb7d751 commit 5eda25b

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

arch/s390/lib/mem.S

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
ENTRY(memmove)
1818
ltgr %r4,%r4
1919
lgr %r1,%r2
20-
bzr %r14
20+
jz .Lmemmove_exit
2121
aghi %r4,-1
2222
clgr %r2,%r3
2323
jnh .Lmemmove_forward
@@ -36,6 +36,7 @@ ENTRY(memmove)
3636
.Lmemmove_forward_remainder:
3737
larl %r5,.Lmemmove_mvc
3838
ex %r4,0(%r5)
39+
.Lmemmove_exit:
3940
BR_EX %r14
4041
.Lmemmove_reverse:
4142
ic %r0,0(%r4,%r3)
@@ -65,7 +66,7 @@ EXPORT_SYMBOL(memmove)
6566
*/
6667
ENTRY(memset)
6768
ltgr %r4,%r4
68-
bzr %r14
69+
jz .Lmemset_exit
6970
ltgr %r3,%r3
7071
jnz .Lmemset_fill
7172
aghi %r4,-1
@@ -80,6 +81,7 @@ ENTRY(memset)
8081
.Lmemset_clear_remainder:
8182
larl %r3,.Lmemset_xc
8283
ex %r4,0(%r3)
84+
.Lmemset_exit:
8385
BR_EX %r14
8486
.Lmemset_fill:
8587
cghi %r4,1
@@ -115,7 +117,7 @@ EXPORT_SYMBOL(memset)
115117
*/
116118
ENTRY(memcpy)
117119
ltgr %r4,%r4
118-
bzr %r14
120+
jz .Lmemcpy_exit
119121
aghi %r4,-1
120122
srlg %r5,%r4,8
121123
ltgr %r5,%r5
@@ -124,6 +126,7 @@ ENTRY(memcpy)
124126
.Lmemcpy_remainder:
125127
larl %r5,.Lmemcpy_mvc
126128
ex %r4,0(%r5)
129+
.Lmemcpy_exit:
127130
BR_EX %r14
128131
.Lmemcpy_loop:
129132
mvc 0(256,%r1),0(%r3)
@@ -145,9 +148,9 @@ EXPORT_SYMBOL(memcpy)
145148
.macro __MEMSET bits,bytes,insn
146149
ENTRY(__memset\bits)
147150
ltgr %r4,%r4
148-
bzr %r14
151+
jz .L__memset_exit\bits
149152
cghi %r4,\bytes
150-
je .L__memset_exit\bits
153+
je .L__memset_store\bits
151154
aghi %r4,-(\bytes+1)
152155
srlg %r5,%r4,8
153156
ltgr %r5,%r5
@@ -163,8 +166,9 @@ ENTRY(__memset\bits)
163166
larl %r5,.L__memset_mvc\bits
164167
ex %r4,0(%r5)
165168
BR_EX %r14
166-
.L__memset_exit\bits:
169+
.L__memset_store\bits:
167170
\insn %r3,0(%r2)
171+
.L__memset_exit\bits:
168172
BR_EX %r14
169173
.L__memset_mvc\bits:
170174
mvc \bytes(1,%r1),0(%r1)

0 commit comments

Comments
 (0)