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