xref: /rk3399_ARM-atf/plat/rockchip/rk3576/include/plat.ld.S (revision 04b2fb42b171e3fbf2ef823558ac5b0119663dc7)
1*036935a8SXiaoDong Huang// SPDX-License-Identifier: BSD-3-Clause
2*036935a8SXiaoDong Huang/*
3*036935a8SXiaoDong Huang * Copyright (c) 2025, Rockchip Electronics Co., Ltd.
4*036935a8SXiaoDong Huang */
5*036935a8SXiaoDong Huang
6*036935a8SXiaoDong Huang#ifndef ROCKCHIP_PLAT_LD_S
7*036935a8SXiaoDong Huang#define ROCKCHIP_PLAT_LD_S
8*036935a8SXiaoDong Huang
9*036935a8SXiaoDong HuangMEMORY {
10*036935a8SXiaoDong Huang	PMUSRAM (rwx): ORIGIN = PMUSRAM_BASE, LENGTH = PMUSRAM_RSIZE
11*036935a8SXiaoDong Huang}
12*036935a8SXiaoDong Huang
13*036935a8SXiaoDong HuangSECTIONS
14*036935a8SXiaoDong Huang{
15*036935a8SXiaoDong Huang	. = PMUSRAM_BASE;
16*036935a8SXiaoDong Huang
17*036935a8SXiaoDong Huang	/*
18*036935a8SXiaoDong Huang	 * pmu_cpuson_entrypoint request address
19*036935a8SXiaoDong Huang	 * align 64K when resume, so put it in the
20*036935a8SXiaoDong Huang	 * start of pmusram
21*036935a8SXiaoDong Huang	 */
22*036935a8SXiaoDong Huang	.text_pmusram : {
23*036935a8SXiaoDong Huang		ASSERT(. == ALIGN(64 * 1024),
24*036935a8SXiaoDong Huang			".pmusram.entry request 64K aligned.");
25*036935a8SXiaoDong Huang		KEEP(*(.pmusram.entry))
26*036935a8SXiaoDong Huang		__bl31_pmusram_text_start = .;
27*036935a8SXiaoDong Huang		*(.pmusram.text)
28*036935a8SXiaoDong Huang		*(.pmusram.rodata)
29*036935a8SXiaoDong Huang		. = ALIGN(PAGE_SIZE);
30*036935a8SXiaoDong Huang		__bl31_pmusram_text_end = .;
31*036935a8SXiaoDong Huang		__bl31_pmusram_data_start = .;
32*036935a8SXiaoDong Huang		*(.pmusram.data)
33*036935a8SXiaoDong Huang		. = ALIGN(PAGE_SIZE);
34*036935a8SXiaoDong Huang		__bl31_pmusram_data_end = .;
35*036935a8SXiaoDong Huang
36*036935a8SXiaoDong Huang		ASSERT(__bl31_pmusram_data_end <= PMUSRAM_BASE + PMUSRAM_RSIZE,
37*036935a8SXiaoDong Huang			".pmusram has exceeded its limit.");
38*036935a8SXiaoDong Huang	} >PMUSRAM
39*036935a8SXiaoDong Huang}
40*036935a8SXiaoDong Huang#endif /* ROCKCHIP_PLAT_LD_S */
41