2011-11-08 23:18:21 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
|
|
|
|
* on behalf of DENX Software Engineering GmbH
|
|
|
|
*
|
|
|
|
* January 2004 - Changed to support H4 device
|
|
|
|
* Copyright (c) 2004-2008 Texas Instruments
|
|
|
|
*
|
|
|
|
* (C) Copyright 2002
|
|
|
|
* Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
|
|
|
|
*
|
2013-07-08 07:37:19 +00:00
|
|
|
* SPDX-License-Identifier: GPL-2.0+
|
2011-11-08 23:18:21 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
|
|
|
OUTPUT_ARCH(arm)
|
|
|
|
ENTRY(_start)
|
|
|
|
SECTIONS
|
|
|
|
{
|
arm: mxs: Adjust the load address of U-Boot and SPL for HAB
When using HAB, there are additional special requirements on the placement of
U-Boot and the U-Boot SPL in memory. To fullfill these, this patch moves the
U-Boot binary a little further from the begining of the DRAM, so the HAB CST
and IVT can be placed in front of the U-Boot binary. This is necessary, since
both the U-Boot and the IVT must be contained in single CST signature. To
make things worse, the IVT must be concatenated with one more entry at it's
end, that is the length of the entire CST signature, IVT and U-Boot binary
in memory. By placing the blocks in this order -- CST, IVT, U-Boot, we can
easily align them all and then produce the length field as needed.
As for the SPL, on i.MX23/i.MX28, the SPL size is limited to 32 KiB, thus
we place the IVT at 0x8000 offset, CST right past IVT and claim the size
is correct. The HAB library accepts this setup.
Finally, to make sure the vectoring in SPL still works even after moving
the SPL from 0x0 to 0x1000, we add a small function which copies the
vectoring code and tables to 0x0. This is fine, since the vectoring code
is position independent.
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
2014-03-05 19:01:13 +00:00
|
|
|
. = CONFIG_SPL_TEXT_BASE;
|
2011-11-08 23:18:21 +00:00
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
.text :
|
|
|
|
{
|
2013-04-11 09:36:03 +00:00
|
|
|
arch/arm/cpu/arm926ejs/mxs/start.o (.text*)
|
|
|
|
*(.text*)
|
2011-11-08 23:18:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
.data : {
|
2013-04-11 09:36:03 +00:00
|
|
|
*(.data*)
|
2011-11-08 23:18:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
. = ALIGN(4);
|
|
|
|
|
|
|
|
.rel.dyn : {
|
|
|
|
__rel_dyn_start = .;
|
|
|
|
*(.rel*)
|
|
|
|
__rel_dyn_end = .;
|
|
|
|
}
|
|
|
|
|
2011-12-08 09:46:12 +00:00
|
|
|
.bss : {
|
|
|
|
. = ALIGN(4);
|
2011-11-08 23:18:21 +00:00
|
|
|
__bss_start = .;
|
2011-12-08 09:46:12 +00:00
|
|
|
*(.bss*)
|
|
|
|
. = ALIGN(4);
|
2013-03-14 06:54:53 +00:00
|
|
|
__bss_end = .;
|
2011-11-08 23:18:21 +00:00
|
|
|
}
|
|
|
|
|
2014-02-22 16:53:42 +00:00
|
|
|
.end :
|
|
|
|
{
|
|
|
|
*(.__end)
|
|
|
|
}
|
|
|
|
|
|
|
|
_image_binary_end = .;
|
2011-12-08 09:46:12 +00:00
|
|
|
|
2014-02-22 16:53:42 +00:00
|
|
|
.dynsym _image_binary_end : { *(.dynsym) }
|
2013-11-07 13:21:46 +00:00
|
|
|
.dynbss : { *(.dynbss) }
|
|
|
|
.dynstr : { *(.dynstr*) }
|
|
|
|
.dynamic : { *(.dynamic*) }
|
|
|
|
.hash : { *(.hash*) }
|
|
|
|
.plt : { *(.plt*) }
|
|
|
|
.interp : { *(.interp*) }
|
|
|
|
.gnu : { *(.gnu*) }
|
|
|
|
.ARM.exidx : { *(.ARM.exidx*) }
|
2011-11-08 23:18:21 +00:00
|
|
|
}
|