aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm
diff options
context:
space:
mode:
authorChristophe Leroy <christophe.leroy@c-s.fr>2017-08-23 16:54:32 +0200
committerMichael Ellerman <mpe@ellerman.id.au>2017-09-01 16:42:45 +1000
commitda74f659205ea08cb0fd0b3050637b0e0eb31520 (patch)
treef0303ef115eb0acc4c2139b978afdc79f4cf6a90 /arch/powerpc/mm
parentpowerpc: Wrap register number correctly for string load/store instructions (diff)
downloadlinux-dev-da74f659205ea08cb0fd0b3050637b0e0eb31520.tar.xz
linux-dev-da74f659205ea08cb0fd0b3050637b0e0eb31520.zip
powerpc/32: add memset16()
Commit 694fc88ce271f ("powerpc/string: Implement optimized memset variants") added memset16(), memset32() and memset64() for the 64 bits PPC. On 32 bits, memset64() is not relevant, and as shown below, the generic version of memset32() gives a good code, so only memset16() is candidate for an optimised version. 000009c0 <memset32>: 9c0: 2c 05 00 00 cmpwi r5,0 9c4: 39 23 ff fc addi r9,r3,-4 9c8: 4d 82 00 20 beqlr 9cc: 7c a9 03 a6 mtctr r5 9d0: 94 89 00 04 stwu r4,4(r9) 9d4: 42 00 ff fc bdnz 9d0 <memset32+0x10> 9d8: 4e 80 00 20 blr The last part of memset() handling the not 4-bytes multiples operates on bytes, making it unsuitable for handling word without modification. As it would increase memset() complexity, it is better to implement memset16() from scratch. In addition it has the advantage of allowing a more optimised memset16() than what we would have by using the memset() function. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/mm')
0 files changed, 0 insertions, 0 deletions