xref: /openbmc/u-boot/arch/x86/cpu/u-boot.lds (revision 26699998e9f4adb8c0ac8b36a2c3089fa8f05283)
183d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */
2fea25720SGraeme Russ/*
3fea25720SGraeme Russ * (C) Copyright 2002
4fa82f871SAlbert ARIBAUD * Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
5fea25720SGraeme Russ */
6fea25720SGraeme Russ
7fea25720SGraeme Russ#include <config.h>
8fea25720SGraeme RussOUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
9fea25720SGraeme RussOUTPUT_ARCH(i386)
10fea25720SGraeme RussENTRY(_start)
11fea25720SGraeme Russ
12fea25720SGraeme RussSECTIONS
13fea25720SGraeme Russ{
14c1352119SSimon Glass#ifndef CONFIG_CMDLINE
15c1352119SSimon Glass	/DISCARD/ : { *(.u_boot_list_2_cmd_*) }
16c1352119SSimon Glass#endif
17c1352119SSimon Glass
18fea25720SGraeme Russ	. = CONFIG_SYS_TEXT_BASE;	/* Location of bootcode in flash */
19fea25720SGraeme Russ	__text_start = .;
207e21fbcaSAlexander Graf
217e21fbcaSAlexander Graf	.text.start : { *(.text.start); }
227e21fbcaSAlexander Graf
237e21fbcaSAlexander Graf	.__efi_runtime_start : {
247e21fbcaSAlexander Graf		*(.__efi_runtime_start)
257e21fbcaSAlexander Graf	}
267e21fbcaSAlexander Graf
277e21fbcaSAlexander Graf	.efi_runtime : {
287e21fbcaSAlexander Graf		*(.text.efi_runtime*)
297e21fbcaSAlexander Graf		*(.rodata.efi_runtime*)
307e21fbcaSAlexander Graf		*(.data.efi_runtime*)
317e21fbcaSAlexander Graf	}
327e21fbcaSAlexander Graf
337e21fbcaSAlexander Graf	.__efi_runtime_stop : {
347e21fbcaSAlexander Graf		*(.__efi_runtime_stop)
357e21fbcaSAlexander Graf	}
367e21fbcaSAlexander Graf
37fea25720SGraeme Russ	.text  : { *(.text*); }
38fea25720SGraeme Russ
39fea25720SGraeme Russ	. = ALIGN(4);
40fea25720SGraeme Russ
41fea25720SGraeme Russ	. = ALIGN(4);
4255675142SMarek Vasut	.u_boot_list : {
43ef123c52SAlbert ARIBAUD		KEEP(*(SORT(.u_boot_list*)));
4455675142SMarek Vasut	}
4555675142SMarek Vasut
4655675142SMarek Vasut	. = ALIGN(4);
4765e4c0b1SSimon Glass	.rodata : {
4865e4c0b1SSimon Glass		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
4965e4c0b1SSimon Glass		KEEP(*(.rodata.efi.init));
5065e4c0b1SSimon Glass	}
51fea25720SGraeme Russ
52fea25720SGraeme Russ	. = ALIGN(4);
53fea25720SGraeme Russ	.data : { *(.data*) }
54fea25720SGraeme Russ
55fea25720SGraeme Russ	. = ALIGN(4);
56fea25720SGraeme Russ	.hash : { *(.hash*) }
57fea25720SGraeme Russ
58fea25720SGraeme Russ	. = ALIGN(4);
59fea25720SGraeme Russ	.got : { *(.got*) }
60fea25720SGraeme Russ
61fea25720SGraeme Russ	. = ALIGN(4);
6265e4c0b1SSimon Glass
6365e4c0b1SSimon Glass	.efi_runtime_rel_start :
6465e4c0b1SSimon Glass	{
6565e4c0b1SSimon Glass		*(.__efi_runtime_rel_start)
6665e4c0b1SSimon Glass	}
6765e4c0b1SSimon Glass
6865e4c0b1SSimon Glass	.efi_runtime_rel : {
697e21fbcaSAlexander Graf		*(.rel*.efi_runtime)
707e21fbcaSAlexander Graf		*(.rel*.efi_runtime.*)
7165e4c0b1SSimon Glass	}
7265e4c0b1SSimon Glass
7365e4c0b1SSimon Glass	.efi_runtime_rel_stop :
7465e4c0b1SSimon Glass	{
7565e4c0b1SSimon Glass		*(.__efi_runtime_rel_stop)
7665e4c0b1SSimon Glass	}
7765e4c0b1SSimon Glass
7865e4c0b1SSimon Glass	. = ALIGN(4);
7965e4c0b1SSimon Glass
80fea25720SGraeme Russ	__data_end = .;
8186cfb6bdSSimon Glass	__init_end = .;
82fea25720SGraeme Russ
83fea25720SGraeme Russ	. = ALIGN(4);
84f82d15eaSSimon Glass	.dynsym : { *(.dynsym*) }
85fea25720SGraeme Russ
86fea25720SGraeme Russ	. = ALIGN(4);
87fea25720SGraeme Russ	__rel_dyn_start = .;
88091c4943SSimon Glass	.rel.dyn : {
89091c4943SSimon Glass		*(.rel*)
90091c4943SSimon Glass	}
91fea25720SGraeme Russ	__rel_dyn_end = .;
924b491b8dSSimon Glass	. = ALIGN(4);
934b491b8dSSimon Glass	_end = .;
94fea25720SGraeme Russ
95f82d15eaSSimon Glass	.bss __rel_dyn_start (OVERLAY) : {
96f82d15eaSSimon Glass		__bss_start = .;
97*6331cb21SAlexander Graf		*(.bss*)
98f82d15eaSSimon Glass		*(COM*)
99f82d15eaSSimon Glass		. = ALIGN(4);
100f82d15eaSSimon Glass		__bss_end = .;
101f82d15eaSSimon Glass	}
102f82d15eaSSimon Glass
103fea25720SGraeme Russ	/DISCARD/ : { *(.dynstr*) }
104fea25720SGraeme Russ	/DISCARD/ : { *(.dynamic*) }
105fea25720SGraeme Russ	/DISCARD/ : { *(.plt*) }
106fea25720SGraeme Russ	/DISCARD/ : { *(.interp*) }
107fea25720SGraeme Russ	/DISCARD/ : { *(.gnu*) }
108fea25720SGraeme Russ
109972188b3SSimon Glass#ifdef CONFIG_X86_16BIT_INIT
110fea25720SGraeme Russ	/*
111fea25720SGraeme Russ	 * The following expressions place the 16-bit Real-Mode code and
112fea25720SGraeme Russ	 * Reset Vector at the end of the Flash ROM
113fea25720SGraeme Russ	 */
114a6a95784SSimon Glass	. = START_16 - RESET_SEG_START;
115a6a95784SSimon Glass	.start16 : AT (START_16) {
116a6a95784SSimon Glass		KEEP(*(.start16));
117a6a95784SSimon Glass	}
118fea25720SGraeme Russ
119a6a95784SSimon Glass	. = RESET_VEC_LOC - RESET_SEG_START;
120a6a95784SSimon Glass	.resetvec : AT (RESET_VEC_LOC) {
121a6a95784SSimon Glass		KEEP(*(.resetvec));
122a6a95784SSimon Glass	}
123b16f521aSGabe Black#endif
124a6a95784SSimon Glass
125fea25720SGraeme Russ}
126