xref: /openbmc/u-boot/arch/arm/cpu/u-boot.lds (revision bf433afd60ce2ccd1bec3cf14150323be8272ac3)
1dde3b70dSSimon Glass/*
2dde3b70dSSimon Glass * Copyright (c) 2004-2008 Texas Instruments
3dde3b70dSSimon Glass *
4dde3b70dSSimon Glass * (C) Copyright 2002
5dde3b70dSSimon Glass * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
6dde3b70dSSimon Glass *
71a459660SWolfgang Denk * SPDX-License-Identifier:	GPL-2.0+
8dde3b70dSSimon Glass */
9dde3b70dSSimon Glass
10*bf433afdSMarc Zyngier#include <config.h>
11*bf433afdSMarc Zyngier
12dde3b70dSSimon GlassOUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
13dde3b70dSSimon GlassOUTPUT_ARCH(arm)
14dde3b70dSSimon GlassENTRY(_start)
15dde3b70dSSimon GlassSECTIONS
16dde3b70dSSimon Glass{
17dde3b70dSSimon Glass	. = 0x00000000;
18dde3b70dSSimon Glass
19dde3b70dSSimon Glass	. = ALIGN(4);
20dde3b70dSSimon Glass	.text :
21dde3b70dSSimon Glass	{
22d026dec8SAlbert ARIBAUD		*(.__image_copy_start)
2341623c91SAlbert ARIBAUD		*(.vectors)
24b68d6712SStephen Warren		CPUDIR/start.o (.text*)
25b68d6712SStephen Warren		*(.text*)
26dde3b70dSSimon Glass	}
27dde3b70dSSimon Glass
28*bf433afdSMarc Zyngier#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT) || defined(CONFIG_ARMV7_PSCI)
29*bf433afdSMarc Zyngier
30*bf433afdSMarc Zyngier#ifndef CONFIG_ARMV7_SECURE_BASE
31*bf433afdSMarc Zyngier#define CONFIG_ARMV7_SECURE_BASE
32*bf433afdSMarc Zyngier#endif
33*bf433afdSMarc Zyngier
34*bf433afdSMarc Zyngier	.__secure_start : {
35*bf433afdSMarc Zyngier		. = ALIGN(0x1000);
36*bf433afdSMarc Zyngier		*(.__secure_start)
37*bf433afdSMarc Zyngier	}
38*bf433afdSMarc Zyngier
39*bf433afdSMarc Zyngier	.secure_text CONFIG_ARMV7_SECURE_BASE :
40*bf433afdSMarc Zyngier		AT(ADDR(.__secure_start) + SIZEOF(.__secure_start))
41*bf433afdSMarc Zyngier	{
42*bf433afdSMarc Zyngier		*(._secure.text)
43*bf433afdSMarc Zyngier	}
44*bf433afdSMarc Zyngier
45*bf433afdSMarc Zyngier	. = LOADADDR(.__secure_start) +
46*bf433afdSMarc Zyngier		SIZEOF(.__secure_start) +
47*bf433afdSMarc Zyngier		SIZEOF(.secure_text);
48*bf433afdSMarc Zyngier
49*bf433afdSMarc Zyngier	__secure_end_lma = .;
50*bf433afdSMarc Zyngier	.__secure_end : AT(__secure_end_lma) {
51*bf433afdSMarc Zyngier		*(.__secure_end)
52*bf433afdSMarc Zyngier		LONG(0x1d1071c);	/* Must output something to reset LMA */
53*bf433afdSMarc Zyngier	}
54*bf433afdSMarc Zyngier#endif
55*bf433afdSMarc Zyngier
56dde3b70dSSimon Glass	. = ALIGN(4);
57dde3b70dSSimon Glass	.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
58dde3b70dSSimon Glass
59dde3b70dSSimon Glass	. = ALIGN(4);
60dde3b70dSSimon Glass	.data : {
61b68d6712SStephen Warren		*(.data*)
62dde3b70dSSimon Glass	}
63dde3b70dSSimon Glass
64dde3b70dSSimon Glass	. = ALIGN(4);
65dde3b70dSSimon Glass
66dde3b70dSSimon Glass	. = .;
67dde3b70dSSimon Glass
68dde3b70dSSimon Glass	. = ALIGN(4);
6955675142SMarek Vasut	.u_boot_list : {
70ef123c52SAlbert ARIBAUD		KEEP(*(SORT(.u_boot_list*)));
7155675142SMarek Vasut	}
7255675142SMarek Vasut
7355675142SMarek Vasut	. = ALIGN(4);
74dde3b70dSSimon Glass
75d026dec8SAlbert ARIBAUD	.image_copy_end :
76d026dec8SAlbert ARIBAUD	{
77d026dec8SAlbert ARIBAUD		*(.__image_copy_end)
78d026dec8SAlbert ARIBAUD	}
79dde3b70dSSimon Glass
8047bd65efSAlbert ARIBAUD	.rel_dyn_start :
8147bd65efSAlbert ARIBAUD	{
8247bd65efSAlbert ARIBAUD		*(.__rel_dyn_start)
8347bd65efSAlbert ARIBAUD	}
8447bd65efSAlbert ARIBAUD
85dde3b70dSSimon Glass	.rel.dyn : {
86dde3b70dSSimon Glass		*(.rel*)
8747bd65efSAlbert ARIBAUD	}
8847bd65efSAlbert ARIBAUD
8947bd65efSAlbert ARIBAUD	.rel_dyn_end :
9047bd65efSAlbert ARIBAUD	{
9147bd65efSAlbert ARIBAUD		*(.__rel_dyn_end)
92dde3b70dSSimon Glass	}
93dde3b70dSSimon Glass
94d0b5d9daSAlbert ARIBAUD	.end :
95d0b5d9daSAlbert ARIBAUD	{
96d0b5d9daSAlbert ARIBAUD		*(.__end)
97d0b5d9daSAlbert ARIBAUD	}
98d0b5d9daSAlbert ARIBAUD
99d0b5d9daSAlbert ARIBAUD	_image_binary_end = .;
100dde3b70dSSimon Glass
101dde3b70dSSimon Glass	/*
102dde3b70dSSimon Glass	 * Deprecated: this MMU section is used by pxa at present but
103dde3b70dSSimon Glass	 * should not be used by new boards/CPUs.
104dde3b70dSSimon Glass	 */
105dde3b70dSSimon Glass	. = ALIGN(4096);
106dde3b70dSSimon Glass	.mmutable : {
107dde3b70dSSimon Glass		*(.mmutable)
108dde3b70dSSimon Glass	}
109dde3b70dSSimon Glass
110f84a7b8fSAlbert ARIBAUD/*
111f84a7b8fSAlbert ARIBAUD * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c
112f84a7b8fSAlbert ARIBAUD * __bss_base and __bss_limit are for linker only (overlay ordering)
113f84a7b8fSAlbert ARIBAUD */
114f84a7b8fSAlbert ARIBAUD
1153ebd1cbcSAlbert ARIBAUD	.bss_start __rel_dyn_start (OVERLAY) : {
1163ebd1cbcSAlbert ARIBAUD		KEEP(*(.__bss_start));
117f84a7b8fSAlbert ARIBAUD		__bss_base = .;
1183ebd1cbcSAlbert ARIBAUD	}
1193ebd1cbcSAlbert ARIBAUD
120f84a7b8fSAlbert ARIBAUD	.bss __bss_base (OVERLAY) : {
121b68d6712SStephen Warren		*(.bss*)
122dde3b70dSSimon Glass		 . = ALIGN(4);
123f84a7b8fSAlbert ARIBAUD		 __bss_limit = .;
124dde3b70dSSimon Glass	}
125dde3b70dSSimon Glass
126f84a7b8fSAlbert ARIBAUD	.bss_end __bss_limit (OVERLAY) : {
127f84a7b8fSAlbert ARIBAUD		KEEP(*(.__bss_end));
128dde3b70dSSimon Glass	}
129dde3b70dSSimon Glass
130d0b5d9daSAlbert ARIBAUD	.dynsym _image_binary_end : { *(.dynsym) }
13147ed5dd0SAlbert ARIBAUD	.dynbss : { *(.dynbss) }
13247ed5dd0SAlbert ARIBAUD	.dynstr : { *(.dynstr*) }
13347ed5dd0SAlbert ARIBAUD	.dynamic : { *(.dynamic*) }
13447ed5dd0SAlbert ARIBAUD	.plt : { *(.plt*) }
13547ed5dd0SAlbert ARIBAUD	.interp : { *(.interp*) }
1362c67e0e7SAndreas Färber	.gnu.hash : { *(.gnu.hash) }
13747ed5dd0SAlbert ARIBAUD	.gnu : { *(.gnu*) }
13847ed5dd0SAlbert ARIBAUD	.ARM.exidx : { *(.ARM.exidx*) }
139b02bfc4dSAlbert ARIBAUD	.gnu.linkonce.armexidx : { *(.gnu.linkonce.armexidx.*) }
140dde3b70dSSimon Glass}
141