165cdd643SAlbert ARIBAUD/* 265cdd643SAlbert ARIBAUD * Copyright (c) 2004-2008 Texas Instruments 365cdd643SAlbert ARIBAUD * 465cdd643SAlbert ARIBAUD * (C) Copyright 2002 565cdd643SAlbert ARIBAUD * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 665cdd643SAlbert ARIBAUD * 71a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 865cdd643SAlbert ARIBAUD */ 965cdd643SAlbert ARIBAUD 1065cdd643SAlbert ARIBAUDOUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 1165cdd643SAlbert ARIBAUDOUTPUT_ARCH(arm) 1265cdd643SAlbert ARIBAUDENTRY(_start) 1365cdd643SAlbert ARIBAUDSECTIONS 1465cdd643SAlbert ARIBAUD{ 1565cdd643SAlbert ARIBAUD . = 0x00000000; 1665cdd643SAlbert ARIBAUD 1765cdd643SAlbert ARIBAUD . = ALIGN(4); 1865cdd643SAlbert ARIBAUD .text : 1965cdd643SAlbert ARIBAUD { 2065cdd643SAlbert ARIBAUD __image_copy_start = .; 2141623c91SAlbert ARIBAUD *(.vectors) 2265cdd643SAlbert ARIBAUD CPUDIR/start.o (.text*) 2365cdd643SAlbert ARIBAUD *(.text*) 2465cdd643SAlbert ARIBAUD } 2565cdd643SAlbert ARIBAUD 2665cdd643SAlbert ARIBAUD . = ALIGN(4); 2765cdd643SAlbert ARIBAUD .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 2865cdd643SAlbert ARIBAUD 2965cdd643SAlbert ARIBAUD . = ALIGN(4); 3065cdd643SAlbert ARIBAUD .data : { 3165cdd643SAlbert ARIBAUD *(.data*) 3265cdd643SAlbert ARIBAUD } 3365cdd643SAlbert ARIBAUD 3465cdd643SAlbert ARIBAUD . = ALIGN(4); 35f8fff9daSSimon Glass#ifdef CONFIG_SPL_DM 36f8fff9daSSimon Glass .u_boot_list : { 37f8fff9daSSimon Glass KEEP(*(SORT(.u_boot_list_*_driver_*))); 38f8fff9daSSimon Glass KEEP(*(SORT(.u_boot_list_*_uclass_*))); 39f8fff9daSSimon Glass } 40f8fff9daSSimon Glass#endif 41*4eae498eSSimon Glass . = .; 42*4eae498eSSimon Glass .u_boot_list : { 43*4eae498eSSimon Glass KEEP(*(SORT(.u_boot_list*_i2c_*))); 44*4eae498eSSimon Glass } 45*4eae498eSSimon Glass 46f8fff9daSSimon Glass . = ALIGN(4); 4765cdd643SAlbert ARIBAUD 4865cdd643SAlbert ARIBAUD __image_copy_end = .; 4965cdd643SAlbert ARIBAUD 5065cdd643SAlbert ARIBAUD .rel.dyn : { 5165cdd643SAlbert ARIBAUD __rel_dyn_start = .; 5265cdd643SAlbert ARIBAUD *(.rel*) 5365cdd643SAlbert ARIBAUD __rel_dyn_end = .; 5465cdd643SAlbert ARIBAUD } 5565cdd643SAlbert ARIBAUD 56d0b5d9daSAlbert ARIBAUD .end : 57d0b5d9daSAlbert ARIBAUD { 58d0b5d9daSAlbert ARIBAUD *(.__end) 59d0b5d9daSAlbert ARIBAUD } 60d0b5d9daSAlbert ARIBAUD 61d0b5d9daSAlbert ARIBAUD _image_binary_end = .; 6265cdd643SAlbert ARIBAUD 6365cdd643SAlbert ARIBAUD .bss __rel_dyn_start (OVERLAY) : { 6465cdd643SAlbert ARIBAUD __bss_start = .; 6565cdd643SAlbert ARIBAUD *(.bss*) 6665cdd643SAlbert ARIBAUD . = ALIGN(4); 670ce033d2STom Rini __bss_end = .; 6865cdd643SAlbert ARIBAUD } 69fa78e0a3SSimon Glass __bss_size = __bss_end - __bss_start; 70d0b5d9daSAlbert ARIBAUD .dynsym _image_binary_end : { *(.dynsym) } 7147ed5dd0SAlbert ARIBAUD .dynbss : { *(.dynbss) } 7247ed5dd0SAlbert ARIBAUD .dynstr : { *(.dynstr*) } 7347ed5dd0SAlbert ARIBAUD .dynamic : { *(.dynamic*) } 7447ed5dd0SAlbert ARIBAUD .hash : { *(.hash*) } 7547ed5dd0SAlbert ARIBAUD .plt : { *(.plt*) } 7647ed5dd0SAlbert ARIBAUD .interp : { *(.interp*) } 7747ed5dd0SAlbert ARIBAUD .gnu : { *(.gnu*) } 7847ed5dd0SAlbert ARIBAUD .ARM.exidx : { *(.ARM.exidx*) } 7965cdd643SAlbert ARIBAUD} 8065cdd643SAlbert ARIBAUD 816ebc3461SAlbert ARIBAUD#if defined(CONFIG_SPL_MAX_SIZE) 826ebc3461SAlbert ARIBAUDASSERT(__image_copy_end - __image_copy_start < (CONFIG_SPL_MAX_SIZE), \ 836ebc3461SAlbert ARIBAUD "SPL image too big"); 846ebc3461SAlbert ARIBAUD#endif 856ebc3461SAlbert ARIBAUD 866ebc3461SAlbert ARIBAUD#if defined(CONFIG_SPL_BSS_MAX_SIZE) 876ebc3461SAlbert ARIBAUDASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS_MAX_SIZE), \ 886ebc3461SAlbert ARIBAUD "SPL image BSS too big"); 896ebc3461SAlbert ARIBAUD#endif 906ebc3461SAlbert ARIBAUD 916ebc3461SAlbert ARIBAUD#if defined(CONFIG_SPL_MAX_FOOTPRINT) 926ebc3461SAlbert ARIBAUDASSERT(__bss_end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \ 936ebc3461SAlbert ARIBAUD "SPL image plus BSS too big"); 9465cdd643SAlbert ARIBAUD#endif 95