Commit 280880ce authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Greg Kroah-Hartman

s390/lib: use expoline for all bcr instructions

commit 5eda25b1 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: <stable@vger.kernel.org> # v4.17+
Fixes: 97489e06 ("s390/lib: use expoline for indirect branches")
Reviewed-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 55977197
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
*/ */
ENTRY(memset) ENTRY(memset)
ltgr %r4,%r4 ltgr %r4,%r4
bzr %r14 jz .Lmemset_exit
ltgr %r3,%r3 ltgr %r3,%r3
jnz .Lmemset_fill jnz .Lmemset_fill
aghi %r4,-1 aghi %r4,-1
...@@ -41,12 +41,13 @@ ENTRY(memset) ...@@ -41,12 +41,13 @@ ENTRY(memset)
.Lmemset_clear_rest: .Lmemset_clear_rest:
larl %r3,.Lmemset_xc larl %r3,.Lmemset_xc
ex %r4,0(%r3) ex %r4,0(%r3)
.Lmemset_exit:
BR_EX %r14 BR_EX %r14
.Lmemset_fill: .Lmemset_fill:
stc %r3,0(%r2) stc %r3,0(%r2)
cghi %r4,1 cghi %r4,1
lgr %r1,%r2 lgr %r1,%r2
ber %r14 je .Lmemset_fill_exit
aghi %r4,-2 aghi %r4,-2
srlg %r3,%r4,8 srlg %r3,%r4,8
ltgr %r3,%r3 ltgr %r3,%r3
...@@ -58,6 +59,7 @@ ENTRY(memset) ...@@ -58,6 +59,7 @@ ENTRY(memset)
.Lmemset_fill_rest: .Lmemset_fill_rest:
larl %r3,.Lmemset_mvc larl %r3,.Lmemset_mvc
ex %r4,0(%r3) ex %r4,0(%r3)
.Lmemset_fill_exit:
BR_EX %r14 BR_EX %r14
.Lmemset_xc: .Lmemset_xc:
xc 0(1,%r1),0(%r1) xc 0(1,%r1),0(%r1)
...@@ -71,7 +73,7 @@ ENTRY(memset) ...@@ -71,7 +73,7 @@ ENTRY(memset)
*/ */
ENTRY(memcpy) ENTRY(memcpy)
ltgr %r4,%r4 ltgr %r4,%r4
bzr %r14 jz .Lmemcpy_exit
aghi %r4,-1 aghi %r4,-1
srlg %r5,%r4,8 srlg %r5,%r4,8
ltgr %r5,%r5 ltgr %r5,%r5
...@@ -80,6 +82,7 @@ ENTRY(memcpy) ...@@ -80,6 +82,7 @@ ENTRY(memcpy)
.Lmemcpy_rest: .Lmemcpy_rest:
larl %r5,.Lmemcpy_mvc larl %r5,.Lmemcpy_mvc
ex %r4,0(%r5) ex %r4,0(%r5)
.Lmemcpy_exit:
BR_EX %r14 BR_EX %r14
.Lmemcpy_loop: .Lmemcpy_loop:
mvc 0(256,%r1),0(%r3) mvc 0(256,%r1),0(%r3)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment