juno: Use the enable_mmu_elX() functions from lib/aarch64/xlat_tables.c
Juno code can re-use the enable_mmu_elX() functions from lib/aarch64/xlat_tables.c. Because the Juno port now includes plat/common/aarch64/plat_common.c the juno specific 'plat_common.c' needs to be renamed to avoid name conflicts at build time. Change-Id: I1e9cc6484643fbf516dfac0236573e0474ccc0a2
This commit is contained in:
parent
4e13f1af9e
commit
494db58083
|
@ -31,7 +31,7 @@
|
|||
# TSP source files specific to Juno platform
|
||||
BL32_SOURCES += drivers/arm/gic/gic_v2.c \
|
||||
plat/common/aarch64/platform_mp_stack.S \
|
||||
plat/juno/aarch64/plat_common.c \
|
||||
plat/juno/aarch64/juno_common.c \
|
||||
plat/juno/aarch64/plat_helpers.S \
|
||||
plat/juno/bl32_plat_setup.c \
|
||||
plat/juno/plat_gic.c
|
||||
|
|
|
@ -35,66 +35,7 @@
|
|||
#include <platform.h>
|
||||
#include <platform_def.h>
|
||||
#include <xlat_tables.h>
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Macro generating the code for the function enabling the MMU in the given
|
||||
* exception level, assuming that the pagetables have already been created.
|
||||
*
|
||||
* _el: Exception level at which the function will run
|
||||
* _tcr_extra: Extra bits to set in the TCR register. This mask will
|
||||
* be OR'ed with the default TCR value.
|
||||
* _tlbi_fct: Function to invalidate the TLBs at the current
|
||||
* exception level
|
||||
******************************************************************************/
|
||||
#define DEFINE_ENABLE_MMU_EL(_el, _tcr_extra, _tlbi_fct) \
|
||||
void enable_mmu_el##_el(void) \
|
||||
{ \
|
||||
uint64_t mair, tcr, ttbr; \
|
||||
uint32_t sctlr; \
|
||||
\
|
||||
assert(IS_IN_EL(_el)); \
|
||||
assert((read_sctlr_el##_el() & SCTLR_M_BIT) == 0); \
|
||||
\
|
||||
/* Set attributes in the right indices of the MAIR */ \
|
||||
mair = MAIR_ATTR_SET(ATTR_DEVICE, ATTR_DEVICE_INDEX); \
|
||||
mair |= MAIR_ATTR_SET(ATTR_IWBWA_OWBWA_NTR, \
|
||||
ATTR_IWBWA_OWBWA_NTR_INDEX); \
|
||||
write_mair_el##_el(mair); \
|
||||
\
|
||||
/* Invalidate TLBs at the current exception level */ \
|
||||
_tlbi_fct(); \
|
||||
\
|
||||
/* Set TCR bits as well. */ \
|
||||
/* Inner & outer WBWA & shareable + T0SZ = 32 */ \
|
||||
tcr = TCR_SH_INNER_SHAREABLE | TCR_RGN_OUTER_WBA | \
|
||||
TCR_RGN_INNER_WBA | TCR_T0SZ_4GB; \
|
||||
tcr |= _tcr_extra; \
|
||||
write_tcr_el##_el(tcr); \
|
||||
\
|
||||
/* Set TTBR bits as well */ \
|
||||
ttbr = (uint64_t) l1_xlation_table; \
|
||||
write_ttbr0_el##_el(ttbr); \
|
||||
\
|
||||
/* Ensure all translation table writes have drained */ \
|
||||
/* into memory, the TLB invalidation is complete, */ \
|
||||
/* and translation register writes are committed */ \
|
||||
/* before enabling the MMU */ \
|
||||
dsb(); \
|
||||
isb(); \
|
||||
\
|
||||
sctlr = read_sctlr_el##_el(); \
|
||||
sctlr |= SCTLR_WXN_BIT | SCTLR_M_BIT | SCTLR_I_BIT; \
|
||||
sctlr |= SCTLR_A_BIT | SCTLR_C_BIT; \
|
||||
write_sctlr_el##_el(sctlr); \
|
||||
\
|
||||
/* Ensure the MMU enable takes effect immediately */ \
|
||||
isb(); \
|
||||
}
|
||||
|
||||
/* Define EL1 and EL3 variants of the function enabling the MMU */
|
||||
DEFINE_ENABLE_MMU_EL(1, 0, tlbivmalle1)
|
||||
DEFINE_ENABLE_MMU_EL(3, TCR_EL3_RES1, tlbialle3)
|
||||
#include "../juno_def.h"
|
||||
|
||||
/*
|
||||
* Table of regions to map using the MMU.
|
|
@ -67,8 +67,6 @@ void bl2_plat_arch_setup(void);
|
|||
void bl31_plat_arch_setup(void);
|
||||
int platform_setup_pm(const struct plat_pm_ops **plat_ops);
|
||||
unsigned int platform_get_core_pos(unsigned long mpidr);
|
||||
void enable_mmu_el1(void);
|
||||
void enable_mmu_el3(void);
|
||||
void configure_mmu_el1(unsigned long total_base,
|
||||
unsigned long total_size,
|
||||
unsigned long ro_start,
|
||||
|
|
|
@ -37,6 +37,7 @@ PLAT_BL_COMMON_SOURCES := drivers/arm/pl011/pl011_console.c \
|
|||
lib/mmio.c \
|
||||
lib/aarch64/xlat_tables.c \
|
||||
lib/aarch64/sysreg_helpers.S \
|
||||
plat/common/aarch64/plat_common.c \
|
||||
plat/juno/plat_io_storage.c
|
||||
|
||||
BL1_SOURCES += drivers/arm/cci400/cci400.c \
|
||||
|
@ -44,14 +45,14 @@ BL1_SOURCES += drivers/arm/cci400/cci400.c \
|
|||
plat/juno/bl1_plat_setup.c \
|
||||
plat/juno/aarch64/bl1_plat_helpers.S \
|
||||
plat/juno/aarch64/plat_helpers.S \
|
||||
plat/juno/aarch64/plat_common.c
|
||||
plat/juno/aarch64/juno_common.c
|
||||
|
||||
BL2_SOURCES += lib/locks/bakery/bakery_lock.c \
|
||||
plat/common/aarch64/platform_up_stack.S \
|
||||
plat/juno/bl2_plat_setup.c \
|
||||
plat/juno/mhu.c \
|
||||
plat/juno/aarch64/plat_helpers.S \
|
||||
plat/juno/aarch64/plat_common.c \
|
||||
plat/juno/aarch64/juno_common.c \
|
||||
plat/juno/scp_bootloader.c \
|
||||
plat/juno/scpi.c
|
||||
|
||||
|
@ -61,7 +62,7 @@ BL31_SOURCES += drivers/arm/cci400/cci400.c \
|
|||
plat/juno/bl31_plat_setup.c \
|
||||
plat/juno/mhu.c \
|
||||
plat/juno/aarch64/plat_helpers.S \
|
||||
plat/juno/aarch64/plat_common.c \
|
||||
plat/juno/aarch64/juno_common.c \
|
||||
plat/juno/plat_pm.c \
|
||||
plat/juno/plat_topology.c \
|
||||
plat/juno/plat_gic.c \
|
||||
|
|
Loading…
Reference in New Issue