mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-27 23:35:10 +00:00
Minor fixes to the xlat tables lib v2
- Fix some comments. - Remove duplicated definition. - Make xlat_arch_get_max_supported_pa() private in aarch64. Change-Id: I629237209cfb2ce7b0c4bd539d63dd81d45b2edd Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
parent
5e62327786
commit
e769db3eb8
4 changed files with 26 additions and 12 deletions
|
@ -83,18 +83,25 @@ typedef struct mmap_region {
|
||||||
} mmap_region_t;
|
} mmap_region_t;
|
||||||
|
|
||||||
/* Generic translation table APIs */
|
/* Generic translation table APIs */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize translation tables from the current list of mmap regions. Calling
|
||||||
|
* this function marks the transition point after which static regions can no
|
||||||
|
* longer be added.
|
||||||
|
*/
|
||||||
void init_xlat_tables(void);
|
void init_xlat_tables(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add a region with defined base PA and base VA. This type of region can only
|
* Add a static region with defined base PA and base VA. This function can only
|
||||||
* be added before initializing the MMU and cannot be removed later.
|
* be used before initializing the translation tables. The region cannot be
|
||||||
|
* removed afterwards.
|
||||||
*/
|
*/
|
||||||
void mmap_add_region(unsigned long long base_pa, uintptr_t base_va,
|
void mmap_add_region(unsigned long long base_pa, uintptr_t base_va,
|
||||||
size_t size, mmap_attr_t attr);
|
size_t size, mmap_attr_t attr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add a region with defined base PA and base VA. This type of region can be
|
* Add a dynamic region with defined base PA and base VA. This type of region
|
||||||
* added and removed even if the MMU is enabled.
|
* can be added and removed even after the translation tables are initialized.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Returns:
|
||||||
* 0: Success.
|
* 0: Success.
|
||||||
|
@ -107,15 +114,16 @@ int mmap_add_dynamic_region(unsigned long long base_pa, uintptr_t base_va,
|
||||||
size_t size, mmap_attr_t attr);
|
size_t size, mmap_attr_t attr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add an array of static regions with defined base PA and base VA. This type
|
* Add an array of static regions with defined base PA and base VA. This
|
||||||
* of region can only be added before initializing the MMU and cannot be
|
* function can only be used before initializing the translation tables. The
|
||||||
* removed later.
|
* regions cannot be removed afterwards.
|
||||||
*/
|
*/
|
||||||
void mmap_add(const mmap_region_t *mm);
|
void mmap_add(const mmap_region_t *mm);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remove a region with the specified base VA and size. Only dynamic regions can
|
* Remove a region with the specified base VA and size. Only dynamic regions can
|
||||||
* be removed, and they can be removed even if the MMU is enabled.
|
* be removed, and they can be removed even if the translation tables are
|
||||||
|
* initialized.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Returns:
|
||||||
* 0: Success.
|
* 0: Success.
|
||||||
|
|
|
@ -60,7 +60,7 @@ static const unsigned int pa_range_bits_arr[] = {
|
||||||
PARANGE_0101
|
PARANGE_0101
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned long long xlat_arch_get_max_supported_pa(void)
|
static unsigned long long xlat_arch_get_max_supported_pa(void)
|
||||||
{
|
{
|
||||||
u_register_t pa_range = read_id_aa64mmfr0_el1() &
|
u_register_t pa_range = read_id_aa64mmfr0_el1() &
|
||||||
ID_AA64MMFR0_EL1_PARANGE_MASK;
|
ID_AA64MMFR0_EL1_PARANGE_MASK;
|
||||||
|
|
|
@ -34,8 +34,6 @@ static uint64_t tf_xlat_tables[MAX_XLAT_TABLES][XLAT_TABLE_ENTRIES]
|
||||||
static uint64_t tf_base_xlat_table[NUM_BASE_LEVEL_ENTRIES]
|
static uint64_t tf_base_xlat_table[NUM_BASE_LEVEL_ENTRIES]
|
||||||
__aligned(NUM_BASE_LEVEL_ENTRIES * sizeof(uint64_t));
|
__aligned(NUM_BASE_LEVEL_ENTRIES * sizeof(uint64_t));
|
||||||
|
|
||||||
static mmap_region_t tf_mmap[MAX_MMAP_REGIONS + 1];
|
|
||||||
|
|
||||||
#if PLAT_XLAT_TABLES_DYNAMIC
|
#if PLAT_XLAT_TABLES_DYNAMIC
|
||||||
static int xlat_tables_mapped_regions[MAX_XLAT_TABLES];
|
static int xlat_tables_mapped_regions[MAX_XLAT_TABLES];
|
||||||
#endif /* PLAT_XLAT_TABLES_DYNAMIC */
|
#endif /* PLAT_XLAT_TABLES_DYNAMIC */
|
||||||
|
|
|
@ -47,8 +47,11 @@ typedef struct {
|
||||||
* Array of all memory regions stored in order of ascending end address
|
* Array of all memory regions stored in order of ascending end address
|
||||||
* and ascending size to simplify the code that allows overlapping
|
* and ascending size to simplify the code that allows overlapping
|
||||||
* regions. The list is terminated by the first entry with size == 0.
|
* regions. The list is terminated by the first entry with size == 0.
|
||||||
|
* The max size of the list is stored in `mmap_num`. `mmap` points to an
|
||||||
|
* array of mmap_num + 1 elements, so that there is space for the final
|
||||||
|
* null entry.
|
||||||
*/
|
*/
|
||||||
mmap_region_t *mmap; /* mmap_num + 1 elements */
|
mmap_region_t *mmap;
|
||||||
int mmap_num;
|
int mmap_num;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -75,6 +78,11 @@ typedef struct {
|
||||||
uint64_t *base_table;
|
uint64_t *base_table;
|
||||||
int base_table_entries;
|
int base_table_entries;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Max Physical and Virtual addresses currently in use by the
|
||||||
|
* translation tables. These might get updated as we map/unmap memory
|
||||||
|
* regions but they will never go beyond pa/va_max_address.
|
||||||
|
*/
|
||||||
unsigned long long max_pa;
|
unsigned long long max_pa;
|
||||||
uintptr_t max_va;
|
uintptr_t max_va;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue