blob: c4f83ec9cfc470f0cef0fff56e0c2e1a160fb4cc [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Scott Wood8e728cd2015-03-24 13:25:02 -07002/*
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>
Scott Wood8e728cd2015-03-24 13:25:02 -070012 */
13
Tom Rini2aaa27d2019-01-22 17:09:26 -050014MEMORY { .sram : ORIGIN = IMAGE_TEXT_BASE,
15 LENGTH = IMAGE_MAX_SIZE }
Simon Glass699f8a02024-09-20 09:24:33 +020016#ifdef CONFIG_SPL_SEPARATE_BSS
Scott Wood8e728cd2015-03-24 13:25:02 -070017MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR,
18 LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
Simon Glass699f8a02024-09-20 09:24:33 +020019#endif
Scott Wood8e728cd2015-03-24 13:25:02 -070020
21OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64")
22OUTPUT_ARCH(aarch64)
23ENTRY(_start)
24SECTIONS
25{
Ilias Apalodimascdb58392024-03-15 08:43:50 +020026 __image_copy_start = ADDR(.text);
Scott Wood8e728cd2015-03-24 13:25:02 -070027 .text : {
28 . = ALIGN(8);
Scott Wood8e728cd2015-03-24 13:25:02 -070029 CPUDIR/start.o (.text*)
30 *(.text*)
31 } >.sram
32
33 .rodata : {
34 . = ALIGN(8);
35 *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
36 } >.sram
37
38 .data : {
39 . = ALIGN(8);
Alif Zakuan Yuslaimi23fcaa92025-02-18 16:35:06 +080040 *(.__data_start)
Scott Wood8e728cd2015-03-24 13:25:02 -070041 *(.data*)
42 } >.sram
43
Peng Fan617fc292020-05-05 20:28:41 +080044#ifdef CONFIG_SPL_RECOVER_DATA_SECTION
45 .data_save : {
46 *(.__data_save_start)
47 . = SIZEOF(.data);
48 *(.__data_save_end)
49 } >.sram
50#endif
51
Andrew Scull5a9095c2022-05-30 10:00:04 +000052 __u_boot_list : {
Scott Wood8e728cd2015-03-24 13:25:02 -070053 . = ALIGN(8);
Andrew Scull5a9095c2022-05-30 10:00:04 +000054 KEEP(*(SORT(__u_boot_list*)));
Scott Wood8e728cd2015-03-24 13:25:02 -070055 } >.sram
56
Ilias Apalodimascdb58392024-03-15 08:43:50 +020057 . = ALIGN(8);
58 __image_copy_end = .;
Ilias Apalodimas80808462024-05-28 09:18:27 +030059 _end = .;
Masahiro Yamada9bcc5712016-03-08 20:34:44 +090060 _image_binary_end = .;
61
Simon Glass699f8a02024-09-20 09:24:33 +020062#ifdef CONFIG_SPL_SEPARATE_BSS
Ilias Apalodimas6d1e1b82024-03-15 08:43:46 +020063 .bss : {
64 __bss_start = .;
Scott Wood8e728cd2015-03-24 13:25:02 -070065 *(.bss*)
Ilias Apalodimas6d1e1b82024-03-15 08:43:46 +020066 . = ALIGN(8);
67 __bss_end = .;
Scott Wood8e728cd2015-03-24 13:25:02 -070068 } >.sdram
Simon Glass699f8a02024-09-20 09:24:33 +020069#else
70 .bss (NOLOAD) : {
71 __bss_start = .;
72 *(.bss*)
73 . = ALIGN(8);
74 __bss_end = .;
75 } >.sram
76#endif
77 __bss_size = __bss_end - __bss_start;
Scott Wood8e728cd2015-03-24 13:25:02 -070078
Marek BehĂșn57fd7992021-05-20 13:24:20 +020079 /DISCARD/ : { *(.rela*) }
Scott Wood8e728cd2015-03-24 13:25:02 -070080 /DISCARD/ : { *(.dynsym) }
81 /DISCARD/ : { *(.dynstr*) }
82 /DISCARD/ : { *(.dynamic*) }
83 /DISCARD/ : { *(.plt*) }
84 /DISCARD/ : { *(.interp*) }
85 /DISCARD/ : { *(.gnu*) }
Alper Nebi Yasak463eb092022-01-29 18:27:03 +030086
87#ifdef CONFIG_LINUX_KERNEL_IMAGE_HEADER
88#include "linux-kernel-image-header-vars.h"
89#endif
Scott Wood8e728cd2015-03-24 13:25:02 -070090}
Ilias Apalodimas6d1e1b82024-03-15 08:43:46 +020091
92ASSERT(ADDR(.bss) % 8 == 0, \
93 ".bss must be 8-byte aligned");