mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-12 15:53:21 +09:00
![Peter Crosthwaite](/assets/img/avatar_default.png)
The vectors section contains the _start symbol which is used as the
program entry point. Add it to the linker script in same fashion as done
for regular u-boot. This allows for correct generation of an spl elf
with a non-zero entry point.
A similar change was applied to sunxi platform in
"sunxi: Fix u-boot-spl.lds to refer to .vectors"
(sha1: 9e5f80d823
)
This also allows for placement of the vector table at the hivecs
location by setting the TEXT_BASE to 0xffff0000.
Tested-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
63 lines
1.1 KiB
Plaintext
63 lines
1.1 KiB
Plaintext
/*
|
|
* Copyright (c) 2014 Xilinx, Inc. Michal Simek
|
|
* Copyright (c) 2004-2008 Texas Instruments
|
|
*
|
|
* (C) Copyright 2002
|
|
* Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
|
|
LENGTH = CONFIG_SPL_MAX_SIZE }
|
|
MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
|
|
LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
|
|
|
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
|
OUTPUT_ARCH(arm)
|
|
ENTRY(_start)
|
|
SECTIONS
|
|
{
|
|
. = ALIGN(4);
|
|
.text :
|
|
{
|
|
__image_copy_start = .;
|
|
*(.vectors)
|
|
CPUDIR/start.o (.text*)
|
|
*(.text*)
|
|
} > .sram
|
|
|
|
. = ALIGN(4);
|
|
.rodata : {
|
|
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
|
|
} > .sram
|
|
|
|
. = ALIGN(4);
|
|
.data : {
|
|
*(.data*)
|
|
} > .sram
|
|
|
|
. = ALIGN(4);
|
|
|
|
. = .;
|
|
|
|
__image_copy_end = .;
|
|
|
|
_end = .;
|
|
|
|
/* Move BSS section to RAM because of FAT */
|
|
.bss (NOLOAD) : {
|
|
__bss_start = .;
|
|
*(.bss*)
|
|
. = ALIGN(4);
|
|
__bss_end = .;
|
|
} > .sdram
|
|
|
|
/DISCARD/ : { *(.dynsym) }
|
|
/DISCARD/ : { *(.dynstr*) }
|
|
/DISCARD/ : { *(.dynamic*) }
|
|
/DISCARD/ : { *(.plt*) }
|
|
/DISCARD/ : { *(.interp*) }
|
|
/DISCARD/ : { *(.gnu*) }
|
|
}
|