Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | /* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2002 * Daniel Engström, Omicron Ceti AB, daniel@omicron.se. */ #include <config.h> OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SECTIONS { . = IMAGE_TEXT_BASE; /* Location of bootcode in flash */ __text_start = .; .text : { __image_copy_start = .; *(.text*); } . = ALIGN(4); . = ALIGN(4); __u_boot_list : { KEEP(*(SORT(__u_boot_list*))); } . = ALIGN(4); .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } . = ALIGN(4); .priv_data : { __priv_data_start = .; *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.priv_data*))) __priv_data_end = .; } . = ALIGN(4); .data : { *(.data*) } . = ALIGN(4); __data_end = .; __init_end = .; . = ALIGN(4); .binman_sym_table : { __binman_sym_start = .; KEEP(*(SORT(.binman_sym*))); __binman_sym_end = .; /* * Force 32-byte alignment so that it lines up with the start of * bss, which may have up to 32-byte alignment. This ensures * that the end of the .bin file matches up with * _image_binary_end or __bss_end - see board_fdt_blob_setup(). * The alignment of BSS depends on what is in it, so can range * from 4 to 32 bytes. */ . = ALIGN(32); } _image_binary_end = .; #if CONFIG_IS_ENABLED(SEPARATE_BSS) . = 0x120000; #endif .bss (OVERLAY) : { __bss_start = .; *(.bss*) *(COM*) . = ALIGN(8); __bss_end = .; } __bss_size = __bss_end - __bss_start; /DISCARD/ : { *(.dynstr*) } /DISCARD/ : { *(.dynamic*) } /DISCARD/ : { *(.plt*) } /DISCARD/ : { *(.interp*) } /DISCARD/ : { *(.gnu*) } /DISCARD/ : { *(.note.gnu.property) } #if defined(CONFIG_SPL_X86_16BIT_INIT) || defined(CONFIG_TPL_X86_16BIT_INIT) /* * The following expressions place the 16-bit Real-Mode code and * Reset Vector at the end of the Flash ROM */ . = START_16 - RESET_SEG_START; .start16 : AT (START_16) { KEEP(*(.start16)); } . = RESET_VEC_LOC - RESET_SEG_START; .resetvec : AT (RESET_VEC_LOC) { KEEP(*(.resetvec)); } #endif } ASSERT(_image_binary_end % 8 == 0, \ "_image_binary_end must be 8-byte aligned for device tree"); #if !CONFIG_IS_ENABLED(SEPARATE_BSS) ASSERT(__bss_end % 8 == 0, \ "__bss_end must be 8-byte aligned for device tree"); #endif |