]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
s390/lib: improve memmove, memset and memcpy
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Thu, 15 Dec 2016 07:35:10 +0000 (08:35 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 16 Jan 2017 06:27:51 +0000 (07:27 +0100)
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>
arch/s390/lib/mem.S

index 7422a706f31048aab96945dea2b24ebae6deffee..7ff79a4ff00cd9fae70d83f4674f6f8a01033967 100644 (file)
@@ -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)