• Paul Burton's avatar
    MIPS: Adjust MIPS64 CAC_BASE to reflect Config.K0 · 3ffc17d8
    Paul Burton authored
    On MIPS64 we define the default CAC_BASE as one of the xkphys regions of
    the virtual address space. Since the CCA is encoded in bits 61:59 of
    xkphys addresses, fixing CAC_BASE to any particular one prevents us from
    dynamically changing the CCA as we do for MIPS32 where CAC_BASE is
    placed within kseg0. In order to make the kernel more generic, drop the
    current kludge that gives CAC_BASE CCA=3 if CONFIG_DMA_NONCOHERENT is
    selected (disregarding CONFIG_DMA_MAYBE_COHERENT) & CCA=5 (which is not
    standardised by the architecture) otherwise. Instead read Config.K0 and
    generate the appropriate offset into xkphys, presuming that either the
    bootloader or early kernel code will have configured Config.K0
    appropriately. This seems like the best option for a generic
    implementation.
    
    The ip27 spaces.h is adjusted to set its former value of CAC_BASE, since
    it's the only user of CAC_BASE from assembly (in its smp_slave_setup
    macro). This allows the generic case to focus solely on C code without
    breaking ip27.
    Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14351/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    3ffc17d8
spaces.h 2.25 KB