blob: 6f79b6901341ec0e570a56b11becf34c26f9705f [file] [log] [blame]
/*
* Copyright (C) 2018 Synaptics Incorporated. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND
* SYNAPTICS EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE, AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY
* INTELLECTUAL PROPERTY RIGHTS. IN NO EVENT SHALL SYNAPTICS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE, OR
* CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION WITH THE USE
* OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED AND
* BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF
* COMPETENT JURISDICTION DOES NOT PERMIT THE DISCLAIMER OF DIRECT
* DAMAGES OR ANY OTHER DAMAGES, SYNAPTICS' TOTAL CUMULATIVE LIABILITY
* TO ANY PARTY SHALL NOT EXCEED ONE HUNDRED U.S. DOLLARS.
*/
/*
* bootloader memory layout:
* 0x04100000 - 0x04500000 4096kB translation table
* 0x04500000 - 0x04800000 3072kB code, rodata, data, bss
* 0x04800000 - 0x04E00000 6144kB heap
* 0x04E00000 - 0x04FF0000 1984kB stack
*
*******************************************************************************/
OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64")
OUTPUT_ARCH(aarch64)
ENTRY(BootLoaderEntry)
MEMORY
{
MEM_TTB (rw) : ORIGIN = 0x04100000, LENGTH = 0x00100000
MEM_RUNTIME (rwx) : ORIGIN = 0x04500000, LENGTH = 0x00300000
MEM_HEAP (rw) : ORIGIN = 0x04800000, LENGTH = 0x00600000
MEM_STACK (rw) : ORIGIN = 0x04E00000, LENGTH = 0x001F0000
}
SECTIONS
{
. = 0x04100000;
. = ALIGN(0x1000);
__ttb_base_start = .;
. = 0x04100000 + 0x400000 + 0x80000;
.text ALIGN(32) :
{
*(.text .text.*)
} >MEM_RUNTIME
.rodata :
{
*(.rodata .rodata.*)
} >MEM_RUNTIME
.rela :
{
*(.rela.*)
} >MEM_RUNTIME
.got :
{
*(.got.plt)
*(.igot.plt)
*(.got)
*(.igot)
} >MEM_RUNTIME
.plt :
{
*(.plt)
*(.iplt)
} >MEM_RUNTIME
.data ALIGN(32) :
{
*(.data .data.*)
} >MEM_RUNTIME
.bss ALIGN(32):
{
__bss = .;
*(.bss .bss.*)
*(COMMON)
__bss_end = .;
} >MEM_RUNTIME
. = 0x04800000;
.heap ALIGN(32):
{
__heap_start = .;
. = . + 0x600000;
__heap_end = .;
} >MEM_HEAP
. = 0x04E00000;
.stack ALIGN(32):
{
__stack_stop = .;
. = . + 0x1F0000;
__stack_start = .;
} >MEM_STACK
}