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