• Jeenu Viswambharan's avatar
    xlat v2: Split MMU setup and enable · 0cc7aa89
    Jeenu Viswambharan authored
    
    
    At present, the function provided by the translation library to enable
    MMU constructs appropriate values for translation library, and programs
    them to the right registers. The construction of initial values,
    however, is only required once as both the primary and secondaries
    program the same values.
    
    Additionally, the MMU-enabling function is written in C, which means
    there's an active stack at the time of enabling MMU. On some systems,
    like Arm DynamIQ, having active stack while enabling MMU during warm
    boot might lead to coherency problems.
    
    This patch addresses both the above problems by:
    
      - Splitting the MMU-enabling function into two: one that sets up
        values to be programmed into the registers, and another one that
        takes the pre-computed values and writes to the appropriate
        registers. With this, the primary effectively calls both functions
        to have the MMU enabled, but secondaries only need to call the
        latter.
    
      - Rewriting the function that enables MMU in assembly so that it
        doesn't use stack.
    
    This patch fixes a bunch of MISRA issues on the way.
    
    Change-Id: I0faca97263a970ffe765f0e731a1417e43fbfc45
    Signed-off-by: default avatarJeenu Viswambharan <jeenu.viswambharan@arm.com>
    0cc7aa89
arch.h 18 KB