mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-29 08:00:26 +09:00
ee3a4a708a
If the OF_SEPARATE is enabled, the DT is appended past the _end symbol. The current code however clears BSS very early, which overwrites the DT blob with zeroes. Moreover, the early code relocates U-Boot into RAM to the correct location, but does not relocate the DT. This patch adds code to relocate the DT and avoids clearing BSS too early, thus addressing both problems with OF_SEPARATE on SH. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
90 lines
1.6 KiB
Plaintext
90 lines
1.6 KiB
Plaintext
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright (C) 2016 Vladimir Zapolskiy <vz@mleia.com>
|
|
* Copyright (C) 2008-2009 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
|
|
* Copyright (C) 2008 Mark Jonas <mark.jonas@de.bosch.com>
|
|
* Copyright (C) 2007 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#ifdef CONFIG_SYS_BIG_ENDIAN
|
|
OUTPUT_FORMAT("elf32-shbig-linux", "elf32-shbig-linux", "elf32-sh-linux")
|
|
#else
|
|
OUTPUT_FORMAT("elf32-sh-linux", "elf32-sh-linux", "elf32-sh-linux")
|
|
#endif
|
|
|
|
OUTPUT_ARCH(sh)
|
|
|
|
MEMORY
|
|
{
|
|
ram : ORIGIN = CONFIG_SYS_SDRAM_BASE, LENGTH = CONFIG_SYS_SDRAM_SIZE
|
|
}
|
|
|
|
ENTRY(_start)
|
|
|
|
SECTIONS
|
|
{
|
|
reloc_dst = .;
|
|
|
|
PROVIDE (_ftext = .);
|
|
PROVIDE (_fcode = .);
|
|
PROVIDE (_start = .);
|
|
|
|
.text :
|
|
{
|
|
KEEP(*/start.o (.text))
|
|
KEEP(CONFIG_BOARDDIR/lowlevel_init.o (.text .spiboot1.text))
|
|
KEEP(*(.spiboot2.text))
|
|
. = ALIGN(8192);
|
|
#ifdef CONFIG_ENV_IS_IN_FLASH
|
|
env/embedded.o (.doesnotexist)
|
|
. = ALIGN(8192);
|
|
#endif
|
|
*(.text)
|
|
. = ALIGN(4);
|
|
} >ram =0xFF
|
|
PROVIDE (_ecode = .);
|
|
.rodata :
|
|
{
|
|
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
|
|
. = ALIGN(4);
|
|
} >ram
|
|
PROVIDE (_etext = .);
|
|
|
|
|
|
PROVIDE (_fdata = .);
|
|
.data :
|
|
{
|
|
*(.data)
|
|
. = ALIGN(4);
|
|
} >ram
|
|
PROVIDE (_edata = .);
|
|
|
|
PROVIDE (_fgot = .);
|
|
.got :
|
|
{
|
|
*(.got.plt) *(.got)
|
|
. = ALIGN(4);
|
|
} >ram
|
|
PROVIDE (_egot = .);
|
|
|
|
.u_boot_list : {
|
|
KEEP(*(SORT(.u_boot_list*)));
|
|
} >ram
|
|
|
|
PROVIDE (__init_end = .);
|
|
PROVIDE (reloc_dst_end = .);
|
|
PROVIDE (_end = .);
|
|
|
|
PROVIDE (bss_start = .);
|
|
PROVIDE (__bss_start = .);
|
|
.bss :
|
|
{
|
|
*(.bss)
|
|
. = ALIGN(4);
|
|
} >ram
|
|
PROVIDE (bss_end = .);
|
|
PROVIDE (__bss_end = .);
|
|
}
|