• Linus Walleij's avatar
    ARM: 9387/2: mm: Rewrite cacheflush vtables in CFI safe C · b4d20eff
    Linus Walleij authored
    Instead of defining all cache flush operations with an assembly
    macro in proc-macros.S, provide an explicit struct cpu_cache_fns
    for each CPU cache type in mm/cache.c.
    
    As a side effect from rewriting the vtables in C, we can
    avoid the aliasing for the "louis" cache callback, instead we
    can just assign the NN_flush_kern_cache_all() function to the
    louis callback in the C vtable.
    
    As the louis cache callback is called explicitly (not through the
    vtable) if we only have one type of cache support compiled in, we
    need an ifdef quirk for this in the !MULTI_CACHE case.
    
    Feroceon and XScale have some dma mapping quirk, in this case we
    can just define two structs and assign all but one callback to the
    main implementation; since each of them invoked define_cache_functions
    twice they require MULTI_CACHE by definition so the compiled-in
    shortcut is not used on these variants.
    Tested-by: default avatarKees Cook <keescook@chromium.org>
    Reviewed-by: default avatarSami Tolvanen <samitolvanen@google.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
    b4d20eff
proc-macros.S 8.24 KB