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