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 8*c69d2e57SThomas Chou#include <config.h> 9254ab7bdSScott McNutt 10254ab7bdSScott McNuttOUTPUT_FORMAT("elf32-littlenios2") 11254ab7bdSScott McNuttOUTPUT_ARCH(nios2) 12254ab7bdSScott McNuttENTRY(_start) 13254ab7bdSScott McNutt 14254ab7bdSScott McNuttSECTIONS 15254ab7bdSScott McNutt{ 16*c69d2e57SThomas 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 53254ab7bdSScott McNutt . = ALIGN(16); 54254ab7bdSScott McNutt _gp = .; /* Global pointer addr */ 55254ab7bdSScott McNutt PROVIDE (gp = .); 56254ab7bdSScott McNutt 57254ab7bdSScott McNutt .sdata : 58254ab7bdSScott McNutt { 59254ab7bdSScott McNutt *(.sdata) 60254ab7bdSScott McNutt *(.sdata.*) 61254ab7bdSScott McNutt *(.gnu.linkonce.s.*) 62254ab7bdSScott McNutt } 63254ab7bdSScott McNutt . = ALIGN(4); 64254ab7bdSScott McNutt 65254ab7bdSScott McNutt _edata = .; 66254ab7bdSScott McNutt PROVIDE (edata = .); 67254ab7bdSScott McNutt 68254ab7bdSScott McNutt /* UNINIT DATA - Small uninitialized data is first so it's 69254ab7bdSScott McNutt * adjacent to sdata and can be referenced via gp. The normal 70254ab7bdSScott McNutt * bss follows. We keep it adjacent to simplify init code. 71254ab7bdSScott McNutt */ 72254ab7bdSScott McNutt __bss_start = .; 73254ab7bdSScott McNutt .sbss (NOLOAD) : 74254ab7bdSScott McNutt { 75254ab7bdSScott McNutt *(.sbss) 76254ab7bdSScott McNutt *(.sbss.*) 77254ab7bdSScott McNutt *(.gnu.linkonce.sb.*) 78254ab7bdSScott McNutt *(.scommon) 79254ab7bdSScott McNutt } 80254ab7bdSScott McNutt . = ALIGN(4); 81254ab7bdSScott McNutt .bss (NOLOAD) : 82254ab7bdSScott McNutt { 83254ab7bdSScott McNutt *(.bss) 84254ab7bdSScott McNutt *(.bss.*) 85254ab7bdSScott McNutt *(.dynbss) 86254ab7bdSScott McNutt *(COMMON) 87254ab7bdSScott McNutt *(.scommon) 88254ab7bdSScott McNutt } 89254ab7bdSScott McNutt . = ALIGN(4); 903929fb0aSSimon Glass __bss_end = .; 91254ab7bdSScott McNutt PROVIDE (end = .); 92254ab7bdSScott McNutt 93254ab7bdSScott McNutt /* DEBUG -- symbol table, string table, etc. etc. 94254ab7bdSScott McNutt */ 95254ab7bdSScott McNutt .stab 0 : { *(.stab) } 96254ab7bdSScott McNutt .stabstr 0 : { *(.stabstr) } 97254ab7bdSScott McNutt .stab.excl 0 : { *(.stab.excl) } 98254ab7bdSScott McNutt .stab.exclstr 0 : { *(.stab.exclstr) } 99254ab7bdSScott McNutt .stab.index 0 : { *(.stab.index) } 100254ab7bdSScott McNutt .stab.indexstr 0 : { *(.stab.indexstr) } 101254ab7bdSScott McNutt .comment 0 : { *(.comment) } 102254ab7bdSScott McNutt .debug 0 : { *(.debug) } 103254ab7bdSScott McNutt .line 0 : { *(.line) } 104254ab7bdSScott McNutt .debug_srcinfo 0 : { *(.debug_srcinfo) } 105254ab7bdSScott McNutt .debug_sfnames 0 : { *(.debug_sfnames) } 106254ab7bdSScott McNutt .debug_aranges 0 : { *(.debug_aranges) } 107254ab7bdSScott McNutt .debug_pubnames 0 : { *(.debug_pubnames) } 108254ab7bdSScott McNutt .debug_info 0 : { *(.debug_info) } 109254ab7bdSScott McNutt .debug_abbrev 0 : { *(.debug_abbrev) } 110254ab7bdSScott McNutt .debug_line 0 : { *(.debug_line) } 111254ab7bdSScott McNutt .debug_frame 0 : { *(.debug_frame) } 112254ab7bdSScott McNutt .debug_str 0 : { *(.debug_str) } 113254ab7bdSScott McNutt .debug_loc 0 : { *(.debug_loc) } 114254ab7bdSScott McNutt .debug_macinfo 0 : { *(.debug_macinfo) } 115254ab7bdSScott McNutt .debug_weaknames 0 : { *(.debug_weaknames) } 116254ab7bdSScott McNutt .debug_funcnames 0 : { *(.debug_funcnames) } 117254ab7bdSScott McNutt .debug_typenames 0 : { *(.debug_typenames) } 118254ab7bdSScott McNutt .debug_varnames 0 : { *(.debug_varnames) } 119254ab7bdSScott McNutt} 120