diff options
author | Vikram Kanigiri <vikram.kanigiri@arm.com> | 2016-01-20 15:57:35 +0000 |
---|---|---|
committer | Soby Mathew <soby.mathew@arm.com> | 2016-02-22 11:01:10 +0000 |
commit | c64a04486ff469a826c01aa563a8988006a712ec (patch) | |
tree | fe7c16aa2cc70180c2a0fd5e156fbded0c42fdae /include/plat/arm/board | |
parent | 85df7e44ce3974e2c78d99e6ea31f047de6de445 (diff) |
Rationalise MMU and Page table related constants on ARM platforms
`board_arm_def.h` contains multiple definitions of
`PLAT_ARM_MMAP_ENTRIES` and `MAX_XLAT_TABLES` that are optimised for
memory usage depending upon the chosen build configuration. To ease
maintenance of these constants, this patch replaces their multiple
definitions with a single set of definitions that will work on all ARM
platforms.
Platforms can override the defaults with optimal values by enabling the
`ARM_BOARD_OPTIMISE_MMAP` build option. An example has been provided in
the Juno ADP port.
Additionally, `PLAT_ARM_MMAP_ENTRIES` is increased by one to accomodate
future ARM platforms.
Change-Id: I5ba6490fdd1e118cc9cc2d988ad7e9c38492b6f0
Diffstat (limited to 'include/plat/arm/board')
-rw-r--r-- | include/plat/arm/board/common/board_arm_def.h | 88 |
1 files changed, 18 insertions, 70 deletions
diff --git a/include/plat/arm/board/common/board_arm_def.h b/include/plat/arm/board/common/board_arm_def.h index db2a8dfb..aaf419e2 100644 --- a/include/plat/arm/board/common/board_arm_def.h +++ b/include/plat/arm/board/common/board_arm_def.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -60,80 +60,28 @@ #endif /* - * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the - * plat_arm_mmap array defined for each BL stage. + * The constants below are not optimised for memory usage. Platforms that wish + * to optimise these constants should set `ARM_BOARD_OPTIMISE_MMAP` to 1 and + * provide there own values. */ -#if IMAGE_BL1 -# if PLAT_fvp -# if TRUSTED_BOARD_BOOT -# define PLAT_ARM_MMAP_ENTRIES 8 -# else -# define PLAT_ARM_MMAP_ENTRIES 7 -# endif /* TRUSTED_BOARD_BOOT */ -# else -# if TRUSTED_BOARD_BOOT -# define PLAT_ARM_MMAP_ENTRIES 7 -# else -# define PLAT_ARM_MMAP_ENTRIES 6 -# endif /* TRUSTED_BOARD_BOOT */ -# endif /* PLAT_ */ -#endif -#if IMAGE_BL2 -# if PLAT_fvp -# define PLAT_ARM_MMAP_ENTRIES 9 -# else -# define PLAT_ARM_MMAP_ENTRIES 8 -# endif -#endif -#if IMAGE_BL2U -# if PLAT_fvp -# define PLAT_ARM_MMAP_ENTRIES 3 -# else -# define PLAT_ARM_MMAP_ENTRIES 4 -#endif -#endif -#if IMAGE_BL31 -#define PLAT_ARM_MMAP_ENTRIES 5 -#endif -#if IMAGE_BL32 -#define PLAT_ARM_MMAP_ENTRIES 4 -#endif - +#if !ARM_BOARD_OPTIMISE_MMAP /* - * Platform specific page table and MMU setup constants + * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the + * plat_arm_mmap array defined for each BL stage. + * + * Provide relatively optimised values for the runtime images (BL31 and BL32). + * Optimisation is less important for the other, transient boot images so a + * common, maximum value is used across these images. */ -#if IMAGE_BL1 -# if TRUSTED_BOARD_BOOT -# define MAX_XLAT_TABLES 4 -# else -# if PLAT_juno -# define MAX_XLAT_TABLES 2 -# else -# define MAX_XLAT_TABLES 3 -# endif /* PLAT_ */ -# endif /* TRUSTED_BOARD_BOOT */ -#elif IMAGE_BL2 -# if PLAT_juno -# define MAX_XLAT_TABLES 3 -# else -# define MAX_XLAT_TABLES 4 -# endif /* PLAT_ */ -#elif IMAGE_BL2U -# if PLAT_juno -# define MAX_XLAT_TABLES 3 -# else -# define MAX_XLAT_TABLES 4 -# endif /* PLAT_ */ -#elif IMAGE_BL31 -# define MAX_XLAT_TABLES 2 -#elif IMAGE_BL32 -# if ARM_TSP_RAM_LOCATION_ID == ARM_DRAM_ID -# define MAX_XLAT_TABLES 3 -# else -# define MAX_XLAT_TABLES 2 -# endif +#if IMAGE_BL31 || IMAGE_BL32 +# define PLAT_ARM_MMAP_ENTRIES 6 +# define MAX_XLAT_TABLES 3 +#else +# define PLAT_ARM_MMAP_ENTRIES 9 +# define MAX_XLAT_TABLES 4 #endif +#endif /* ARM_BOARD_OPTIMISE_MMAP */ #define MAX_IO_DEVICES 3 #define MAX_IO_HANDLES 4 |