Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 1 | /* |
2 | * (C) Copyright 2002 | ||||
Albert ARIBAUD | fa82f87 | 2011-08-04 18:45:45 +0200 | [diff] [blame] | 3 | * Daniel Engström, Omicron Ceti AB, daniel@omicron.se. |
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 4 | * |
Wolfgang Denk | 1a45966 | 2013-07-08 09:37:19 +0200 | [diff] [blame] | 5 | * SPDX-License-Identifier: GPL-2.0+ |
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 6 | */ |
7 | |||||
Graeme Russ | e413554 | 2011-04-13 19:43:25 +1000 | [diff] [blame] | 8 | #include <config.h> |
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 9 | OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") |
10 | OUTPUT_ARCH(i386) | ||||
11 | ENTRY(_start) | ||||
12 | |||||
13 | SECTIONS | ||||
14 | { | ||||
Wolfgang Denk | c8d76ea | 2010-10-18 23:43:37 +0200 | [diff] [blame] | 15 | . = CONFIG_SYS_TEXT_BASE; /* Location of bootcode in flash */ |
Graeme Russ | 067f9b1 | 2010-10-07 20:03:31 +1100 | [diff] [blame] | 16 | __text_start = .; |
Graeme Russ | 2219142 | 2010-10-07 20:03:32 +1100 | [diff] [blame] | 17 | .text : { *(.text*); } |
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 18 | |
19 | . = ALIGN(4); | ||||
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 20 | |
Graeme Russ | 2219142 | 2010-10-07 20:03:32 +1100 | [diff] [blame] | 21 | . = ALIGN(4); |
Marek Vasut | 5567514 | 2012-10-12 10:27:03 +0000 | [diff] [blame] | 22 | .u_boot_list : { |
Albert ARIBAUD | ef123c5 | 2013-02-25 00:59:00 +0000 | [diff] [blame] | 23 | KEEP(*(SORT(.u_boot_list*))); |
Marek Vasut | 5567514 | 2012-10-12 10:27:03 +0000 | [diff] [blame] | 24 | } |
25 | |||||
26 | . = ALIGN(4); | ||||
Graeme Russ | 2219142 | 2010-10-07 20:03:32 +1100 | [diff] [blame] | 27 | .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } |
28 | |||||
29 | . = ALIGN(4); | ||||
30 | .data : { *(.data*) } | ||||
31 | |||||
32 | . = ALIGN(4); | ||||
Graeme Russ | 2219142 | 2010-10-07 20:03:32 +1100 | [diff] [blame] | 33 | .hash : { *(.hash*) } |
34 | |||||
35 | . = ALIGN(4); | ||||
36 | .got : { *(.got*) } | ||||
37 | |||||
38 | . = ALIGN(4); | ||||
39 | __data_end = .; | ||||
Simon Glass | 86cfb6b | 2013-03-05 14:39:54 +0000 | [diff] [blame] | 40 | __init_end = .; |
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 41 | |
42 | . = ALIGN(4); | ||||
Simon Glass | f82d15e | 2013-02-28 19:26:14 +0000 | [diff] [blame] | 43 | .dynsym : { *(.dynsym*) } |
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 44 | |
Graeme Russ | 2219142 | 2010-10-07 20:03:32 +1100 | [diff] [blame] | 45 | . = ALIGN(4); |
46 | __rel_dyn_start = .; | ||||
47 | .rel.dyn : { *(.rel.dyn) } | ||||
48 | __rel_dyn_end = .; | ||||
Simon Glass | 4b491b8 | 2013-02-28 19:26:13 +0000 | [diff] [blame] | 49 | . = ALIGN(4); |
50 | _end = .; | ||||
Graeme Russ | 2219142 | 2010-10-07 20:03:32 +1100 | [diff] [blame] | 51 | |
Simon Glass | f82d15e | 2013-02-28 19:26:14 +0000 | [diff] [blame] | 52 | .bss __rel_dyn_start (OVERLAY) : { |
53 | __bss_start = .; | ||||
54 | *(.bss) | ||||
55 | *(COM*) | ||||
56 | . = ALIGN(4); | ||||
57 | __bss_end = .; | ||||
58 | } | ||||
59 | |||||
Graeme Russ | 2219142 | 2010-10-07 20:03:32 +1100 | [diff] [blame] | 60 | /DISCARD/ : { *(.dynstr*) } |
61 | /DISCARD/ : { *(.dynamic*) } | ||||
62 | /DISCARD/ : { *(.plt*) } | ||||
63 | /DISCARD/ : { *(.interp*) } | ||||
64 | /DISCARD/ : { *(.gnu*) } | ||||
65 | |||||
Simon Glass | 588a13f | 2013-02-14 04:18:54 +0000 | [diff] [blame] | 66 | #ifdef CONFIG_X86_RESET_VECTOR |
Gabe Black | b16f521 | 2012-11-27 21:08:06 +0000 | [diff] [blame] | 67 | |
Graeme Russ | 3a25e94 | 2011-02-12 15:11:24 +1100 | [diff] [blame] | 68 | /* |
69 | * The following expressions place the 16-bit Real-Mode code and | ||||
70 | * Reset Vector at the end of the Flash ROM | ||||
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 71 | */ |
Graeme Russ | 3a25e94 | 2011-02-12 15:11:24 +1100 | [diff] [blame] | 72 | . = START_16; |
Graeme Russ | e413554 | 2011-04-13 19:43:25 +1000 | [diff] [blame] | 73 | .start16 : AT (CONFIG_SYS_TEXT_BASE + (CONFIG_SYS_MONITOR_LEN - RESET_SEG_SIZE + START_16)) { KEEP(*(.start16)); } |
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 74 | |
Graeme Russ | 3a25e94 | 2011-02-12 15:11:24 +1100 | [diff] [blame] | 75 | . = RESET_VEC_LOC; |
Graeme Russ | e413554 | 2011-04-13 19:43:25 +1000 | [diff] [blame] | 76 | .resetvec : AT (CONFIG_SYS_TEXT_BASE + (CONFIG_SYS_MONITOR_LEN - RESET_SEG_SIZE + RESET_VEC_LOC)) { KEEP(*(.resetvec)); } |
Gabe Black | b16f521 | 2012-11-27 21:08:06 +0000 | [diff] [blame] | 77 | #endif |
Graeme Russ | c620c01 | 2008-12-07 10:28:57 +1100 | [diff] [blame] | 78 | } |