1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * (C) Copyright 2013
4 * David Feng <fenghua@phytium.com.cn>
5 *
6 * (C) Copyright 2002
7 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
8 *
9 * (C) Copyright 2010
10 * Texas Instruments, <www.ti.com>
11 *	Aneesh V <aneesh@ti.com>
12 */
13
14MEMORY { .sram : ORIGIN = IMAGE_TEXT_BASE,
15		LENGTH = IMAGE_MAX_SIZE }
16MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR,
17		LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
18
19OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64")
20OUTPUT_ARCH(aarch64)
21ENTRY(_start)
22SECTIONS
23{
24	__image_copy_start = ADDR(.text);
25	.text : {
26		. = ALIGN(8);
27		CPUDIR/start.o (.text*)
28		*(.text*)
29	} >.sram
30
31	.rodata : {
32		. = ALIGN(8);
33		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
34	} >.sram
35
36	.data : {
37		. = ALIGN(8);
38		*(.data*)
39	} >.sram
40
41#ifdef CONFIG_SPL_RECOVER_DATA_SECTION
42	.data_save : {
43		*(.__data_save_start)
44		. = SIZEOF(.data);
45		*(.__data_save_end)
46	} >.sram
47#endif
48
49	__u_boot_list : {
50		. = ALIGN(8);
51		KEEP(*(SORT(__u_boot_list*)));
52	} >.sram
53
54	. = ALIGN(8);
55	__image_copy_end = .;
56
57	.end : {
58		. = ALIGN(8);
59		*(.__end)
60	} >.sram
61
62	_image_binary_end = .;
63
64	.bss : {
65		__bss_start = .;
66		*(.bss*)
67		. = ALIGN(8);
68		__bss_end = .;
69	} >.sdram
70
71	/DISCARD/ : { *(.rela*) }
72	/DISCARD/ : { *(.dynsym) }
73	/DISCARD/ : { *(.dynstr*) }
74	/DISCARD/ : { *(.dynamic*) }
75	/DISCARD/ : { *(.plt*) }
76	/DISCARD/ : { *(.interp*) }
77	/DISCARD/ : { *(.gnu*) }
78
79#ifdef CONFIG_LINUX_KERNEL_IMAGE_HEADER
80#include "linux-kernel-image-header-vars.h"
81#endif
82}
83
84ASSERT(ADDR(.bss) % 8 == 0, \
85       ".bss must be 8-byte aligned");
86