diff options
| -rw-r--r-- | README | 18 | ||||
| -rw-r--r-- | arch/arm/cpu/u-boot-spl.lds | 24 | ||||
| -rw-r--r-- | arch/arm/cpu/u-boot.lds | 4 | ||||
| -rw-r--r-- | include/configs/tegra-common.h | 2 | 
4 files changed, 30 insertions, 18 deletions
| @@ -2831,8 +2831,18 @@ FIT uImage format:  		CONFIG_SPL_LDSCRIPT  		LDSCRIPT for linking the SPL binary. +		CONFIG_SPL_MAX_FOOTPRINT +		Maximum size in memory allocated to the SPL, BSS included. +		When defined, the linker checks that the actual memory +		used by SPL from _start to __bss_end does not exceed it. +		CONFIG_SPL_MAX_FOOTPRINT and CONFIG_SPL_MAX_BSS_SIZE +		must not be both defined at the same time. +  		CONFIG_SPL_MAX_SIZE -		Maximum binary size (text, data and rodata) of the SPL binary. +		Maximum size of the SPL image (text, data, rodata, and +		linker lists sections), BSS excluded. +		When defined, the linker checks that the actual size does +		not exceed it.  		CONFIG_SPL_TEXT_BASE  		TEXT_BASE for linking the SPL binary. @@ -2845,7 +2855,11 @@ FIT uImage format:  		Link address for the BSS within the SPL binary.  		CONFIG_SPL_BSS_MAX_SIZE -		Maximum binary size of the BSS section of the SPL binary. +		Maximum size in memory allocated to the SPL BSS. +		When defined, the linker checks that the actual memory used +		by SPL from __bss_start to __bss_end does not exceed it. +		CONFIG_SPL_MAX_FOOTPRINT and CONFIG_SPL_MAX_BSS_SIZE +		must not be both defined at the same time.  		CONFIG_SPL_STACK  		Adress of the start of the stack SPL will use diff --git a/arch/arm/cpu/u-boot-spl.lds b/arch/arm/cpu/u-boot-spl.lds index 3c0d99ca3..1408f03b2 100644 --- a/arch/arm/cpu/u-boot-spl.lds +++ b/arch/arm/cpu/u-boot-spl.lds @@ -65,15 +65,6 @@ SECTIONS  	_end = .; -	/* -	 * Deprecated: this MMU section is used by pxa at present but -	 * should not be used by new boards/CPUs. -	 */ -	. = ALIGN(4096); -	.mmutable : { -		*(.mmutable) -	} -  	.bss __rel_dyn_start (OVERLAY) : {  		__bss_start = .;  		*(.bss*) @@ -88,6 +79,17 @@ SECTIONS  	/DISCARD/ : { *(.gnu*) }  } -#if defined(CONFIG_SPL_TEXT_BASE) && defined(CONFIG_SPL_MAX_SIZE) -ASSERT(__bss_end < (CONFIG_SPL_TEXT_BASE + CONFIG_SPL_MAX_SIZE), "SPL image too big"); +#if defined(CONFIG_SPL_MAX_SIZE) +ASSERT(__image_copy_end - __image_copy_start < (CONFIG_SPL_MAX_SIZE), \ +	"SPL image too big"); +#endif + +#if defined(CONFIG_SPL_BSS_MAX_SIZE) +ASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS_MAX_SIZE), \ +	"SPL image BSS too big"); +#endif + +#if defined(CONFIG_SPL_MAX_FOOTPRINT) +ASSERT(__bss_end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \ +	"SPL image plus BSS too big");  #endif diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds index d5e42d3ac..d9bbee3b2 100644 --- a/arch/arm/cpu/u-boot.lds +++ b/arch/arm/cpu/u-boot.lds @@ -107,7 +107,3 @@ SECTIONS  	/DISCARD/ : { *(.interp*) }  	/DISCARD/ : { *(.gnu*) }  } - -#if defined(CONFIG_SPL_TEXT_BASE) && defined(CONFIG_SPL_MAX_SIZE) -ASSERT(__bss_end < (CONFIG_SPL_TEXT_BASE + CONFIG_SPL_MAX_SIZE), "SPL image too big"); -#endif diff --git a/include/configs/tegra-common.h b/include/configs/tegra-common.h index 036ded0c7..e9241b8df 100644 --- a/include/configs/tegra-common.h +++ b/include/configs/tegra-common.h @@ -158,7 +158,7 @@  #define CONFIG_SPL_RAM_DEVICE  #define CONFIG_SPL_BOARD_INIT  #define CONFIG_SPL_NAND_SIMPLE -#define CONFIG_SPL_MAX_SIZE		(CONFIG_SYS_TEXT_BASE - \ +#define CONFIG_SPL_MAX_FOOTPRINT	(CONFIG_SYS_TEXT_BASE - \  						CONFIG_SPL_TEXT_BASE)  #define CONFIG_SYS_SPL_MALLOC_SIZE	0x00010000 |