mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-02 14:27:17 +00:00
Add test for the SPL binary size and the bss section size. This will throw an error at build time if the SPL sections do not fit in the designated RAM area, thus avoiding oversizing the SPL. Based on original work by Wenyou Yang. Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
60 lines
1.1 KiB
Text
60 lines
1.1 KiB
Text
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright (C) 2015 Atmel Corporation
|
|
* Bo Shen <voice.shen@atmel.com>
|
|
*/
|
|
|
|
MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE, \
|
|
LENGTH = CONFIG_SPL_MAX_SIZE }
|
|
MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
|
|
LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
|
|
|
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
|
OUTPUT_ARCH(arm)
|
|
ENTRY(_start)
|
|
SECTIONS
|
|
{
|
|
.text :
|
|
{
|
|
__start = .;
|
|
*(.vectors)
|
|
arch/arm/cpu/arm926ejs/start.o (.text*)
|
|
*(.text*)
|
|
} >.sram
|
|
|
|
. = ALIGN(4);
|
|
.rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
|
|
|
|
. = ALIGN(4);
|
|
.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
|
|
|
|
. = ALIGN(4);
|
|
.u_boot_list : { KEEP(*(SORT(.u_boot_list*))) } > .sram
|
|
|
|
. = ALIGN(4);
|
|
__image_copy_end = .;
|
|
|
|
.end :
|
|
{
|
|
*(.__end)
|
|
} >.sram
|
|
|
|
.bss :
|
|
{
|
|
. = ALIGN(4);
|
|
__bss_start = .;
|
|
*(.bss*)
|
|
. = ALIGN(4);
|
|
__bss_end = .;
|
|
} >.sdram
|
|
}
|
|
|
|
#if defined(CONFIG_SPL_MAX_SIZE)
|
|
ASSERT(__image_copy_end - __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
|