1*82274936SChris Kay/* 2*82274936SChris Kay * Copyright (c) 2021-2023, Arm Limited and Contributors. All rights reserved. 3*82274936SChris Kay * 4*82274936SChris Kay * SPDX-License-Identifier: BSD-3-Clause 5*82274936SChris Kay */ 6*82274936SChris Kay 7*82274936SChris Kay#include <common/bl_common.ld.h> 8*82274936SChris Kay#include <lib/xlat_tables/xlat_tables_defs.h> 9*82274936SChris Kay 10*82274936SChris Kay/* Mapped using 4K pages, requires us to align different sections with 11*82274936SChris Kay * different property at the same granularity. */ 12*82274936SChris KayPAGE_SIZE_4K = 4096; 13*82274936SChris Kay 14*82274936SChris KayOUTPUT_FORMAT("elf64-littleaarch64") 15*82274936SChris KayOUTPUT_ARCH(aarch64) 16*82274936SChris KayENTRY(trp_head) 17*82274936SChris Kay 18*82274936SChris KayMEMORY { 19*82274936SChris Kay RAM (rwx): ORIGIN = RMM_BASE, LENGTH = RMM_LIMIT - RMM_BASE 20*82274936SChris Kay} 21*82274936SChris Kay 22*82274936SChris Kay 23*82274936SChris KaySECTIONS 24*82274936SChris Kay{ 25*82274936SChris Kay . = RMM_BASE; 26*82274936SChris Kay 27*82274936SChris Kay .text : { 28*82274936SChris Kay *(.head.text) 29*82274936SChris Kay . = ALIGN(8); 30*82274936SChris Kay *(.text*) 31*82274936SChris Kay } >RAM 32*82274936SChris Kay 33*82274936SChris Kay . = ALIGN(PAGE_SIZE_4K); 34*82274936SChris Kay 35*82274936SChris Kay .rodata : { 36*82274936SChris Kay *(.rodata*) 37*82274936SChris Kay } >RAM 38*82274936SChris Kay 39*82274936SChris Kay . = ALIGN(PAGE_SIZE_4K); 40*82274936SChris Kay 41*82274936SChris Kay __RW_START__ = . ; 42*82274936SChris Kay 43*82274936SChris Kay .data : { 44*82274936SChris Kay *(.data*) 45*82274936SChris Kay } >RAM 46*82274936SChris Kay 47*82274936SChris Kay .bss (NOLOAD) : { 48*82274936SChris Kay __BSS_START__ = .; 49*82274936SChris Kay *(.bss*) 50*82274936SChris Kay __BSS_END__ = .; 51*82274936SChris Kay } >RAM 52*82274936SChris Kay __BSS_SIZE__ = SIZEOF(.bss); 53*82274936SChris Kay 54*82274936SChris Kay 55*82274936SChris Kay STACK_SECTION >RAM 56*82274936SChris Kay 57*82274936SChris Kay 58*82274936SChris Kay /* 59*82274936SChris Kay * Define a linker symbol to mark the end of the RW memory area for this 60*82274936SChris Kay * image. 61*82274936SChris Kay */ 62*82274936SChris Kay __RW_END__ = .; 63*82274936SChris Kay __RMM_END__ = .; 64*82274936SChris Kay 65*82274936SChris Kay 66*82274936SChris Kay /DISCARD/ : { *(.dynstr*) } 67*82274936SChris Kay /DISCARD/ : { *(.dynamic*) } 68*82274936SChris Kay /DISCARD/ : { *(.plt*) } 69*82274936SChris Kay /DISCARD/ : { *(.interp*) } 70*82274936SChris Kay /DISCARD/ : { *(.gnu*) } 71*82274936SChris Kay /DISCARD/ : { *(.note*) } 72*82274936SChris Kay} 73