xref: /openbmc/u-boot/arch/x86/cpu/u-boot.lds (revision feaa7856f50ec5bbf843d533ee223aedd845452c)
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * (C) Copyright 2002
4  * Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
5  */
6 
7 #include <config.h>
8 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
9 OUTPUT_ARCH(i386)
10 ENTRY(_start)
11 
12 SECTIONS
13 {
14 #ifndef CONFIG_CMDLINE
15 	/DISCARD/ : { *(.u_boot_list_2_cmd_*) }
16 #endif
17 
18 	. = CONFIG_SYS_TEXT_BASE;	/* Location of bootcode in flash */
19 	__text_start = .;
20 
21 	.text.start : { *(.text.start); }
22 
23 	.__efi_runtime_start : {
24 		*(.__efi_runtime_start)
25 	}
26 
27 	.efi_runtime : {
28 		*(.text.efi_runtime*)
29 		*(.rodata.efi_runtime*)
30 		*(.data.efi_runtime*)
31 	}
32 
33 	.__efi_runtime_stop : {
34 		*(.__efi_runtime_stop)
35 	}
36 
37 	.text  : { *(.text*); }
38 
39 	. = ALIGN(4);
40 
41 	. = ALIGN(4);
42 	.u_boot_list : {
43 		KEEP(*(SORT(.u_boot_list*)));
44 	}
45 
46 	. = ALIGN(4);
47 	.rodata : {
48 		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
49 		KEEP(*(.rodata.efi.init));
50 	}
51 
52 	. = ALIGN(4);
53 	.data : { *(.data*) }
54 
55 	. = ALIGN(4);
56 	.hash : { *(.hash*) }
57 
58 	. = ALIGN(4);
59 	.got : { *(.got*) }
60 
61 	. = ALIGN(4);
62 
63 	.efi_runtime_rel_start :
64 	{
65 		*(.__efi_runtime_rel_start)
66 	}
67 
68 	.efi_runtime_rel : {
69 		*(.rel*.efi_runtime)
70 		*(.rel*.efi_runtime.*)
71 	}
72 
73 	.efi_runtime_rel_stop :
74 	{
75 		*(.__efi_runtime_rel_stop)
76 	}
77 
78 	. = ALIGN(4);
79 
80 	__data_end = .;
81 	__init_end = .;
82 
83 	. = ALIGN(4);
84 	.dynsym : { *(.dynsym*) }
85 
86 	. = ALIGN(4);
87 	__rel_dyn_start = .;
88 	.rel.dyn : {
89 		*(.rel*)
90 	}
91 	__rel_dyn_end = .;
92 	. = ALIGN(4);
93 	_end = .;
94 
95 	.bss __rel_dyn_start (OVERLAY) : {
96 		__bss_start = .;
97 		*(.bss)
98 		*(COM*)
99 		. = ALIGN(4);
100 		__bss_end = .;
101 	}
102 
103 	/DISCARD/ : { *(.dynstr*) }
104 	/DISCARD/ : { *(.dynamic*) }
105 	/DISCARD/ : { *(.plt*) }
106 	/DISCARD/ : { *(.interp*) }
107 	/DISCARD/ : { *(.gnu*) }
108 
109 #ifdef CONFIG_X86_16BIT_INIT
110 	/*
111 	 * The following expressions place the 16-bit Real-Mode code and
112 	 * Reset Vector at the end of the Flash ROM
113 	 */
114 	. = START_16 - RESET_SEG_START;
115 	.start16 : AT (START_16) {
116 		KEEP(*(.start16));
117 	}
118 
119 	. = RESET_VEC_LOC - RESET_SEG_START;
120 	.resetvec : AT (RESET_VEC_LOC) {
121 		KEEP(*(.resetvec));
122 	}
123 #endif
124 
125 }
126