]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc: Convert flush_icache_range & friends to C
authorAlastair D'Silva <alastair@d-silva.org>
Mon, 4 Nov 2019 02:32:56 +0000 (13:32 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 7 Nov 2019 12:35:37 +0000 (23:35 +1100)
commit076b4aea67f62f8c896b450d0886a1fc467b2cb7
tree9dba33b00aa95efa7a9e3db543e95e05b97553d6
parentdf7e07c7a770ac63c6c73cb63603b7dc7627c9a1
powerpc: Convert flush_icache_range & friends to C

Similar to commit 6de5d1843658
("powerpc/64: reuse PPC32 static inline flush_dcache_range()")
this patch converts the following ASM symbols to C:
    flush_icache_range()
    __flush_dcache_icache()
    __flush_dcache_icache_phys()

This was done as we discovered a long-standing bug where the length of the
range was truncated due to using a 32 bit shift instead of a 64 bit one.

By converting these functions to C, it becomes easier to maintain.

flush_dcache_icache_phys() retains a critical assembler section as we must
ensure there are no memory accesses while the data MMU is disabled
(authored by Christophe Leroy). Since this has no external callers, it has
also been made static, allowing the compiler to inline it within
flush_dcache_icache_page().

Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
[mpe: Minor fixups, don't export __flush_dcache_icache()]
Link: https://lore.kernel.org/r/20191104023305.9581-5-alastair@au1.ibm.com
arch/powerpc/include/asm/cache.h
arch/powerpc/include/asm/cacheflush.h
arch/powerpc/kernel/misc_32.S
arch/powerpc/kernel/misc_64.S
arch/powerpc/mm/mem.c