]> 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)
commit991c6959ed2357cad46cbbb7b1f928408f5c7f11
tree9dba33b00aa95efa7a9e3db543e95e05b97553d6
parent6ae76bd4d467c7f3d479d597ba2069ada1989c23
powerpc: Convert flush_icache_range & friends to C

Similar to commit e50e8afe2d96
("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