xref: /rk3399_rockchip-uboot/arch/mips/cpu/u-boot.lds (revision 1a4596601fd395f3afb8f82f3f840c5e00bdd57a)
1cb5dbca8SGabor Juhos/*
2cb5dbca8SGabor Juhos * (C) Copyright 2003
3cb5dbca8SGabor Juhos * Wolfgang Denk Engineering, <wd@denx.de>
4cb5dbca8SGabor Juhos *
5*1a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
6cb5dbca8SGabor Juhos */
7cb5dbca8SGabor Juhos
8cb5dbca8SGabor Juhos#if defined(CONFIG_64BIT)
9cb5dbca8SGabor Juhos#define PTR_COUNT_SHIFT	3
10cb5dbca8SGabor Juhos#else
11cb5dbca8SGabor Juhos#define PTR_COUNT_SHIFT	2
12cb5dbca8SGabor Juhos#endif
13cb5dbca8SGabor Juhos
14cb5dbca8SGabor JuhosOUTPUT_ARCH(mips)
15cb5dbca8SGabor JuhosENTRY(_start)
16cb5dbca8SGabor JuhosSECTIONS
17cb5dbca8SGabor Juhos{
18cb5dbca8SGabor Juhos	. = 0x00000000;
19cb5dbca8SGabor Juhos
20cb5dbca8SGabor Juhos	. = ALIGN(4);
21cb5dbca8SGabor Juhos	.text : {
22cb5dbca8SGabor Juhos		*(.text*)
23cb5dbca8SGabor Juhos	}
24cb5dbca8SGabor Juhos
25cb5dbca8SGabor Juhos	. = ALIGN(4);
26cb5dbca8SGabor Juhos	.rodata : {
27cb5dbca8SGabor Juhos		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
28cb5dbca8SGabor Juhos	}
29cb5dbca8SGabor Juhos
30cb5dbca8SGabor Juhos	. = ALIGN(4);
31cb5dbca8SGabor Juhos	.data : {
32cb5dbca8SGabor Juhos		*(.data*)
33cb5dbca8SGabor Juhos	}
34cb5dbca8SGabor Juhos
35cb5dbca8SGabor Juhos	. = .;
36cb5dbca8SGabor Juhos	_gp = ALIGN(16) + 0x7ff0;
37cb5dbca8SGabor Juhos
38cb5dbca8SGabor Juhos	.got : {
39cb5dbca8SGabor Juhos		*(.got)
40cb5dbca8SGabor Juhos	}
41cb5dbca8SGabor Juhos
4245397816SGabor Juhos	num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT;
4345397816SGabor Juhos
44cb5dbca8SGabor Juhos	. = ALIGN(4);
45cb5dbca8SGabor Juhos	.sdata : {
46cb5dbca8SGabor Juhos		*(.sdata*)
47cb5dbca8SGabor Juhos	}
48cb5dbca8SGabor Juhos
49cb5dbca8SGabor Juhos	. = ALIGN(4);
50cb5dbca8SGabor Juhos	.u_boot_list : {
51ef123c52SAlbert ARIBAUD		KEEP(*(SORT(.u_boot_list*)));
52cb5dbca8SGabor Juhos	}
53cb5dbca8SGabor Juhos
54cb5dbca8SGabor Juhos	. = ALIGN(4);
553420bf1cSDaniel Schwierzeck	__image_copy_end = .;
563420bf1cSDaniel Schwierzeck
570ba8926eSGabor Juhos	.rel.dyn : {
580ba8926eSGabor Juhos		__rel_dyn_start = .;
590ba8926eSGabor Juhos		*(.rel.dyn)
600ba8926eSGabor Juhos		__rel_dyn_end = .;
610ba8926eSGabor Juhos	}
620ba8926eSGabor Juhos
630ba8926eSGabor Juhos	.deadcode : {
640ba8926eSGabor Juhos		/*
650ba8926eSGabor Juhos		 * Workaround for a binutils feature (or bug?).
660ba8926eSGabor Juhos		 *
670ba8926eSGabor Juhos		 * The GNU ld from binutils puts the dynamic relocation
680ba8926eSGabor Juhos		 * entries into the .rel.dyn section. Sometimes it
690ba8926eSGabor Juhos		 * allocates more dynamic relocation entries than it needs
700ba8926eSGabor Juhos		 * and the unused slots are set to R_MIPS_NONE entries.
710ba8926eSGabor Juhos		 *
720ba8926eSGabor Juhos		 * However the size of the .rel.dyn section in the ELF
730ba8926eSGabor Juhos		 * section header does not cover the unused entries, so
740ba8926eSGabor Juhos		 * objcopy removes those during stripping.
750ba8926eSGabor Juhos		 *
760ba8926eSGabor Juhos		 * Create a small section here to avoid that.
770ba8926eSGabor Juhos		 */
780ba8926eSGabor Juhos		LONG(0xffffffff);
790ba8926eSGabor Juhos	}
800ba8926eSGabor Juhos
810ba8926eSGabor Juhos	.dynsym : {
820ba8926eSGabor Juhos		*(.dynsym)
830ba8926eSGabor Juhos	}
840ba8926eSGabor Juhos
850ba8926eSGabor Juhos	.bss __rel_dyn_start (OVERLAY) : {
86a52852c5SDaniel Schwierzeck		__bss_start = .;
87a52852c5SDaniel Schwierzeck		*(.sbss.*)
88a52852c5SDaniel Schwierzeck		*(.bss.*)
89a52852c5SDaniel Schwierzeck		*(COMMON)
90a52852c5SDaniel Schwierzeck		. = ALIGN(4);
91a52852c5SDaniel Schwierzeck		__bss_end = .;
92cb5dbca8SGabor Juhos	}
930ba8926eSGabor Juhos
940ba8926eSGabor Juhos	/DISCARD/ : {
950ba8926eSGabor Juhos		*(.dynbss)
960ba8926eSGabor Juhos		*(.dynstr)
970ba8926eSGabor Juhos		*(.dynamic)
980ba8926eSGabor Juhos		*(.interp)
990ba8926eSGabor Juhos		*(.hash)
1000ba8926eSGabor Juhos		*(.gnu.*)
1010ba8926eSGabor Juhos		*(.plt)
1020ba8926eSGabor Juhos		*(.got.plt)
1030ba8926eSGabor Juhos		*(.rel.plt)
1040ba8926eSGabor Juhos	}
105cb5dbca8SGabor Juhos}
106