1/* 2 * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6#ifndef ROCKCHIP_PLAT_LD_S 7#define ROCKCHIP_PLAT_LD_S 8 9#include <lib/xlat_tables/xlat_tables_defs.h> 10 11MEMORY { 12 SRAM (rwx): ORIGIN = SRAM_BASE, LENGTH = SRAM_SIZE 13 PMUSRAM (rwx): ORIGIN = PMUSRAM_BASE, LENGTH = PMUSRAM_RSIZE 14} 15 16SECTIONS 17{ 18 . = SRAM_BASE; 19 ASSERT(. == ALIGN(PAGE_SIZE), 20 "SRAM_BASE address is not aligned on a page boundary.") 21 22 .text_sram : ALIGN(PAGE_SIZE) { 23 __bl32_sram_text_start = .; 24 *(.sram.text) 25 *(.sram.rodata) 26 __bl32_sram_text_real_end = .; 27 . = ALIGN(PAGE_SIZE); 28 __bl32_sram_text_end = .; 29 } >SRAM 30 ASSERT((__bl32_sram_text_real_end - __bl32_sram_text_start) <= 31 SRAM_TEXT_LIMIT, ".text_sram has exceeded its limit") 32 33 .data_sram : ALIGN(PAGE_SIZE) { 34 __bl32_sram_data_start = .; 35 *(.sram.data) 36 __bl32_sram_data_real_end = .; 37 . = ALIGN(PAGE_SIZE); 38 __bl32_sram_data_end = .; 39 } >SRAM 40 ASSERT((__bl32_sram_data_real_end - __bl32_sram_data_start) <= 41 SRAM_DATA_LIMIT, ".data_sram has exceeded its limit") 42 43 .stack_sram : ALIGN(PAGE_SIZE) { 44 __bl32_sram_stack_start = .; 45 . += PAGE_SIZE; 46 __bl32_sram_stack_end = .; 47 } >SRAM 48 49 . = PMUSRAM_BASE; 50 51 /* 52 * pmu_cpuson_entrypoint request address 53 * align 64K when resume, so put it in the 54 * start of pmusram 55 */ 56 .pmusram : { 57 ASSERT(. == ALIGN(64 * 1024), 58 ".pmusram.entry request 64K aligned."); 59 *(.pmusram.entry) 60 61 __bl32_pmusram_text_start = .; 62 *(.pmusram.text) 63 *(.pmusram.rodata) 64 __bl32_pmusram_text_end = .; 65 66 __bl32_pmusram_data_start = .; 67 *(.pmusram.data) 68 __bl32_pmusram_data_end = .; 69 } >PMUSRAM 70} 71 72#endif /* ROCKCHIP_PLAT_LD_S */ 73