diff options
author | Dimitris Papastamos <dimitris.papastamos@arm.com> | 2018-06-07 14:49:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-07 14:49:25 +0100 |
commit | 4b557325835d49276a2a2f13e17dc4e3816d6af4 (patch) | |
tree | 1172a432f35749ad2c9d9a4c4bca848b4d056dda /include | |
parent | d003b190938fa9e50ad351015da4b5225c78ce14 (diff) | |
parent | 0f57fabf7f7928bd065e1bfc269dbed09be95445 (diff) | |
download | platform_external_arm-trusted-firmware-4b557325835d49276a2a2f13e17dc4e3816d6af4.tar.gz platform_external_arm-trusted-firmware-4b557325835d49276a2a2f13e17dc4e3816d6af4.tar.bz2 platform_external_arm-trusted-firmware-4b557325835d49276a2a2f13e17dc4e3816d6af4.zip |
Merge pull request #1404 from soby-mathew/sm/bl_layout_change
ARM platforms: Change memory layout and update documentation
Diffstat (limited to 'include')
-rw-r--r-- | include/plat/arm/board/common/board_arm_def.h | 18 | ||||
-rw-r--r-- | include/plat/arm/common/arm_def.h | 61 | ||||
-rw-r--r-- | include/plat/arm/css/common/css_def.h | 12 |
3 files changed, 37 insertions, 54 deletions
diff --git a/include/plat/arm/board/common/board_arm_def.h b/include/plat/arm/board/common/board_arm_def.h index 21ceae30a..2d8e4c139 100644 --- a/include/plat/arm/board/common/board_arm_def.h +++ b/include/plat/arm/board/common/board_arm_def.h @@ -93,21 +93,19 @@ #endif /* - * PLAT_ARM_MAX_BL31_SIZE is calculated using the current BL31 debug size plus a - * little space for growth. + * Since BL31 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL31_SIZE is + * calculated using the current BL31 PROGBITS debug size plus the sizes of + * BL2 and BL1-RW */ -#if ENABLE_SPM -# define PLAT_ARM_MAX_BL31_SIZE 0x40000 -#else -# define PLAT_ARM_MAX_BL31_SIZE 0x20000 -#endif +#define PLAT_ARM_MAX_BL31_SIZE 0x3B000 #ifdef AARCH32 /* - * PLAT_ARM_MAX_BL32_SIZE is calculated for SP_MIN as the AArch32 Secure - * Payload. + * Since BL32 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL32_SIZE is + * calculated using the current SP_MIN PROGBITS debug size plus the sizes of + * BL2 and BL1-RW */ -# define PLAT_ARM_MAX_BL32_SIZE 0x1D000 +# define PLAT_ARM_MAX_BL32_SIZE 0x3B000 #endif #endif /* ARM_BOARD_OPTIMISE_MEM */ diff --git a/include/plat/arm/common/arm_def.h b/include/plat/arm/common/arm_def.h index 18390d6a7..1f62ebe7d 100644 --- a/include/plat/arm/common/arm_def.h +++ b/include/plat/arm/common/arm_def.h @@ -317,7 +317,7 @@ * and limit. Leave enough space of BL2 meminfo. */ #define ARM_TB_FW_CONFIG_BASE ARM_BL_RAM_BASE + sizeof(meminfo_t) -#define ARM_TB_FW_CONFIG_LIMIT BL2_BASE +#define ARM_TB_FW_CONFIG_LIMIT ARM_BL_RAM_BASE + PAGE_SIZE /******************************************************************************* * BL1 specific defines. @@ -338,32 +338,18 @@ /******************************************************************************* * BL2 specific defines. ******************************************************************************/ -#if ARM_BL31_IN_DRAM -/* - * For AArch64 BL31 is loaded in the DRAM. - * Put BL2 just below BL1. - */ -#define BL2_BASE (BL1_RW_BASE - PLAT_ARM_MAX_BL2_SIZE) -#define BL2_LIMIT BL1_RW_BASE - -#elif BL2_AT_EL3 - -#define BL2_BASE ARM_BL_RAM_BASE +#if BL2_AT_EL3 +/* Put BL2 in the middle of the Trusted SRAM */ +#define BL2_BASE (ARM_TRUSTED_SRAM_BASE + \ + (PLAT_ARM_TRUSTED_SRAM_SIZE >> 1)) #define BL2_LIMIT (ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE) -#elif defined(AARCH32) || JUNO_AARCH32_EL3_RUNTIME -/* - * Put BL2 just below BL32. - */ -#define BL2_BASE (BL32_BASE - PLAT_ARM_MAX_BL2_SIZE) -#define BL2_LIMIT BL32_BASE - #else /* - * Put BL2 just below BL31. + * Put BL2 just below BL1. */ -#define BL2_BASE (BL31_BASE - PLAT_ARM_MAX_BL2_SIZE) -#define BL2_LIMIT BL31_BASE +#define BL2_BASE (BL1_RW_BASE - PLAT_ARM_MAX_BL2_SIZE) +#define BL2_LIMIT BL1_RW_BASE #endif /******************************************************************************* @@ -384,13 +370,10 @@ (PLAT_ARM_TRUSTED_SRAM_SIZE >> 1)) #define BL31_LIMIT (ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE) #else -/* - * Put BL31 at the top of the Trusted SRAM. - */ -#define BL31_BASE (ARM_BL_RAM_BASE + \ - ARM_BL_RAM_SIZE - \ - PLAT_ARM_MAX_BL31_SIZE) -#define BL31_PROGBITS_LIMIT BL1_RW_BASE +/* Put BL31 below BL2 in the Trusted SRAM.*/ +#define BL31_BASE ((ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE)\ + - PLAT_ARM_MAX_BL31_SIZE) +#define BL31_PROGBITS_LIMIT BL2_BASE #define BL31_LIMIT (ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE) #endif @@ -399,15 +382,17 @@ * BL32 specific defines for EL3 runtime in AArch32 mode ******************************************************************************/ # if RESET_TO_SP_MIN && !JUNO_AARCH32_EL3_RUNTIME -/* SP_MIN is the only BL image in SRAM. Allocate the whole of SRAM to BL32 */ -# define BL32_BASE ARM_BL_RAM_BASE +/* + * SP_MIN is the only BL image in SRAM. Allocate the whole of SRAM (excluding + * the page reserved for fw_configs) to BL32 + */ +# define BL32_BASE ARM_TB_FW_CONFIG_LIMIT # define BL32_LIMIT (ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE) # else -/* Put BL32 at the top of the Trusted SRAM.*/ -# define BL32_BASE (ARM_BL_RAM_BASE + \ - ARM_BL_RAM_SIZE - \ - PLAT_ARM_MAX_BL32_SIZE) -# define BL32_PROGBITS_LIMIT BL1_RW_BASE +/* Put BL32 below BL2 in the Trusted SRAM.*/ +# define BL32_BASE ((ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE)\ + - PLAT_ARM_MAX_BL32_SIZE) +# define BL32_PROGBITS_LIMIT BL2_BASE # define BL32_LIMIT (ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE) # endif /* RESET_TO_SP_MIN && !JUNO_AARCH32_EL3_RUNTIME */ @@ -438,8 +423,8 @@ # elif ARM_TSP_RAM_LOCATION_ID == ARM_TRUSTED_SRAM_ID # define TSP_SEC_MEM_BASE ARM_BL_RAM_BASE # define TSP_SEC_MEM_SIZE ARM_BL_RAM_SIZE -# define TSP_PROGBITS_LIMIT BL2_BASE -# define BL32_BASE ARM_BL_RAM_BASE +# define TSP_PROGBITS_LIMIT BL31_BASE +# define BL32_BASE ARM_TB_FW_CONFIG_LIMIT # define BL32_LIMIT BL31_BASE # elif ARM_TSP_RAM_LOCATION_ID == ARM_TRUSTED_DRAM_ID # define TSP_SEC_MEM_BASE PLAT_ARM_TRUSTED_DRAM_BASE diff --git a/include/plat/arm/css/common/css_def.h b/include/plat/arm/css/common/css_def.h index 6d68b4406..725c27cbc 100644 --- a/include/plat/arm/css/common/css_def.h +++ b/include/plat/arm/css/common/css_def.h @@ -158,14 +158,14 @@ /* * Load address of SCP_BL2 in CSS platform ports * SCP_BL2 is loaded to the same place as BL31 but it shouldn't overwrite BL1 - * rw data. Once SCP_BL2 is transferred to the SCP, it is discarded and BL31 - * is loaded over the top. + * rw data or BL2. Once SCP_BL2 is transferred to the SCP, it is discarded and + * BL31 is loaded over the top. */ -#define SCP_BL2_BASE (BL1_RW_BASE - PLAT_CSS_MAX_SCP_BL2_SIZE) -#define SCP_BL2_LIMIT BL1_RW_BASE +#define SCP_BL2_BASE (BL2_BASE - PLAT_CSS_MAX_SCP_BL2_SIZE) +#define SCP_BL2_LIMIT BL2_BASE -#define SCP_BL2U_BASE (BL1_RW_BASE - PLAT_CSS_MAX_SCP_BL2U_SIZE) -#define SCP_BL2U_LIMIT BL1_RW_BASE +#define SCP_BL2U_BASE (BL2_BASE - PLAT_CSS_MAX_SCP_BL2U_SIZE) +#define SCP_BL2U_LIMIT BL2_BASE #endif /* CSS_LOAD_SCP_IMAGES */ /* Load address of Non-Secure Image for CSS platform ports */ |