101301b11SAndre Przywara/* 201301b11SAndre Przywara * Copyright (c) 2020, ARM Limited. All rights reserved. 301301b11SAndre Przywara * 401301b11SAndre Przywara * SPDX-License-Identifier: BSD-3-Clause 501301b11SAndre Przywara * 601301b11SAndre Przywara * Linker script for the Arm Ltd. FPGA boards to generate an ELF file that 701301b11SAndre Przywara * contains the ROM trampoline, BL31 and the DTB. 801301b11SAndre Przywara * 901301b11SAndre Przywara * This allows to pass just one file to the uploader tool, and automatically 1001301b11SAndre Przywara * provides the correct load addresses. 1101301b11SAndre Przywara */ 1201301b11SAndre Przywara 1301301b11SAndre Przywara#include <platform_def.h> 1401301b11SAndre Przywara 1501301b11SAndre PrzywaraOUTPUT_FORMAT("elf64-littleaarch64") 1601301b11SAndre PrzywaraOUTPUT_ARCH(aarch64) 1701301b11SAndre Przywara 1801301b11SAndre PrzywaraINPUT(./bl31/bl31.elf) 1901301b11SAndre PrzywaraINPUT(./rom_trampoline.o) 20*de9fdb9bSAndre PrzywaraINPUT(./kernel_trampoline.o) 2101301b11SAndre Przywara 2201301b11SAndre PrzywaraTARGET(binary) 2301301b11SAndre PrzywaraINPUT(./fdts/arm_fpga.dtb) 2401301b11SAndre Przywara 2501301b11SAndre PrzywaraENTRY(_start) 2601301b11SAndre Przywara 2701301b11SAndre PrzywaraSECTIONS 2801301b11SAndre Przywara{ 2901301b11SAndre Przywara .rom (0x0): { 3001301b11SAndre Przywara *rom_trampoline.o(.text*) 3101301b11SAndre Przywara KEEP(*(.rom)) 3201301b11SAndre Przywara } 3301301b11SAndre Przywara 3401301b11SAndre Przywara .bl31 (BL31_BASE): { 3501301b11SAndre Przywara ASSERT(. == ALIGN(PAGE_SIZE), "BL31_BASE is not page aligned"); 3601301b11SAndre Przywara *bl31.elf(.text* .data* .rodata* ro* .bss*) 3701301b11SAndre Przywara *bl31.elf(.stack) 3801301b11SAndre Przywara } 3901301b11SAndre Przywara 4001301b11SAndre Przywara .dtb (FPGA_PRELOADED_DTB_BASE): { 4101301b11SAndre Przywara ASSERT(. == ALIGN(8), "DTB address is not 8-byte aligned"); 4201301b11SAndre Przywara *arm_fpga.dtb 4301301b11SAndre Przywara } 4401301b11SAndre Przywara 45*de9fdb9bSAndre Przywara .kern_tramp (PRELOADED_BL33_BASE): { 46*de9fdb9bSAndre Przywara *kernel_trampoline.o(.text*) 47*de9fdb9bSAndre Przywara KEEP(*(.kern_tramp)) 48*de9fdb9bSAndre Przywara } 49*de9fdb9bSAndre Przywara 5001301b11SAndre Przywara /DISCARD/ : { *(.debug_*) } 5101301b11SAndre Przywara /DISCARD/ : { *(.note*) } 5201301b11SAndre Przywara /DISCARD/ : { *(.comment*) } 5301301b11SAndre Przywara} 54