Skip to content

Commit 63fd9d4

Browse files
Martin Schwidefskygregkh
authored andcommitted
s390/lib: use expoline for all bcr instructions
commit 5eda25b upstream. 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]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 9370868 commit 63fd9d4

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

arch/s390/lib/mem.S

Lines changed: 8 additions & 4 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,12 +81,13 @@ 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
stc %r3,0(%r2)
8688
cghi %r4,1
8789
lgr %r1,%r2
88-
ber %r14
90+
je .Lmemset_fill_exit
8991
aghi %r4,-2
9092
srlg %r3,%r4,8
9193
ltgr %r3,%r3
@@ -97,6 +99,7 @@ ENTRY(memset)
9799
.Lmemset_fill_remainder:
98100
larl %r3,.Lmemset_mvc
99101
ex %r4,0(%r3)
102+
.Lmemset_fill_exit:
100103
BR_EX %r14
101104
.Lmemset_xc:
102105
xc 0(1,%r1),0(%r1)
@@ -111,7 +114,7 @@ EXPORT_SYMBOL(memset)
111114
*/
112115
ENTRY(memcpy)
113116
ltgr %r4,%r4
114-
bzr %r14
117+
jz .Lmemcpy_exit
115118
aghi %r4,-1
116119
srlg %r5,%r4,8
117120
ltgr %r5,%r5
@@ -120,6 +123,7 @@ ENTRY(memcpy)
120123
.Lmemcpy_remainder:
121124
larl %r5,.Lmemcpy_mvc
122125
ex %r4,0(%r5)
126+
.Lmemcpy_exit:
123127
BR_EX %r14
124128
.Lmemcpy_loop:
125129
mvc 0(256,%r1),0(%r3)

0 commit comments

Comments
 (0)