Browse Source

xlat: Make function to calculate TCR PA bits public

This function can be useful to setup TCR_ELx by callers that don't use
the translation tables library to setup the system registers related
to them. By making it common, it can be reused whenever it is needed
without duplicating code.

Change-Id: Ibfada9e846d2a6cd113b1925ac911bb27327d375
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
pull/1148/head
Antonio Nino Diaz 7 years ago
parent
commit
ad02a7596f
  1. 5
      include/lib/xlat_tables/aarch64/xlat_tables_aarch64.h
  2. 5
      lib/xlat_tables_v2/aarch64/xlat_tables_arch.c

5
include/lib/xlat_tables/aarch64/xlat_tables_aarch64.h

@ -15,6 +15,11 @@
#error "PAGE_SIZE is not defined."
#endif
/*
* Encode a Physical Address Space size for its use in TCR_ELx.
*/
unsigned long long tcr_physical_addr_size_bits(unsigned long long max_addr);
/*
* In AArch64 state, the MMU may support 4 KB, 16 KB and 64 KB page
* granularity. For 4KB granularity, a level 0 table descriptor doesn't support

5
lib/xlat_tables_v2/aarch64/xlat_tables_arch.c

@ -16,8 +16,7 @@
#include <xlat_tables_v2.h>
#include "../xlat_tables_private.h"
static unsigned long long calc_physical_addr_size_bits(
unsigned long long max_addr)
unsigned long long tcr_physical_addr_size_bits(unsigned long long max_addr)
{
/* Physical address can't exceed 48 bits */
assert((max_addr & ADDR_MASK_48_TO_63) == 0);
@ -252,7 +251,7 @@ void enable_mmu_arch(unsigned int flags,
* It is safer to restrict the max physical address accessible by the
* hardware as much as possible.
*/
unsigned long long tcr_ps_bits = calc_physical_addr_size_bits(max_pa);
unsigned long long tcr_ps_bits = tcr_physical_addr_size_bits(max_pa);
#if IMAGE_EL == 1
assert(IS_IN_EL(1));

Loading…
Cancel
Save