s390/lib: improve memmove, memset and memcpy
Improve the memmove implementation to save one instruction and use better label names. Also use better label names for the memset and memcpy implementations so everything looks consistent. Suggested-by: Jens Remus <jremus@linux.vnet.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
e3850ecfc1
commit
551f413434
|
@ -14,31 +14,29 @@ ENTRY(memmove)
|
|||
ltgr %r4,%r4
|
||||
lgr %r1,%r2
|
||||
bzr %r14
|
||||
aghi %r4,-1
|
||||
clgr %r2,%r3
|
||||
jnh .Lmemmove_forward
|
||||
la %r5,0(%r4,%r3)
|
||||
la %r5,1(%r4,%r3)
|
||||
clgr %r2,%r5
|
||||
jl .Lmemmove_reverse
|
||||
.Lmemmove_forward:
|
||||
aghi %r4,-1
|
||||
srlg %r0,%r4,8
|
||||
ltgr %r0,%r0
|
||||
jz .Lmemmove_rest
|
||||
.Lmemmove_loop:
|
||||
jz .Lmemmove_forward_remainder
|
||||
.Lmemmove_forward_loop:
|
||||
mvc 0(256,%r1),0(%r3)
|
||||
la %r1,256(%r1)
|
||||
la %r3,256(%r3)
|
||||
brctg %r0,.Lmemmove_loop
|
||||
.Lmemmove_rest:
|
||||
brctg %r0,.Lmemmove_forward_loop
|
||||
.Lmemmove_forward_remainder:
|
||||
larl %r5,.Lmemmove_mvc
|
||||
ex %r4,0(%r5)
|
||||
br %r14
|
||||
.Lmemmove_reverse:
|
||||
aghi %r4,-1
|
||||
.Lmemmove_reverse_loop:
|
||||
ic %r0,0(%r4,%r3)
|
||||
stc %r0,0(%r4,%r1)
|
||||
brctg %r4,.Lmemmove_reverse_loop
|
||||
brctg %r4,.Lmemmove_reverse
|
||||
ic %r0,0(%r4,%r3)
|
||||
stc %r0,0(%r4,%r1)
|
||||
br %r14
|
||||
|
@ -70,12 +68,12 @@ ENTRY(memset)
|
|||
srlg %r3,%r4,8
|
||||
ltgr %r3,%r3
|
||||
lgr %r1,%r2
|
||||
jz .Lmemset_clear_rest
|
||||
jz .Lmemset_clear_remainder
|
||||
.Lmemset_clear_loop:
|
||||
xc 0(256,%r1),0(%r1)
|
||||
la %r1,256(%r1)
|
||||
brctg %r3,.Lmemset_clear_loop
|
||||
.Lmemset_clear_rest:
|
||||
.Lmemset_clear_remainder:
|
||||
larl %r3,.Lmemset_xc
|
||||
ex %r4,0(%r3)
|
||||
br %r14
|
||||
|
@ -87,12 +85,12 @@ ENTRY(memset)
|
|||
aghi %r4,-2
|
||||
srlg %r3,%r4,8
|
||||
ltgr %r3,%r3
|
||||
jz .Lmemset_fill_rest
|
||||
jz .Lmemset_fill_remainder
|
||||
.Lmemset_fill_loop:
|
||||
mvc 1(256,%r1),0(%r1)
|
||||
la %r1,256(%r1)
|
||||
brctg %r3,.Lmemset_fill_loop
|
||||
.Lmemset_fill_rest:
|
||||
.Lmemset_fill_remainder:
|
||||
larl %r3,.Lmemset_mvc
|
||||
ex %r4,0(%r3)
|
||||
br %r14
|
||||
|
@ -115,7 +113,7 @@ ENTRY(memcpy)
|
|||
ltgr %r5,%r5
|
||||
lgr %r1,%r2
|
||||
jnz .Lmemcpy_loop
|
||||
.Lmemcpy_rest:
|
||||
.Lmemcpy_remainder:
|
||||
larl %r5,.Lmemcpy_mvc
|
||||
ex %r4,0(%r5)
|
||||
br %r14
|
||||
|
@ -124,7 +122,7 @@ ENTRY(memcpy)
|
|||
la %r1,256(%r1)
|
||||
la %r3,256(%r3)
|
||||
brctg %r5,.Lmemcpy_loop
|
||||
j .Lmemcpy_rest
|
||||
j .Lmemcpy_remainder
|
||||
.Lmemcpy_mvc:
|
||||
mvc 0(1,%r1),0(%r3)
|
||||
EXPORT_SYMBOL(memcpy)
|
||||
|
|
Loading…
Reference in a new issue