xref: /openbmc/u-boot/arch/arm/cpu/u-boot-spl.lds (revision 2f41ade79e5969ebea03a7dcadbeae8e03787d7e)
183d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */
265cdd643SAlbert ARIBAUD/*
365cdd643SAlbert ARIBAUD * Copyright (c) 2004-2008 Texas Instruments
465cdd643SAlbert ARIBAUD *
565cdd643SAlbert ARIBAUD * (C) Copyright 2002
665cdd643SAlbert ARIBAUD * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
765cdd643SAlbert ARIBAUD */
865cdd643SAlbert ARIBAUD
965cdd643SAlbert ARIBAUDOUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
1065cdd643SAlbert ARIBAUDOUTPUT_ARCH(arm)
1165cdd643SAlbert ARIBAUDENTRY(_start)
1265cdd643SAlbert ARIBAUDSECTIONS
1365cdd643SAlbert ARIBAUD{
1465cdd643SAlbert ARIBAUD	. = 0x00000000;
1565cdd643SAlbert ARIBAUD
1665cdd643SAlbert ARIBAUD	. = ALIGN(4);
1765cdd643SAlbert ARIBAUD	.text :
1865cdd643SAlbert ARIBAUD	{
1965cdd643SAlbert ARIBAUD		__image_copy_start = .;
2041623c91SAlbert ARIBAUD		*(.vectors)
2165cdd643SAlbert ARIBAUD		CPUDIR/start.o (.text*)
2265cdd643SAlbert ARIBAUD		*(.text*)
2368f83555SMans Rullgard		*(.glue*)
2465cdd643SAlbert ARIBAUD	}
2565cdd643SAlbert ARIBAUD
2665cdd643SAlbert ARIBAUD	. = ALIGN(4);
2765cdd643SAlbert ARIBAUD	.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
2865cdd643SAlbert ARIBAUD
2965cdd643SAlbert ARIBAUD	. = ALIGN(4);
3065cdd643SAlbert ARIBAUD	.data : {
3165cdd643SAlbert ARIBAUD		*(.data*)
3265cdd643SAlbert ARIBAUD	}
3365cdd643SAlbert ARIBAUD
3465cdd643SAlbert ARIBAUD	. = ALIGN(4);
35f8fff9daSSimon Glass	.u_boot_list : {
36f8a48263STom Rini		KEEP(*(SORT(.u_boot_list*)));
374eae498eSSimon Glass	}
384eae498eSSimon Glass
39f8fff9daSSimon Glass	. = ALIGN(4);
40cf2a8fd6SSimon Glass	.binman_sym_table : {
41cf2a8fd6SSimon Glass		__binman_sym_start = .;
42cf2a8fd6SSimon Glass		KEEP(*(SORT(.binman_sym*)));
43cf2a8fd6SSimon Glass		__binman_sym_end = .;
44cf2a8fd6SSimon Glass	}
45cf2a8fd6SSimon Glass
46cf2a8fd6SSimon Glass	. = ALIGN(4);
4765cdd643SAlbert ARIBAUD
4865cdd643SAlbert ARIBAUD	__image_copy_end = .;
4965cdd643SAlbert ARIBAUD
5065cdd643SAlbert ARIBAUD	.rel.dyn : {
5165cdd643SAlbert ARIBAUD		__rel_dyn_start = .;
5265cdd643SAlbert ARIBAUD		*(.rel*)
5365cdd643SAlbert ARIBAUD		__rel_dyn_end = .;
5465cdd643SAlbert ARIBAUD	}
5565cdd643SAlbert ARIBAUD
56d0b5d9daSAlbert ARIBAUD	.end :
57d0b5d9daSAlbert ARIBAUD	{
58d0b5d9daSAlbert ARIBAUD		*(.__end)
59d0b5d9daSAlbert ARIBAUD	}
60d0b5d9daSAlbert ARIBAUD
61d0b5d9daSAlbert ARIBAUD	_image_binary_end = .;
6265cdd643SAlbert ARIBAUD
6365cdd643SAlbert ARIBAUD	.bss __rel_dyn_start (OVERLAY) : {
6465cdd643SAlbert ARIBAUD		__bss_start = .;
6565cdd643SAlbert ARIBAUD		*(.bss*)
6665cdd643SAlbert ARIBAUD		 . = ALIGN(4);
670ce033d2STom Rini		__bss_end = .;
6865cdd643SAlbert ARIBAUD	}
69fa78e0a3SSimon Glass	__bss_size = __bss_end - __bss_start;
70d0b5d9daSAlbert ARIBAUD	.dynsym _image_binary_end : { *(.dynsym) }
7147ed5dd0SAlbert ARIBAUD	.dynbss : { *(.dynbss) }
7247ed5dd0SAlbert ARIBAUD	.dynstr : { *(.dynstr*) }
7347ed5dd0SAlbert ARIBAUD	.dynamic : { *(.dynamic*) }
7447ed5dd0SAlbert ARIBAUD	.hash : { *(.hash*) }
7547ed5dd0SAlbert ARIBAUD	.plt : { *(.plt*) }
7647ed5dd0SAlbert ARIBAUD	.interp : { *(.interp*) }
7747ed5dd0SAlbert ARIBAUD	.gnu : { *(.gnu*) }
7847ed5dd0SAlbert ARIBAUD	.ARM.exidx : { *(.ARM.exidx*) }
7965cdd643SAlbert ARIBAUD}
8065cdd643SAlbert ARIBAUD
81*2f41ade7STom Rini#if defined(IMAGE_MAX_SIZE)
82*2f41ade7STom RiniASSERT(__image_copy_end - __image_copy_start < (IMAGE_MAX_SIZE), \
836ebc3461SAlbert ARIBAUD	"SPL image too big");
846ebc3461SAlbert ARIBAUD#endif
856ebc3461SAlbert ARIBAUD
866ebc3461SAlbert ARIBAUD#if defined(CONFIG_SPL_BSS_MAX_SIZE)
876ebc3461SAlbert ARIBAUDASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS_MAX_SIZE), \
886ebc3461SAlbert ARIBAUD	"SPL image BSS too big");
896ebc3461SAlbert ARIBAUD#endif
906ebc3461SAlbert ARIBAUD
916ebc3461SAlbert ARIBAUD#if defined(CONFIG_SPL_MAX_FOOTPRINT)
926ebc3461SAlbert ARIBAUDASSERT(__bss_end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \
936ebc3461SAlbert ARIBAUD	"SPL image plus BSS too big");
9465cdd643SAlbert ARIBAUD#endif
95