1*3c2dd537SSimon Glass/* 2*3c2dd537SSimon Glass * (C) Copyright 2002 3*3c2dd537SSimon Glass * Daniel Engström, Omicron Ceti AB, daniel@omicron.se. 4*3c2dd537SSimon Glass * 5*3c2dd537SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 6*3c2dd537SSimon Glass */ 7*3c2dd537SSimon Glass 8*3c2dd537SSimon Glass#include <config.h> 9*3c2dd537SSimon GlassOUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") 10*3c2dd537SSimon GlassOUTPUT_ARCH(i386) 11*3c2dd537SSimon GlassENTRY(_start) 12*3c2dd537SSimon Glass 13*3c2dd537SSimon GlassSECTIONS 14*3c2dd537SSimon Glass{ 15*3c2dd537SSimon Glass#ifndef CONFIG_CMDLINE 16*3c2dd537SSimon Glass /DISCARD/ : { *(.u_boot_list_2_cmd_*) } 17*3c2dd537SSimon Glass#endif 18*3c2dd537SSimon Glass 19*3c2dd537SSimon Glass . = CONFIG_SPL_TEXT_BASE; /* Location of bootcode in flash */ 20*3c2dd537SSimon Glass __text_start = .; 21*3c2dd537SSimon Glass .text : { *(.text*); } 22*3c2dd537SSimon Glass 23*3c2dd537SSimon Glass . = ALIGN(4); 24*3c2dd537SSimon Glass 25*3c2dd537SSimon Glass . = ALIGN(4); 26*3c2dd537SSimon Glass .u_boot_list : { 27*3c2dd537SSimon Glass KEEP(*(SORT(.u_boot_list*))); 28*3c2dd537SSimon Glass } 29*3c2dd537SSimon Glass 30*3c2dd537SSimon Glass . = ALIGN(4); 31*3c2dd537SSimon Glass .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 32*3c2dd537SSimon Glass 33*3c2dd537SSimon Glass . = ALIGN(4); 34*3c2dd537SSimon Glass .data : { *(.data*) } 35*3c2dd537SSimon Glass 36*3c2dd537SSimon Glass . = ALIGN(4); 37*3c2dd537SSimon Glass __data_end = .; 38*3c2dd537SSimon Glass __init_end = .; 39*3c2dd537SSimon Glass 40*3c2dd537SSimon Glass _image_binary_end = .; 41*3c2dd537SSimon Glass 42*3c2dd537SSimon Glass . = 0x120000; 43*3c2dd537SSimon Glass .bss (OVERLAY) : { 44*3c2dd537SSimon Glass __bss_start = .; 45*3c2dd537SSimon Glass *(.bss*) 46*3c2dd537SSimon Glass *(COM*) 47*3c2dd537SSimon Glass . = ALIGN(4); 48*3c2dd537SSimon Glass __bss_end = .; 49*3c2dd537SSimon Glass } 50*3c2dd537SSimon Glass __bss_size = __bss_end - __bss_start; 51*3c2dd537SSimon Glass 52*3c2dd537SSimon Glass /DISCARD/ : { *(.dynstr*) } 53*3c2dd537SSimon Glass /DISCARD/ : { *(.dynamic*) } 54*3c2dd537SSimon Glass /DISCARD/ : { *(.plt*) } 55*3c2dd537SSimon Glass /DISCARD/ : { *(.interp*) } 56*3c2dd537SSimon Glass /DISCARD/ : { *(.gnu*) } 57*3c2dd537SSimon Glass 58*3c2dd537SSimon Glass#ifdef CONFIG_SPL_X86_16BIT_INIT 59*3c2dd537SSimon Glass /* 60*3c2dd537SSimon Glass * The following expressions place the 16-bit Real-Mode code and 61*3c2dd537SSimon Glass * Reset Vector at the end of the Flash ROM 62*3c2dd537SSimon Glass */ 63*3c2dd537SSimon Glass . = START_16 - RESET_SEG_START; 64*3c2dd537SSimon Glass .start16 : AT (START_16) { 65*3c2dd537SSimon Glass KEEP(*(.start16)); 66*3c2dd537SSimon Glass } 67*3c2dd537SSimon Glass 68*3c2dd537SSimon Glass . = RESET_VEC_LOC - RESET_SEG_START; 69*3c2dd537SSimon Glass .resetvec : AT (RESET_VEC_LOC) { 70*3c2dd537SSimon Glass KEEP(*(.resetvec)); 71*3c2dd537SSimon Glass } 72*3c2dd537SSimon Glass#endif 73*3c2dd537SSimon Glass 74*3c2dd537SSimon Glass} 75