Merge git://git.denx.de/u-boot-sh
[oweals/u-boot.git] / arch / sh / cpu / u-boot.lds
1 /*
2  * Copyright (C) 2016 Vladimir Zapolskiy <vz@mleia.com>
3  * Copyright (C) 2008-2009 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
4  * Copyright (C) 2008 Mark Jonas <mark.jonas@de.bosch.com>
5  * Copyright (C) 2007 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
6  *
7  * SPDX-License-Identifier:     GPL-2.0+
8  */
9
10 #include "config.h"
11
12 #ifdef CONFIG_SYS_BIG_ENDIAN
13 OUTPUT_FORMAT("elf32-shbig-linux", "elf32-shbig-linux", "elf32-sh-linux")
14 #else
15 OUTPUT_FORMAT("elf32-sh-linux", "elf32-sh-linux", "elf32-sh-linux")
16 #endif
17
18 OUTPUT_ARCH(sh)
19
20 MEMORY
21 {
22         ram     : ORIGIN = CONFIG_SYS_SDRAM_BASE, LENGTH = CONFIG_SYS_SDRAM_SIZE
23 }
24
25 ENTRY(_start)
26
27 SECTIONS
28 {
29         reloc_dst = .;
30
31         PROVIDE (_ftext = .);
32         PROVIDE (_fcode = .);
33         PROVIDE (_start = .);
34
35         .text :
36         {
37                 KEEP(*/start.o          (.text))
38                 KEEP(CONFIG_BOARDDIR/lowlevel_init.o    (.text .spiboot1.text))
39                 KEEP(*(.spiboot2.text))
40                 . = ALIGN(8192);
41                 *(.text)
42                 . = ALIGN(4);
43         } >ram =0xFF
44         PROVIDE (_ecode = .);
45         .rodata :
46         {
47                 *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
48                 . = ALIGN(4);
49         } >ram
50         PROVIDE (_etext = .);
51
52
53         PROVIDE (_fdata = .);
54         .data :
55         {
56                 *(.data)
57                 . = ALIGN(4);
58         } >ram
59         PROVIDE (_edata = .);
60
61         PROVIDE (_fgot = .);
62         .got :
63         {
64                 *(.got.plt) *(.got)
65                 . = ALIGN(4);
66         } >ram
67         PROVIDE (_egot = .);
68
69         .u_boot_list : {
70                 KEEP(*(SORT(.u_boot_list*)));
71         } >ram
72
73         PROVIDE (__init_end = .);
74         PROVIDE (reloc_dst_end = .);
75
76         PROVIDE (bss_start = .);
77         PROVIDE (__bss_start = .);
78         .bss :
79         {
80                 *(.bss)
81                 . = ALIGN(4);
82         } >ram
83         PROVIDE (bss_end = .);
84         PROVIDE (__bss_end = .);
85 }