183d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */ 265cdd643SAlbert ARIBAUD/* 365cdd643SAlbert ARIBAUD * Copyright (c) 2004-2008 Texas Instruments 465cdd643SAlbert ARIBAUD * 565cdd643SAlbert ARIBAUD * (C) Copyright 2002 665cdd643SAlbert ARIBAUD * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 765cdd643SAlbert ARIBAUD */ 865cdd643SAlbert ARIBAUD 965cdd643SAlbert ARIBAUDOUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 1065cdd643SAlbert ARIBAUDOUTPUT_ARCH(arm) 1165cdd643SAlbert ARIBAUDENTRY(_start) 1265cdd643SAlbert ARIBAUDSECTIONS 1365cdd643SAlbert ARIBAUD{ 1465cdd643SAlbert ARIBAUD . = 0x00000000; 1565cdd643SAlbert ARIBAUD 1665cdd643SAlbert ARIBAUD . = ALIGN(4); 1765cdd643SAlbert ARIBAUD .text : 1865cdd643SAlbert ARIBAUD { 1965cdd643SAlbert ARIBAUD __image_copy_start = .; 2041623c91SAlbert ARIBAUD *(.vectors) 2165cdd643SAlbert ARIBAUD CPUDIR/start.o (.text*) 2265cdd643SAlbert ARIBAUD *(.text*) 2368f83555SMans Rullgard *(.glue*) 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 .u_boot_list : { 36f8a48263STom Rini KEEP(*(SORT(.u_boot_list*))); 374eae498eSSimon Glass } 384eae498eSSimon Glass 39f8fff9daSSimon Glass . = ALIGN(4); 40cf2a8fd6SSimon Glass .binman_sym_table : { 41cf2a8fd6SSimon Glass __binman_sym_start = .; 42cf2a8fd6SSimon Glass KEEP(*(SORT(.binman_sym*))); 43cf2a8fd6SSimon Glass __binman_sym_end = .; 44cf2a8fd6SSimon Glass } 45cf2a8fd6SSimon Glass 46cf2a8fd6SSimon 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 81*2f41ade7STom Rini#if defined(IMAGE_MAX_SIZE) 82*2f41ade7STom RiniASSERT(__image_copy_end - __image_copy_start < (IMAGE_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