xref: /rk3399_ARM-atf/plat/marvell/armada/a8k/common/ble/ble.ld.S (revision a28471722afb3ae784d7bce2118c2ea703f8444c)
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