1254ab7bdSScott McNutt/* 2254ab7bdSScott McNutt * (C) Copyright 2004, Psyent Corporation <www.psyent.com> 3254ab7bdSScott McNutt * Scott McNutt <smcnutt@psyent.com> 4254ab7bdSScott McNutt * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6254ab7bdSScott McNutt */ 7254ab7bdSScott McNutt 8c69d2e57SThomas Chou#include <config.h> 9254ab7bdSScott McNutt 10254ab7bdSScott McNuttOUTPUT_FORMAT("elf32-littlenios2") 11254ab7bdSScott McNuttOUTPUT_ARCH(nios2) 12254ab7bdSScott McNuttENTRY(_start) 13254ab7bdSScott McNutt 14254ab7bdSScott McNuttSECTIONS 15254ab7bdSScott McNutt{ 16c69d2e57SThomas Chou . = CONFIG_SYS_MONITOR_BASE; 17254ab7bdSScott McNutt .text : 18254ab7bdSScott McNutt { 19254ab7bdSScott McNutt arch/nios2/cpu/start.o (.text) 20254ab7bdSScott McNutt *(.text) 21254ab7bdSScott McNutt *(.text.*) 22254ab7bdSScott McNutt *(.gnu.linkonce.t*) 23254ab7bdSScott McNutt *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) 24254ab7bdSScott McNutt *(.gnu.linkonce.r*) 25254ab7bdSScott McNutt } 26254ab7bdSScott McNutt . = ALIGN (4); 27254ab7bdSScott McNutt _etext = .; 28254ab7bdSScott McNutt PROVIDE (etext = .); 29254ab7bdSScott McNutt 30254ab7bdSScott McNutt /* CMD TABLE - sandwich this in between text and data so 31254ab7bdSScott McNutt * the initialization code relocates the command table as 32254ab7bdSScott McNutt * well -- admittedly, this is just pure laziness ;-) 33254ab7bdSScott McNutt */ 34254ab7bdSScott McNutt 3555675142SMarek Vasut . = ALIGN(4); 3655675142SMarek Vasut .u_boot_list : { 37ef123c52SAlbert ARIBAUD KEEP(*(SORT(.u_boot_list*))); 3855675142SMarek Vasut } 3955675142SMarek Vasut 40254ab7bdSScott McNutt /* INIT DATA sections - "Small" data (see the gcc -G option) 41254ab7bdSScott McNutt * is always gp-relative. Here we make all init data sections 42254ab7bdSScott McNutt * adjacent to simplify the startup code -- and provide 43254ab7bdSScott McNutt * the global pointer for gp-relative access. 44254ab7bdSScott McNutt */ 45254ab7bdSScott McNutt _data = .; 46254ab7bdSScott McNutt .data : 47254ab7bdSScott McNutt { 48254ab7bdSScott McNutt *(.data) 49254ab7bdSScott McNutt *(.data.*) 50254ab7bdSScott McNutt *(.gnu.linkonce.d*) 51254ab7bdSScott McNutt } 52254ab7bdSScott McNutt 53355483e1SThomas Chou /* 54355483e1SThomas Chou * gp - Since we don't use gp for small data with option "-G0", 55355483e1SThomas Chou * we will use gp as global data pointer. The _gp location is 56355483e1SThomas Chou * not needed. 57355483e1SThomas Chou */ 58254ab7bdSScott McNutt 59254ab7bdSScott McNutt .sdata : 60254ab7bdSScott McNutt { 61254ab7bdSScott McNutt *(.sdata) 62254ab7bdSScott McNutt *(.sdata.*) 63254ab7bdSScott McNutt *(.gnu.linkonce.s.*) 64254ab7bdSScott McNutt } 65254ab7bdSScott McNutt . = ALIGN(4); 66254ab7bdSScott McNutt 67254ab7bdSScott McNutt _edata = .; 68254ab7bdSScott McNutt PROVIDE (edata = .); 69254ab7bdSScott McNutt 70*1226dfdaSThomas Chou /* 71*1226dfdaSThomas Chou * _end - This is end of u-boot.bin image. 72*1226dfdaSThomas Chou * dtb will be appended here to make u-boot-dtb.bin 73*1226dfdaSThomas Chou */ 74*1226dfdaSThomas Chou _end = .; 75*1226dfdaSThomas Chou 76254ab7bdSScott McNutt /* UNINIT DATA - Small uninitialized data is first so it's 77254ab7bdSScott McNutt * adjacent to sdata and can be referenced via gp. The normal 78254ab7bdSScott McNutt * bss follows. We keep it adjacent to simplify init code. 79254ab7bdSScott McNutt */ 80254ab7bdSScott McNutt __bss_start = .; 81254ab7bdSScott McNutt .sbss (NOLOAD) : 82254ab7bdSScott McNutt { 83254ab7bdSScott McNutt *(.sbss) 84254ab7bdSScott McNutt *(.sbss.*) 85254ab7bdSScott McNutt *(.gnu.linkonce.sb.*) 86254ab7bdSScott McNutt *(.scommon) 87254ab7bdSScott McNutt } 88254ab7bdSScott McNutt . = ALIGN(4); 89254ab7bdSScott McNutt .bss (NOLOAD) : 90254ab7bdSScott McNutt { 91254ab7bdSScott McNutt *(.bss) 92254ab7bdSScott McNutt *(.bss.*) 93254ab7bdSScott McNutt *(.dynbss) 94254ab7bdSScott McNutt *(COMMON) 95254ab7bdSScott McNutt *(.scommon) 96254ab7bdSScott McNutt } 97254ab7bdSScott McNutt . = ALIGN(4); 983929fb0aSSimon Glass __bss_end = .; 99254ab7bdSScott McNutt PROVIDE (end = .); 100254ab7bdSScott McNutt 101254ab7bdSScott McNutt /* DEBUG -- symbol table, string table, etc. etc. 102254ab7bdSScott McNutt */ 103254ab7bdSScott McNutt .stab 0 : { *(.stab) } 104254ab7bdSScott McNutt .stabstr 0 : { *(.stabstr) } 105254ab7bdSScott McNutt .stab.excl 0 : { *(.stab.excl) } 106254ab7bdSScott McNutt .stab.exclstr 0 : { *(.stab.exclstr) } 107254ab7bdSScott McNutt .stab.index 0 : { *(.stab.index) } 108254ab7bdSScott McNutt .stab.indexstr 0 : { *(.stab.indexstr) } 109254ab7bdSScott McNutt .comment 0 : { *(.comment) } 110254ab7bdSScott McNutt .debug 0 : { *(.debug) } 111254ab7bdSScott McNutt .line 0 : { *(.line) } 112254ab7bdSScott McNutt .debug_srcinfo 0 : { *(.debug_srcinfo) } 113254ab7bdSScott McNutt .debug_sfnames 0 : { *(.debug_sfnames) } 114254ab7bdSScott McNutt .debug_aranges 0 : { *(.debug_aranges) } 115254ab7bdSScott McNutt .debug_pubnames 0 : { *(.debug_pubnames) } 116254ab7bdSScott McNutt .debug_info 0 : { *(.debug_info) } 117254ab7bdSScott McNutt .debug_abbrev 0 : { *(.debug_abbrev) } 118254ab7bdSScott McNutt .debug_line 0 : { *(.debug_line) } 119254ab7bdSScott McNutt .debug_frame 0 : { *(.debug_frame) } 120254ab7bdSScott McNutt .debug_str 0 : { *(.debug_str) } 121254ab7bdSScott McNutt .debug_loc 0 : { *(.debug_loc) } 122254ab7bdSScott McNutt .debug_macinfo 0 : { *(.debug_macinfo) } 123254ab7bdSScott McNutt .debug_weaknames 0 : { *(.debug_weaknames) } 124254ab7bdSScott McNutt .debug_funcnames 0 : { *(.debug_funcnames) } 125254ab7bdSScott McNutt .debug_typenames 0 : { *(.debug_typenames) } 126254ab7bdSScott McNutt .debug_varnames 0 : { *(.debug_varnames) } 127254ab7bdSScott McNutt} 128