xref: /openbmc/u-boot/arch/mips/cpu/u-boot-spl.lds (revision 0bf3f9cb2722e57a0afb37cb61af5ceaefcf70e0)
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 
3 MEMORY { .spl_mem : ORIGIN = CONFIG_SPL_TEXT_BASE, \
4 		LENGTH = CONFIG_SPL_MAX_SIZE }
5 MEMORY { .bss_mem : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
6 		LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
7 
8 OUTPUT_ARCH(mips)
9 ENTRY(_start)
10 SECTIONS
11 {
12 	. = 0x00000000;
13 
14 	. = ALIGN(4);
15 	.text : {
16 		*(.text*)
17 	} > .spl_mem
18 
19 	. = ALIGN(4);
20 	.rodata : {
21 		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
22 	} > .spl_mem
23 
24 	. = ALIGN(4);
25 	.data : {
26 		*(SORT_BY_ALIGNMENT(.data*))
27 		*(SORT_BY_ALIGNMENT(.sdata*))
28 	} > .spl_mem
29 
30 #ifdef CONFIG_SPL_DM
31 	. = ALIGN(4);
32 	.u_boot_list : {
33 		KEEP(*(SORT(.u_boot_list*)));
34 	} > .spl_mem
35 #endif
36 
37 	. = ALIGN(4);
38 	__image_copy_end = .;
39 
40 	.bss (NOLOAD) : {
41 		__bss_start = .;
42 		*(.bss*)
43 		*(.sbss*)
44 		*(COMMON)
45 		. = ALIGN(4);
46 		__bss_end = .;
47 	} > .bss_mem
48 
49 	/* These mark the ABI of U-Boot for debuggers. */
50 	.mdebug.abi32 : {
51 		KEEP(*(.mdebug.abi32))
52 	}
53 	.mdebug.abi64 : {
54 		KEEP(*(.mdebug.abi64))
55 	}
56 
57 	/* This is the MIPS specific mdebug section. */
58 	.mdebug : { *(.mdebug) }
59 
60 	/* Stabs debugging sections.  */
61 	.stab 0 : { *(.stab) }
62 	.stabstr 0 : { *(.stabstr) }
63 	.stab.excl 0 : { *(.stab.excl) }
64 	.stab.exclstr 0 : { *(.stab.exclstr) }
65 	.stab.index 0 : { *(.stab.index) }
66 	.stab.indexstr 0 : { *(.stab.indexstr) }
67 	.comment 0 : { *(.comment) }
68 
69 	/*
70 	 * DWARF debug sections.
71 	 * Symbols in the DWARF debugging sections are relative to
72 	 * the beginning of the section so we begin them at 0.
73 	 */
74 	/* DWARF 1 */
75 	.debug 0 : { *(.debug) }
76 	.line 0 : { *(.line) }
77 	/* GNU DWARF 1 extensions */
78 	.debug_srcinfo 0 : { *(.debug_srcinfo) }
79 	.debug_sfnames 0 : { *(.debug_sfnames) }
80 	/* DWARF 1.1 and DWARF 2 */
81 	.debug_aranges 0 : { *(.debug_aranges) }
82 	.debug_pubnames 0 : { *(.debug_pubnames) }
83 	/* DWARF 2 */
84 	.debug_info 0 : {
85 		*(.debug_info
86 		.gnu.linkonce.wi.*)
87 	}
88 	.debug_abbrev 0 : { *(.debug_abbrev) }
89 	.debug_line 0 : { *(.debug_line) }
90 	.debug_frame 0 : { *(.debug_frame) }
91 	.debug_str 0 : { *(.debug_str) }
92 	.debug_loc 0 : { *(.debug_loc) }
93 	.debug_macinfo 0 : { *(.debug_macinfo) }
94 	.debug_pubtypes 0 : { *(.debug_pubtypes) }
95 	/* DWARF 3 */
96 	.debug_ranges 0 : { *(.debug_ranges) }
97 	/* SGI/MIPS DWARF 2 extensions */
98 	.debug_weaknames 0 : { *(.debug_weaknames) }
99 	.debug_funcnames 0 : { *(.debug_funcnames) }
100 	.debug_typenames 0 : { *(.debug_typenames) }
101 	.debug_varnames 0 : { *(.debug_varnames) }
102 	/* GNU DWARF 2 extensions */
103 	.debug_gnu_pubnames 0 : { *(.debug_gnu_pubnames) }
104 	.debug_gnu_pubtypes 0 : { *(.debug_gnu_pubtypes) }
105 	/* DWARF 4 */
106 	.debug_types 0 : { *(.debug_types) }
107 	/* DWARF 5 */
108 	.debug_macro 0 : { *(.debug_macro) }
109 	.debug_addr 0 : { *(.debug_addr) }
110 
111 	/DISCARD/ : {
112 		/* ABI crap starts here */
113 		*(.MIPS.abiflags)
114 		*(.MIPS.options)
115 		*(.options)
116 		*(.pdr)
117 		*(.reginfo)
118 		*(.eh_frame)
119 	}
120 }
121