183d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */ 2fea25720SGraeme Russ/* 3fea25720SGraeme Russ * (C) Copyright 2002 4fa82f871SAlbert ARIBAUD * Daniel Engström, Omicron Ceti AB, daniel@omicron.se. 5fea25720SGraeme Russ */ 6fea25720SGraeme Russ 7fea25720SGraeme Russ#include <config.h> 8fea25720SGraeme RussOUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") 9fea25720SGraeme RussOUTPUT_ARCH(i386) 10fea25720SGraeme RussENTRY(_start) 11fea25720SGraeme Russ 12fea25720SGraeme RussSECTIONS 13fea25720SGraeme Russ{ 14c1352119SSimon Glass#ifndef CONFIG_CMDLINE 15c1352119SSimon Glass /DISCARD/ : { *(.u_boot_list_2_cmd_*) } 16c1352119SSimon Glass#endif 17c1352119SSimon Glass 18fea25720SGraeme Russ . = CONFIG_SYS_TEXT_BASE; /* Location of bootcode in flash */ 19fea25720SGraeme Russ __text_start = .; 207e21fbcaSAlexander Graf 217e21fbcaSAlexander Graf .text.start : { *(.text.start); } 227e21fbcaSAlexander Graf 237e21fbcaSAlexander Graf .__efi_runtime_start : { 247e21fbcaSAlexander Graf *(.__efi_runtime_start) 257e21fbcaSAlexander Graf } 267e21fbcaSAlexander Graf 277e21fbcaSAlexander Graf .efi_runtime : { 287e21fbcaSAlexander Graf *(.text.efi_runtime*) 297e21fbcaSAlexander Graf *(.rodata.efi_runtime*) 307e21fbcaSAlexander Graf *(.data.efi_runtime*) 317e21fbcaSAlexander Graf } 327e21fbcaSAlexander Graf 337e21fbcaSAlexander Graf .__efi_runtime_stop : { 347e21fbcaSAlexander Graf *(.__efi_runtime_stop) 357e21fbcaSAlexander Graf } 367e21fbcaSAlexander Graf 37fea25720SGraeme Russ .text : { *(.text*); } 38fea25720SGraeme Russ 39fea25720SGraeme Russ . = ALIGN(4); 40fea25720SGraeme Russ 41fea25720SGraeme Russ . = ALIGN(4); 4255675142SMarek Vasut .u_boot_list : { 43ef123c52SAlbert ARIBAUD KEEP(*(SORT(.u_boot_list*))); 4455675142SMarek Vasut } 4555675142SMarek Vasut 4655675142SMarek Vasut . = ALIGN(4); 4765e4c0b1SSimon Glass .rodata : { 4865e4c0b1SSimon Glass *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) 4965e4c0b1SSimon Glass KEEP(*(.rodata.efi.init)); 5065e4c0b1SSimon Glass } 51fea25720SGraeme Russ 52fea25720SGraeme Russ . = ALIGN(4); 53fea25720SGraeme Russ .data : { *(.data*) } 54fea25720SGraeme Russ 55fea25720SGraeme Russ . = ALIGN(4); 56fea25720SGraeme Russ .hash : { *(.hash*) } 57fea25720SGraeme Russ 58fea25720SGraeme Russ . = ALIGN(4); 59fea25720SGraeme Russ .got : { *(.got*) } 60fea25720SGraeme Russ 61fea25720SGraeme Russ . = ALIGN(4); 6265e4c0b1SSimon Glass 6365e4c0b1SSimon Glass .efi_runtime_rel_start : 6465e4c0b1SSimon Glass { 6565e4c0b1SSimon Glass *(.__efi_runtime_rel_start) 6665e4c0b1SSimon Glass } 6765e4c0b1SSimon Glass 6865e4c0b1SSimon Glass .efi_runtime_rel : { 697e21fbcaSAlexander Graf *(.rel*.efi_runtime) 707e21fbcaSAlexander Graf *(.rel*.efi_runtime.*) 7165e4c0b1SSimon Glass } 7265e4c0b1SSimon Glass 7365e4c0b1SSimon Glass .efi_runtime_rel_stop : 7465e4c0b1SSimon Glass { 7565e4c0b1SSimon Glass *(.__efi_runtime_rel_stop) 7665e4c0b1SSimon Glass } 7765e4c0b1SSimon Glass 7865e4c0b1SSimon Glass . = ALIGN(4); 7965e4c0b1SSimon Glass 80fea25720SGraeme Russ __data_end = .; 8186cfb6bdSSimon Glass __init_end = .; 82fea25720SGraeme Russ 83fea25720SGraeme Russ . = ALIGN(4); 84f82d15eaSSimon Glass .dynsym : { *(.dynsym*) } 85fea25720SGraeme Russ 86fea25720SGraeme Russ . = ALIGN(4); 87fea25720SGraeme Russ __rel_dyn_start = .; 88091c4943SSimon Glass .rel.dyn : { 89091c4943SSimon Glass *(.rel*) 90091c4943SSimon Glass } 91fea25720SGraeme Russ __rel_dyn_end = .; 924b491b8dSSimon Glass . = ALIGN(4); 934b491b8dSSimon Glass _end = .; 94fea25720SGraeme Russ 95f82d15eaSSimon Glass .bss __rel_dyn_start (OVERLAY) : { 96f82d15eaSSimon Glass __bss_start = .; 97*6331cb21SAlexander Graf *(.bss*) 98f82d15eaSSimon Glass *(COM*) 99f82d15eaSSimon Glass . = ALIGN(4); 100f82d15eaSSimon Glass __bss_end = .; 101f82d15eaSSimon Glass } 102f82d15eaSSimon Glass 103fea25720SGraeme Russ /DISCARD/ : { *(.dynstr*) } 104fea25720SGraeme Russ /DISCARD/ : { *(.dynamic*) } 105fea25720SGraeme Russ /DISCARD/ : { *(.plt*) } 106fea25720SGraeme Russ /DISCARD/ : { *(.interp*) } 107fea25720SGraeme Russ /DISCARD/ : { *(.gnu*) } 108fea25720SGraeme Russ 109972188b3SSimon Glass#ifdef CONFIG_X86_16BIT_INIT 110fea25720SGraeme Russ /* 111fea25720SGraeme Russ * The following expressions place the 16-bit Real-Mode code and 112fea25720SGraeme Russ * Reset Vector at the end of the Flash ROM 113fea25720SGraeme Russ */ 114a6a95784SSimon Glass . = START_16 - RESET_SEG_START; 115a6a95784SSimon Glass .start16 : AT (START_16) { 116a6a95784SSimon Glass KEEP(*(.start16)); 117a6a95784SSimon Glass } 118fea25720SGraeme Russ 119a6a95784SSimon Glass . = RESET_VEC_LOC - RESET_SEG_START; 120a6a95784SSimon Glass .resetvec : AT (RESET_VEC_LOC) { 121a6a95784SSimon Glass KEEP(*(.resetvec)); 122a6a95784SSimon Glass } 123b16f521aSGabe Black#endif 124a6a95784SSimon Glass 125fea25720SGraeme Russ} 126