xref: /rk3399_rockchip-uboot/arch/mips/cpu/u-boot.lds (revision 0ba8926e08bdabba681384ba3ea8476eda68c141)
1cb5dbca8SGabor Juhos/*
2cb5dbca8SGabor Juhos * (C) Copyright 2003
3cb5dbca8SGabor Juhos * Wolfgang Denk Engineering, <wd@denx.de>
4cb5dbca8SGabor Juhos *
5cb5dbca8SGabor Juhos * See file CREDITS for list of people who contributed to this
6cb5dbca8SGabor Juhos * project.
7cb5dbca8SGabor Juhos *
8cb5dbca8SGabor Juhos * This program is free software; you can redistribute it and/or
9cb5dbca8SGabor Juhos * modify it under the terms of the GNU General Public License as
10cb5dbca8SGabor Juhos * published by the Free Software Foundation; either version 2 of
11cb5dbca8SGabor Juhos * the License, or (at your option) any later version.
12cb5dbca8SGabor Juhos *
13cb5dbca8SGabor Juhos * This program is distributed in the hope that it will be useful,
14cb5dbca8SGabor Juhos * but WITHOUT ANY WARRANTY; without even the implied warranty of
15cb5dbca8SGabor Juhos * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16cb5dbca8SGabor Juhos * GNU General Public License for more details.
17cb5dbca8SGabor Juhos *
18cb5dbca8SGabor Juhos * You should have received a copy of the GNU General Public License
19cb5dbca8SGabor Juhos * along with this program; if not, write to the Free Software
20cb5dbca8SGabor Juhos * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21cb5dbca8SGabor Juhos * MA 02111-1307 USA
22cb5dbca8SGabor Juhos */
23cb5dbca8SGabor Juhos
24cb5dbca8SGabor Juhos#if defined(CONFIG_64BIT)
25cb5dbca8SGabor Juhos#define PTR_COUNT_SHIFT	3
26cb5dbca8SGabor Juhos#else
27cb5dbca8SGabor Juhos#define PTR_COUNT_SHIFT	2
28cb5dbca8SGabor Juhos#endif
29cb5dbca8SGabor Juhos
30cb5dbca8SGabor JuhosOUTPUT_ARCH(mips)
31cb5dbca8SGabor JuhosENTRY(_start)
32cb5dbca8SGabor JuhosSECTIONS
33cb5dbca8SGabor Juhos{
34cb5dbca8SGabor Juhos	. = 0x00000000;
35cb5dbca8SGabor Juhos
36cb5dbca8SGabor Juhos	. = ALIGN(4);
37cb5dbca8SGabor Juhos	.text : {
38cb5dbca8SGabor Juhos		*(.text*)
39cb5dbca8SGabor Juhos	}
40cb5dbca8SGabor Juhos
41cb5dbca8SGabor Juhos	. = ALIGN(4);
42cb5dbca8SGabor Juhos	.rodata : {
43cb5dbca8SGabor Juhos		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
44cb5dbca8SGabor Juhos	}
45cb5dbca8SGabor Juhos
46cb5dbca8SGabor Juhos	. = ALIGN(4);
47cb5dbca8SGabor Juhos	.data : {
48cb5dbca8SGabor Juhos		*(.data*)
49cb5dbca8SGabor Juhos	}
50cb5dbca8SGabor Juhos
51cb5dbca8SGabor Juhos	. = .;
52cb5dbca8SGabor Juhos	_gp = ALIGN(16) + 0x7ff0;
53cb5dbca8SGabor Juhos
54cb5dbca8SGabor Juhos	.got : {
55cb5dbca8SGabor Juhos		*(.got)
56cb5dbca8SGabor Juhos	}
57cb5dbca8SGabor Juhos
5845397816SGabor Juhos	num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT;
5945397816SGabor Juhos
60cb5dbca8SGabor Juhos	. = ALIGN(4);
61cb5dbca8SGabor Juhos	.sdata : {
62cb5dbca8SGabor Juhos		*(.sdata*)
63cb5dbca8SGabor Juhos	}
64cb5dbca8SGabor Juhos
65cb5dbca8SGabor Juhos	. = ALIGN(4);
66cb5dbca8SGabor Juhos	.u_boot_list : {
67cb5dbca8SGabor Juhos		#include <u-boot.lst>
68cb5dbca8SGabor Juhos	}
69cb5dbca8SGabor Juhos
70cb5dbca8SGabor Juhos	. = ALIGN(4);
713420bf1cSDaniel Schwierzeck	__image_copy_end = .;
723420bf1cSDaniel Schwierzeck
73*0ba8926eSGabor Juhos	.rel.dyn : {
74*0ba8926eSGabor Juhos		__rel_dyn_start = .;
75*0ba8926eSGabor Juhos		*(.rel.dyn)
76*0ba8926eSGabor Juhos		__rel_dyn_end = .;
77*0ba8926eSGabor Juhos	}
78*0ba8926eSGabor Juhos
79*0ba8926eSGabor Juhos	.deadcode : {
80*0ba8926eSGabor Juhos		/*
81*0ba8926eSGabor Juhos		 * Workaround for a binutils feature (or bug?).
82*0ba8926eSGabor Juhos		 *
83*0ba8926eSGabor Juhos		 * The GNU ld from binutils puts the dynamic relocation
84*0ba8926eSGabor Juhos		 * entries into the .rel.dyn section. Sometimes it
85*0ba8926eSGabor Juhos		 * allocates more dynamic relocation entries than it needs
86*0ba8926eSGabor Juhos		 * and the unused slots are set to R_MIPS_NONE entries.
87*0ba8926eSGabor Juhos		 *
88*0ba8926eSGabor Juhos		 * However the size of the .rel.dyn section in the ELF
89*0ba8926eSGabor Juhos		 * section header does not cover the unused entries, so
90*0ba8926eSGabor Juhos		 * objcopy removes those during stripping.
91*0ba8926eSGabor Juhos		 *
92*0ba8926eSGabor Juhos		 * Create a small section here to avoid that.
93*0ba8926eSGabor Juhos		 */
94*0ba8926eSGabor Juhos		LONG(0xffffffff);
95*0ba8926eSGabor Juhos	}
96*0ba8926eSGabor Juhos
97*0ba8926eSGabor Juhos	.dynsym : {
98*0ba8926eSGabor Juhos		*(.dynsym)
99*0ba8926eSGabor Juhos	}
100*0ba8926eSGabor Juhos
101*0ba8926eSGabor Juhos	.bss __rel_dyn_start (OVERLAY) : {
102a52852c5SDaniel Schwierzeck		__bss_start = .;
103a52852c5SDaniel Schwierzeck		*(.sbss.*)
104a52852c5SDaniel Schwierzeck		*(.bss.*)
105a52852c5SDaniel Schwierzeck		*(COMMON)
106a52852c5SDaniel Schwierzeck		. = ALIGN(4);
107a52852c5SDaniel Schwierzeck		__bss_end = .;
108cb5dbca8SGabor Juhos	}
109*0ba8926eSGabor Juhos
110*0ba8926eSGabor Juhos	/DISCARD/ : {
111*0ba8926eSGabor Juhos		*(.dynbss)
112*0ba8926eSGabor Juhos		*(.dynstr)
113*0ba8926eSGabor Juhos		*(.dynamic)
114*0ba8926eSGabor Juhos		*(.interp)
115*0ba8926eSGabor Juhos		*(.hash)
116*0ba8926eSGabor Juhos		*(.gnu.*)
117*0ba8926eSGabor Juhos		*(.plt)
118*0ba8926eSGabor Juhos		*(.got.plt)
119*0ba8926eSGabor Juhos		*(.rel.plt)
120*0ba8926eSGabor Juhos	}
121cb5dbca8SGabor Juhos}
122