1*a2847172SGrzegorz Jaszczyk/* 2*a2847172SGrzegorz Jaszczyk * Copyright (C) 2018 Marvell International Ltd. 3*a2847172SGrzegorz Jaszczyk * 4*a2847172SGrzegorz Jaszczyk * SPDX-License-Identifier: BSD-3-Clause 5*a2847172SGrzegorz Jaszczyk * https://spdx.org/licenses 6*a2847172SGrzegorz Jaszczyk */ 7*a2847172SGrzegorz Jaszczyk 8*a2847172SGrzegorz Jaszczyk#include <platform_def.h> 9*a2847172SGrzegorz Jaszczyk 10*a2847172SGrzegorz JaszczykOUTPUT_FORMAT(PLATFORM_LINKER_FORMAT) 11*a2847172SGrzegorz JaszczykOUTPUT_ARCH(PLATFORM_LINKER_ARCH) 12*a2847172SGrzegorz JaszczykENTRY(ble_main) 13*a2847172SGrzegorz Jaszczyk 14*a2847172SGrzegorz JaszczykMEMORY { 15*a2847172SGrzegorz Jaszczyk RAM (rwx): ORIGIN = BLE_BASE, LENGTH = BLE_LIMIT - BLE_BASE 16*a2847172SGrzegorz Jaszczyk} 17*a2847172SGrzegorz Jaszczyk 18*a2847172SGrzegorz JaszczykSECTIONS 19*a2847172SGrzegorz Jaszczyk{ 20*a2847172SGrzegorz Jaszczyk . = BLE_BASE; 21*a2847172SGrzegorz Jaszczyk 22*a2847172SGrzegorz Jaszczyk ro . : { 23*a2847172SGrzegorz Jaszczyk __RO_START__ = .; 24*a2847172SGrzegorz Jaszczyk *ble_main.o(.entry*) 25*a2847172SGrzegorz Jaszczyk *(.text*) 26*a2847172SGrzegorz Jaszczyk *(.rodata*) 27*a2847172SGrzegorz Jaszczyk __RO_END_UNALIGNED__ = .; 28*a2847172SGrzegorz Jaszczyk __RO_END__ = .; 29*a2847172SGrzegorz Jaszczyk } >RAM 30*a2847172SGrzegorz Jaszczyk 31*a2847172SGrzegorz Jaszczyk /* 32*a2847172SGrzegorz Jaszczyk * Define a linker symbol to mark start of the RW memory area for this 33*a2847172SGrzegorz Jaszczyk * image. 34*a2847172SGrzegorz Jaszczyk */ 35*a2847172SGrzegorz Jaszczyk __RW_START__ = . ; 36*a2847172SGrzegorz Jaszczyk 37*a2847172SGrzegorz Jaszczyk .data . : { 38*a2847172SGrzegorz Jaszczyk __DATA_START__ = .; 39*a2847172SGrzegorz Jaszczyk *(.data*) 40*a2847172SGrzegorz Jaszczyk __DATA_END__ = .; 41*a2847172SGrzegorz Jaszczyk } >RAM 42*a2847172SGrzegorz Jaszczyk 43*a2847172SGrzegorz Jaszczyk stacks . (NOLOAD) : { 44*a2847172SGrzegorz Jaszczyk __STACKS_START__ = .; 45*a2847172SGrzegorz Jaszczyk *(tzfw_normal_stacks) 46*a2847172SGrzegorz Jaszczyk __STACKS_END__ = .; 47*a2847172SGrzegorz Jaszczyk } >RAM 48*a2847172SGrzegorz Jaszczyk 49*a2847172SGrzegorz Jaszczyk .bss : { 50*a2847172SGrzegorz Jaszczyk __BSS_START__ = .; 51*a2847172SGrzegorz Jaszczyk *(.bss*) 52*a2847172SGrzegorz Jaszczyk __BSS_END__ = .; 53*a2847172SGrzegorz Jaszczyk } >RAM 54*a2847172SGrzegorz Jaszczyk 55*a2847172SGrzegorz Jaszczyk /* 56*a2847172SGrzegorz Jaszczyk * Extend the BLE binary to the maximum size allocated for it in platform 57*a2847172SGrzegorz Jaszczyk * definition files and prevent overlapping between BLE BSS section and 58*a2847172SGrzegorz Jaszczyk * additional extensions that can follow the BLE in flash image preamble. 59*a2847172SGrzegorz Jaszczyk * This situation happens for instance when secure extension is added to 60*a2847172SGrzegorz Jaszczyk * the image preamble. 61*a2847172SGrzegorz Jaszczyk */ 62*a2847172SGrzegorz Jaszczyk .fill LOADADDR(.bss) + SIZEOF(.bss) : { 63*a2847172SGrzegorz Jaszczyk FILL(0xDEADC0DE); 64*a2847172SGrzegorz Jaszczyk . = ORIGIN(RAM) + LENGTH(RAM) - 1; 65*a2847172SGrzegorz Jaszczyk BYTE(0x00) 66*a2847172SGrzegorz Jaszczyk } >RAM 67*a2847172SGrzegorz Jaszczyk 68*a2847172SGrzegorz Jaszczyk /* 69*a2847172SGrzegorz Jaszczyk * Define a linker symbol to mark end of the RW memory area for this 70*a2847172SGrzegorz Jaszczyk * image. 71*a2847172SGrzegorz Jaszczyk */ 72*a2847172SGrzegorz Jaszczyk __RW_END__ = .; 73*a2847172SGrzegorz Jaszczyk __BLE_END__ = .; 74*a2847172SGrzegorz Jaszczyk 75*a2847172SGrzegorz Jaszczyk __BSS_SIZE__ = SIZEOF(.bss); 76*a2847172SGrzegorz Jaszczyk} 77