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