xref: /openbmc/u-boot/arch/mips/cpu/u-boot.lds (revision f83ef0dac83110d20389eb71f09285f009f3d198)
183d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */
2cb5dbca8SGabor Juhos/*
3cb5dbca8SGabor Juhos * (C) Copyright 2003
4cb5dbca8SGabor Juhos * Wolfgang Denk Engineering, <wd@denx.de>
5cb5dbca8SGabor Juhos */
6cb5dbca8SGabor Juhos
7cb5dbca8SGabor JuhosOUTPUT_ARCH(mips)
8cb5dbca8SGabor JuhosENTRY(_start)
9cb5dbca8SGabor JuhosSECTIONS
10cb5dbca8SGabor Juhos{
11cb5dbca8SGabor Juhos	. = 0x00000000;
12cb5dbca8SGabor Juhos
13cb5dbca8SGabor Juhos	. = ALIGN(4);
14cb5dbca8SGabor Juhos	.text : {
15d263cda5SPaul Burton		__text_start = .;
16cb5dbca8SGabor Juhos		*(.text*)
17d263cda5SPaul Burton		__text_end = .;
18cb5dbca8SGabor Juhos	}
19cb5dbca8SGabor Juhos
20cb5dbca8SGabor Juhos	. = ALIGN(4);
21cb5dbca8SGabor Juhos	.rodata : {
22cb5dbca8SGabor Juhos		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
23cb5dbca8SGabor Juhos	}
24cb5dbca8SGabor Juhos
25cb5dbca8SGabor Juhos	. = ALIGN(4);
26cb5dbca8SGabor Juhos	.data : {
27cb5dbca8SGabor Juhos		*(.data*)
28cb5dbca8SGabor Juhos	}
29cb5dbca8SGabor Juhos
30cb5dbca8SGabor Juhos	. = ALIGN(4);
31cb5dbca8SGabor Juhos	.sdata : {
32cb5dbca8SGabor Juhos		*(.sdata*)
33cb5dbca8SGabor Juhos	}
34cb5dbca8SGabor Juhos
35cb5dbca8SGabor Juhos	. = ALIGN(4);
36cb5dbca8SGabor Juhos	.u_boot_list : {
37ef123c52SAlbert ARIBAUD		KEEP(*(SORT(.u_boot_list*)));
38cb5dbca8SGabor Juhos	}
39cb5dbca8SGabor Juhos
40cb5dbca8SGabor Juhos	. = ALIGN(4);
413420bf1cSDaniel Schwierzeck	__image_copy_end = .;
42a0af08b9SPaul Burton	__init_end = .;
433420bf1cSDaniel Schwierzeck
4496301464SDaniel Schwierzeck	.data.reloc : {
45703ec9ddSPaul Burton		__rel_start = .;
4696301464SDaniel Schwierzeck		/*
4796301464SDaniel Schwierzeck		 * Space for relocation table
4896301464SDaniel Schwierzeck		 * This needs to be filled so that the
4996301464SDaniel Schwierzeck		 * mips-reloc tool can overwrite the content.
5096301464SDaniel Schwierzeck		 * An invalid value is left at the start of the
5196301464SDaniel Schwierzeck		 * section to abort relocation if the table
5296301464SDaniel Schwierzeck		 * has not been filled in.
5396301464SDaniel Schwierzeck		 */
5496301464SDaniel Schwierzeck		LONG(0xFFFFFFFF);
5596301464SDaniel Schwierzeck		FILL(0);
5696301464SDaniel Schwierzeck		. += CONFIG_MIPS_RELOCATION_TABLE_SIZE - 4;
57265072baSDaniel Schwierzeck	}
58265072baSDaniel Schwierzeck
5996301464SDaniel Schwierzeck	. = ALIGN(4);
6079fd7e64SDaniel Schwierzeck	_end = .;
610ba8926eSGabor Juhos
62703ec9ddSPaul Burton	.bss __rel_start (OVERLAY) : {
63a52852c5SDaniel Schwierzeck		__bss_start = .;
64a52852c5SDaniel Schwierzeck		*(.sbss.*)
65a52852c5SDaniel Schwierzeck		*(.bss.*)
66a52852c5SDaniel Schwierzeck		*(COMMON)
67a52852c5SDaniel Schwierzeck		. = ALIGN(4);
68a52852c5SDaniel Schwierzeck		__bss_end = .;
69cb5dbca8SGabor Juhos	}
700ba8926eSGabor Juhos
71*2fdadc0fSDaniel Schwierzeck	/* These mark the ABI of U-Boot for debuggers. */
72*2fdadc0fSDaniel Schwierzeck	.mdebug.abi32 : {
73*2fdadc0fSDaniel Schwierzeck		KEEP(*(.mdebug.abi32))
74*2fdadc0fSDaniel Schwierzeck	}
75*2fdadc0fSDaniel Schwierzeck	.mdebug.abi64 : {
76*2fdadc0fSDaniel Schwierzeck		KEEP(*(.mdebug.abi64))
7779fd7e64SDaniel Schwierzeck	}
7879fd7e64SDaniel Schwierzeck
79*2fdadc0fSDaniel Schwierzeck	/* This is the MIPS specific mdebug section. */
80*2fdadc0fSDaniel Schwierzeck	.mdebug : { *(.mdebug) }
8179fd7e64SDaniel Schwierzeck
82*2fdadc0fSDaniel Schwierzeck	/* Stabs debugging sections.  */
83*2fdadc0fSDaniel Schwierzeck	.stab 0 : { *(.stab) }
84*2fdadc0fSDaniel Schwierzeck	.stabstr 0 : { *(.stabstr) }
85*2fdadc0fSDaniel Schwierzeck	.stab.excl 0 : { *(.stab.excl) }
86*2fdadc0fSDaniel Schwierzeck	.stab.exclstr 0 : { *(.stab.exclstr) }
87*2fdadc0fSDaniel Schwierzeck	.stab.index 0 : { *(.stab.index) }
88*2fdadc0fSDaniel Schwierzeck	.stab.indexstr 0 : { *(.stab.indexstr) }
89*2fdadc0fSDaniel Schwierzeck	.comment 0 : { *(.comment) }
9079fd7e64SDaniel Schwierzeck
91*2fdadc0fSDaniel Schwierzeck	/*
92*2fdadc0fSDaniel Schwierzeck	 * DWARF debug sections.
93*2fdadc0fSDaniel Schwierzeck	 * Symbols in the DWARF debugging sections are relative to
94*2fdadc0fSDaniel Schwierzeck	 * the beginning of the section so we begin them at 0.
95*2fdadc0fSDaniel Schwierzeck	 */
96*2fdadc0fSDaniel Schwierzeck	/* DWARF 1 */
97*2fdadc0fSDaniel Schwierzeck	.debug 0 : { *(.debug) }
98*2fdadc0fSDaniel Schwierzeck	.line 0 : { *(.line) }
99*2fdadc0fSDaniel Schwierzeck	/* GNU DWARF 1 extensions */
100*2fdadc0fSDaniel Schwierzeck	.debug_srcinfo 0 : { *(.debug_srcinfo) }
101*2fdadc0fSDaniel Schwierzeck	.debug_sfnames 0 : { *(.debug_sfnames) }
102*2fdadc0fSDaniel Schwierzeck	/* DWARF 1.1 and DWARF 2 */
103*2fdadc0fSDaniel Schwierzeck	.debug_aranges 0 : { *(.debug_aranges) }
104*2fdadc0fSDaniel Schwierzeck	.debug_pubnames 0 : { *(.debug_pubnames) }
105*2fdadc0fSDaniel Schwierzeck	/* DWARF 2 */
106*2fdadc0fSDaniel Schwierzeck	.debug_info 0 : {
107*2fdadc0fSDaniel Schwierzeck		*(.debug_info
108*2fdadc0fSDaniel Schwierzeck		.gnu.linkonce.wi.*)
10979fd7e64SDaniel Schwierzeck	}
110*2fdadc0fSDaniel Schwierzeck	.debug_abbrev 0 : { *(.debug_abbrev) }
111*2fdadc0fSDaniel Schwierzeck	.debug_line 0 : { *(.debug_line) }
112*2fdadc0fSDaniel Schwierzeck	.debug_frame 0 : { *(.debug_frame) }
113*2fdadc0fSDaniel Schwierzeck	.debug_str 0 : { *(.debug_str) }
114*2fdadc0fSDaniel Schwierzeck	.debug_loc 0 : { *(.debug_loc) }
115*2fdadc0fSDaniel Schwierzeck	.debug_macinfo 0 : { *(.debug_macinfo) }
116*2fdadc0fSDaniel Schwierzeck	.debug_pubtypes 0 : { *(.debug_pubtypes) }
117*2fdadc0fSDaniel Schwierzeck	/* DWARF 3 */
118*2fdadc0fSDaniel Schwierzeck	.debug_ranges 0 : { *(.debug_ranges) }
119*2fdadc0fSDaniel Schwierzeck	/* SGI/MIPS DWARF 2 extensions */
120*2fdadc0fSDaniel Schwierzeck	.debug_weaknames 0 : { *(.debug_weaknames) }
121*2fdadc0fSDaniel Schwierzeck	.debug_funcnames 0 : { *(.debug_funcnames) }
122*2fdadc0fSDaniel Schwierzeck	.debug_typenames 0 : { *(.debug_typenames) }
123*2fdadc0fSDaniel Schwierzeck	.debug_varnames 0 : { *(.debug_varnames) }
124*2fdadc0fSDaniel Schwierzeck	/* GNU DWARF 2 extensions */
125*2fdadc0fSDaniel Schwierzeck	.debug_gnu_pubnames 0 : { *(.debug_gnu_pubnames) }
126*2fdadc0fSDaniel Schwierzeck	.debug_gnu_pubtypes 0 : { *(.debug_gnu_pubtypes) }
127*2fdadc0fSDaniel Schwierzeck	/* DWARF 4 */
128*2fdadc0fSDaniel Schwierzeck	.debug_types 0 : { *(.debug_types) }
129*2fdadc0fSDaniel Schwierzeck	/* DWARF 5 */
130*2fdadc0fSDaniel Schwierzeck	.debug_macro 0 : { *(.debug_macro) }
131*2fdadc0fSDaniel Schwierzeck	.debug_addr 0 : { *(.debug_addr) }
13279fd7e64SDaniel Schwierzeck
133*2fdadc0fSDaniel Schwierzeck	/DISCARD/ : {
134*2fdadc0fSDaniel Schwierzeck		/* ABI crap starts here */
135*2fdadc0fSDaniel Schwierzeck		*(.MIPS.abiflags)
136*2fdadc0fSDaniel Schwierzeck		*(.MIPS.options)
137*2fdadc0fSDaniel Schwierzeck		*(.options)
138*2fdadc0fSDaniel Schwierzeck		*(.pdr)
139*2fdadc0fSDaniel Schwierzeck		*(.reginfo)
140*2fdadc0fSDaniel Schwierzeck		*(.eh_frame)
1410ba8926eSGabor Juhos	}
142cb5dbca8SGabor Juhos}
143