Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Heiko Carstens and committed by
Martin Schwidefsky
551f4134 e3850ecf

+13 -15
+13 -15
arch/s390/lib/mem.S
··· 14 14 ltgr %r4,%r4 15 15 lgr %r1,%r2 16 16 bzr %r14 17 + aghi %r4,-1 17 18 clgr %r2,%r3 18 19 jnh .Lmemmove_forward 19 - la %r5,0(%r4,%r3) 20 + la %r5,1(%r4,%r3) 20 21 clgr %r2,%r5 21 22 jl .Lmemmove_reverse 22 23 .Lmemmove_forward: 23 - aghi %r4,-1 24 24 srlg %r0,%r4,8 25 25 ltgr %r0,%r0 26 - jz .Lmemmove_rest 27 - .Lmemmove_loop: 26 + jz .Lmemmove_forward_remainder 27 + .Lmemmove_forward_loop: 28 28 mvc 0(256,%r1),0(%r3) 29 29 la %r1,256(%r1) 30 30 la %r3,256(%r3) 31 - brctg %r0,.Lmemmove_loop 32 - .Lmemmove_rest: 31 + brctg %r0,.Lmemmove_forward_loop 32 + .Lmemmove_forward_remainder: 33 33 larl %r5,.Lmemmove_mvc 34 34 ex %r4,0(%r5) 35 35 br %r14 36 36 .Lmemmove_reverse: 37 - aghi %r4,-1 38 - .Lmemmove_reverse_loop: 39 37 ic %r0,0(%r4,%r3) 40 38 stc %r0,0(%r4,%r1) 41 - brctg %r4,.Lmemmove_reverse_loop 39 + brctg %r4,.Lmemmove_reverse 42 40 ic %r0,0(%r4,%r3) 43 41 stc %r0,0(%r4,%r1) 44 42 br %r14 ··· 68 70 srlg %r3,%r4,8 69 71 ltgr %r3,%r3 70 72 lgr %r1,%r2 71 - jz .Lmemset_clear_rest 73 + jz .Lmemset_clear_remainder 72 74 .Lmemset_clear_loop: 73 75 xc 0(256,%r1),0(%r1) 74 76 la %r1,256(%r1) 75 77 brctg %r3,.Lmemset_clear_loop 76 - .Lmemset_clear_rest: 78 + .Lmemset_clear_remainder: 77 79 larl %r3,.Lmemset_xc 78 80 ex %r4,0(%r3) 79 81 br %r14 ··· 85 87 aghi %r4,-2 86 88 srlg %r3,%r4,8 87 89 ltgr %r3,%r3 88 - jz .Lmemset_fill_rest 90 + jz .Lmemset_fill_remainder 89 91 .Lmemset_fill_loop: 90 92 mvc 1(256,%r1),0(%r1) 91 93 la %r1,256(%r1) 92 94 brctg %r3,.Lmemset_fill_loop 93 - .Lmemset_fill_rest: 95 + .Lmemset_fill_remainder: 94 96 larl %r3,.Lmemset_mvc 95 97 ex %r4,0(%r3) 96 98 br %r14 ··· 113 115 ltgr %r5,%r5 114 116 lgr %r1,%r2 115 117 jnz .Lmemcpy_loop 116 - .Lmemcpy_rest: 118 + .Lmemcpy_remainder: 117 119 larl %r5,.Lmemcpy_mvc 118 120 ex %r4,0(%r5) 119 121 br %r14 ··· 122 124 la %r1,256(%r1) 123 125 la %r3,256(%r3) 124 126 brctg %r5,.Lmemcpy_loop 125 - j .Lmemcpy_rest 127 + j .Lmemcpy_remainder 126 128 .Lmemcpy_mvc: 127 129 mvc 0(1,%r1),0(%r3) 128 130 EXPORT_SYMBOL(memcpy)