xref: /rk3399_ARM-atf/plat/rockchip/rk3399/include/plat.ld.S (revision 9a207532f8216bf83fed0891fed9ed0bc72ca450)
1ec693569SCaesar Wang/*
2ec693569SCaesar Wang * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3ec693569SCaesar Wang *
482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause
5ec693569SCaesar Wang */
6c3cf06f1SAntonio Nino Diaz#ifndef ROCKCHIP_PLAT_LD_S
7c3cf06f1SAntonio Nino Diaz#define ROCKCHIP_PLAT_LD_S
8ec693569SCaesar Wang
9*09d40e0eSAntonio Nino Diaz#include <lib/xlat_tables/xlat_tables_defs.h>
10a2aedac2SAntonio Nino Diaz
11ec693569SCaesar WangMEMORY {
12ec693569SCaesar Wang    SRAM (rwx): ORIGIN = SRAM_BASE, LENGTH = SRAM_SIZE
13bc5c3007SLin Huang    PMUSRAM (rwx): ORIGIN = PMUSRAM_BASE, LENGTH = PMUSRAM_RSIZE
14ec693569SCaesar Wang}
15ec693569SCaesar Wang
16ec693569SCaesar WangSECTIONS
17ec693569SCaesar Wang{
18ec693569SCaesar Wang	. = SRAM_BASE;
19a2aedac2SAntonio Nino Diaz	ASSERT(. == ALIGN(PAGE_SIZE),
20ec693569SCaesar Wang		"SRAM_BASE address is not aligned on a page boundary.")
21ec693569SCaesar Wang
22ec693569SCaesar Wang	/*
23ec693569SCaesar Wang	 * The SRAM space allocation for RK3399
24ec693569SCaesar Wang	 * ----------------
258382e17cSCaesar Wang	 * | m0 code bin
268382e17cSCaesar Wang	 * ----------------
27ec693569SCaesar Wang	 * | sram text
28ec693569SCaesar Wang	 * ----------------
29ec693569SCaesar Wang	 * | sram data
30ec693569SCaesar Wang	 * ----------------
31ec693569SCaesar Wang	 */
32a2aedac2SAntonio Nino Diaz	.incbin_sram : ALIGN(PAGE_SIZE) {
338382e17cSCaesar Wang		__sram_incbin_start = .;
348382e17cSCaesar Wang		*(.sram.incbin)
354e836d35SLin Huang		 __sram_incbin_real_end = .;
36a2aedac2SAntonio Nino Diaz		. = ALIGN(PAGE_SIZE);
378382e17cSCaesar Wang		__sram_incbin_end = .;
388382e17cSCaesar Wang	} >SRAM
394e836d35SLin Huang	ASSERT((__sram_incbin_real_end - __sram_incbin_start) <=
404e836d35SLin Huang		SRAM_BIN_LIMIT, ".incbin_sram has exceeded its limit")
418382e17cSCaesar Wang
42a2aedac2SAntonio Nino Diaz	.text_sram : ALIGN(PAGE_SIZE) {
43ec693569SCaesar Wang		__bl31_sram_text_start = .;
44ec693569SCaesar Wang		*(.sram.text)
45ec693569SCaesar Wang		*(.sram.rodata)
464e836d35SLin Huang		__bl31_sram_text_real_end = .;
47a2aedac2SAntonio Nino Diaz		. = ALIGN(PAGE_SIZE);
48ec693569SCaesar Wang		__bl31_sram_text_end = .;
49ec693569SCaesar Wang	} >SRAM
504e836d35SLin Huang	ASSERT((__bl31_sram_text_real_end - __bl31_sram_text_start) <=
514e836d35SLin Huang		SRAM_TEXT_LIMIT, ".text_sram has exceeded its limit")
52ec693569SCaesar Wang
53a2aedac2SAntonio Nino Diaz	.data_sram : ALIGN(PAGE_SIZE) {
54ec693569SCaesar Wang		__bl31_sram_data_start = .;
55ec693569SCaesar Wang		*(.sram.data)
564e836d35SLin Huang		__bl31_sram_data_real_end = .;
57a2aedac2SAntonio Nino Diaz		. = ALIGN(PAGE_SIZE);
58ec693569SCaesar Wang		__bl31_sram_data_end = .;
59ec693569SCaesar Wang	} >SRAM
604e836d35SLin Huang	ASSERT((__bl31_sram_data_real_end - __bl31_sram_data_start) <=
614e836d35SLin Huang		SRAM_DATA_LIMIT, ".data_sram has exceeded its limit")
62bc5c3007SLin Huang
63a2aedac2SAntonio Nino Diaz	.stack_sram : ALIGN(PAGE_SIZE) {
64bc5c3007SLin Huang		__bl31_sram_stack_start = .;
65a2aedac2SAntonio Nino Diaz		. += PAGE_SIZE;
66bc5c3007SLin Huang		__bl31_sram_stack_end = .;
67bc5c3007SLin Huang	} >SRAM
68bc5c3007SLin Huang
69bc5c3007SLin Huang	. = PMUSRAM_BASE;
70bc5c3007SLin Huang
71bc5c3007SLin Huang	/*
72bc5c3007SLin Huang	 * pmu_cpuson_entrypoint request address
73bc5c3007SLin Huang	 * align 64K when resume, so put it in the
74bc5c3007SLin Huang	 * start of pmusram
75bc5c3007SLin Huang	 */
76bc5c3007SLin Huang	.pmusram : {
77bc5c3007SLin Huang		ASSERT(. == ALIGN(64 * 1024),
78bc5c3007SLin Huang			".pmusram.entry request 64K aligned.");
79bc5c3007SLin Huang		*(.pmusram.entry)
80ff4735cfSLin Huang
81bc5c3007SLin Huang		__bl31_pmusram_text_start = .;
82bc5c3007SLin Huang		*(.pmusram.text)
83bc5c3007SLin Huang		*(.pmusram.rodata)
84bc5c3007SLin Huang		__bl31_pmusram_text_end = .;
85ff4735cfSLin Huang
86ff4735cfSLin Huang		/* M0 start address request 4K align */
87ff4735cfSLin Huang		. = ALIGN(4096);
88ff4735cfSLin Huang		__pmusram_incbin_start = .;
89ff4735cfSLin Huang		*(.pmusram.incbin)
90ff4735cfSLin Huang		__pmusram_incbin_end = .;
91ff4735cfSLin Huang
92bc5c3007SLin Huang		__bl31_pmusram_data_start = .;
93bc5c3007SLin Huang		*(.pmusram.data)
94bc5c3007SLin Huang		__bl31_pmusram_data_end = .;
95bc5c3007SLin Huang	} >PMUSRAM
96ec693569SCaesar Wang}
97ec693569SCaesar Wang
98c3cf06f1SAntonio Nino Diaz#endif /* ROCKCHIP_PLAT_LD_S */
99