]> asedeno.scripts.mit.edu Git - linux.git/commit
powerpc/64: reuse PPC32 static inline flush_dcache_range()
authorChristophe Leroy <christophe.leroy@c-s.fr>
Tue, 14 May 2019 09:05:16 +0000 (09:05 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 4 Jul 2019 16:06:37 +0000 (02:06 +1000)
commit22e9c88d486a0536d337d6e0973968be0a4cd4b2
treef4cd5a3bbeb81807f5b8da1ae730556f72ecf5d7
parentd98fc70fc139b72ae098d24fde42ad70c8ff2f81
powerpc/64: reuse PPC32 static inline flush_dcache_range()

This patch drops the assembly PPC64 version of flush_dcache_range()
and re-uses the PPC32 static inline version.

With GCC 8.1, the following code is generated:

void flush_test(unsigned long start, unsigned long stop)
{
flush_dcache_range(start, stop);
}

0000000000000130 <.flush_test>:
 130: 3d 22 00 00  addis   r9,r2,0
132: R_PPC64_TOC16_HA .data+0x8
 134: 81 09 00 00  lwz     r8,0(r9)
136: R_PPC64_TOC16_LO .data+0x8
 138: 3d 22 00 00  addis   r9,r2,0
13a: R_PPC64_TOC16_HA .data+0xc
 13c: 80 e9 00 00  lwz     r7,0(r9)
13e: R_PPC64_TOC16_LO .data+0xc
 140: 7d 48 00 d0  neg     r10,r8
 144: 7d 43 18 38  and     r3,r10,r3
 148: 7c 00 04 ac  hwsync
 14c: 4c 00 01 2c  isync
 150: 39 28 ff ff  addi    r9,r8,-1
 154: 7c 89 22 14  add     r4,r9,r4
 158: 7c 83 20 50  subf    r4,r3,r4
 15c: 7c 89 3c 37  srd.    r9,r4,r7
 160: 41 82 00 1c  beq     17c <.flush_test+0x4c>
 164: 7d 29 03 a6  mtctr   r9
 168: 60 00 00 00  nop
 16c: 60 00 00 00  nop
 170: 7c 00 18 ac  dcbf    0,r3
 174: 7c 63 42 14  add     r3,r3,r8
 178: 42 00 ff f8  bdnz    170 <.flush_test+0x40>
 17c: 7c 00 04 ac  hwsync
 180: 4c 00 01 2c  isync
 184: 4e 80 00 20  blr
 188: 60 00 00 00  nop
 18c: 60 00 00 00  nop

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/cache.h
arch/powerpc/include/asm/cacheflush.h
arch/powerpc/kernel/misc_64.S