1*91f16700Schasinglulu/* 2*91f16700Schasinglulu * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu#ifndef ROCKCHIP_PLAT_LD_S 7*91f16700Schasinglulu#define ROCKCHIP_PLAT_LD_S 8*91f16700Schasinglulu 9*91f16700Schasinglulu#include <lib/xlat_tables/xlat_tables_defs.h> 10*91f16700Schasinglulu 11*91f16700SchasingluluMEMORY { 12*91f16700Schasinglulu SRAM (rwx): ORIGIN = SRAM_BASE, LENGTH = SRAM_SIZE 13*91f16700Schasinglulu PMUSRAM (rwx): ORIGIN = PMUSRAM_BASE, LENGTH = PMUSRAM_RSIZE 14*91f16700Schasinglulu} 15*91f16700Schasinglulu 16*91f16700SchasingluluSECTIONS 17*91f16700Schasinglulu{ 18*91f16700Schasinglulu . = SRAM_BASE; 19*91f16700Schasinglulu ASSERT(. == ALIGN(PAGE_SIZE), 20*91f16700Schasinglulu "SRAM_BASE address is not aligned on a page boundary.") 21*91f16700Schasinglulu 22*91f16700Schasinglulu /* 23*91f16700Schasinglulu * The SRAM space allocation for RK3399 24*91f16700Schasinglulu * ---------------- 25*91f16700Schasinglulu * | m0 code bin 26*91f16700Schasinglulu * ---------------- 27*91f16700Schasinglulu * | sram text 28*91f16700Schasinglulu * ---------------- 29*91f16700Schasinglulu * | sram data 30*91f16700Schasinglulu * ---------------- 31*91f16700Schasinglulu */ 32*91f16700Schasinglulu .incbin_sram : ALIGN(PAGE_SIZE) { 33*91f16700Schasinglulu __sram_incbin_start = .; 34*91f16700Schasinglulu *(.sram.incbin) 35*91f16700Schasinglulu __sram_incbin_real_end = .; 36*91f16700Schasinglulu . = ALIGN(PAGE_SIZE); 37*91f16700Schasinglulu __sram_incbin_end = .; 38*91f16700Schasinglulu } >SRAM 39*91f16700Schasinglulu ASSERT((__sram_incbin_real_end - __sram_incbin_start) <= 40*91f16700Schasinglulu SRAM_BIN_LIMIT, ".incbin_sram has exceeded its limit") 41*91f16700Schasinglulu 42*91f16700Schasinglulu .text_sram : ALIGN(PAGE_SIZE) { 43*91f16700Schasinglulu __bl31_sram_text_start = .; 44*91f16700Schasinglulu *(.sram.text) 45*91f16700Schasinglulu *(.sram.rodata) 46*91f16700Schasinglulu __bl31_sram_text_real_end = .; 47*91f16700Schasinglulu . = ALIGN(PAGE_SIZE); 48*91f16700Schasinglulu __bl31_sram_text_end = .; 49*91f16700Schasinglulu } >SRAM 50*91f16700Schasinglulu ASSERT((__bl31_sram_text_real_end - __bl31_sram_text_start) <= 51*91f16700Schasinglulu SRAM_TEXT_LIMIT, ".text_sram has exceeded its limit") 52*91f16700Schasinglulu 53*91f16700Schasinglulu .data_sram : ALIGN(PAGE_SIZE) { 54*91f16700Schasinglulu __bl31_sram_data_start = .; 55*91f16700Schasinglulu *(.sram.data) 56*91f16700Schasinglulu __bl31_sram_data_real_end = .; 57*91f16700Schasinglulu . = ALIGN(PAGE_SIZE); 58*91f16700Schasinglulu __bl31_sram_data_end = .; 59*91f16700Schasinglulu } >SRAM 60*91f16700Schasinglulu ASSERT((__bl31_sram_data_real_end - __bl31_sram_data_start) <= 61*91f16700Schasinglulu SRAM_DATA_LIMIT, ".data_sram has exceeded its limit") 62*91f16700Schasinglulu 63*91f16700Schasinglulu .stack_sram : ALIGN(PAGE_SIZE) { 64*91f16700Schasinglulu __bl31_sram_stack_start = .; 65*91f16700Schasinglulu . += PAGE_SIZE; 66*91f16700Schasinglulu __bl31_sram_stack_end = .; 67*91f16700Schasinglulu } >SRAM 68*91f16700Schasinglulu 69*91f16700Schasinglulu . = PMUSRAM_BASE; 70*91f16700Schasinglulu 71*91f16700Schasinglulu /* 72*91f16700Schasinglulu * pmu_cpuson_entrypoint request address 73*91f16700Schasinglulu * align 64K when resume, so put it in the 74*91f16700Schasinglulu * start of pmusram 75*91f16700Schasinglulu */ 76*91f16700Schasinglulu .pmusram : { 77*91f16700Schasinglulu ASSERT(. == ALIGN(64 * 1024), 78*91f16700Schasinglulu ".pmusram.entry request 64K aligned."); 79*91f16700Schasinglulu *(.pmusram.entry) 80*91f16700Schasinglulu 81*91f16700Schasinglulu __bl31_pmusram_text_start = .; 82*91f16700Schasinglulu *(.pmusram.text) 83*91f16700Schasinglulu *(.pmusram.rodata) 84*91f16700Schasinglulu __bl31_pmusram_text_end = .; 85*91f16700Schasinglulu 86*91f16700Schasinglulu /* M0 start address request 4K align */ 87*91f16700Schasinglulu . = ALIGN(4096); 88*91f16700Schasinglulu __pmusram_incbin_start = .; 89*91f16700Schasinglulu *(.pmusram.incbin) 90*91f16700Schasinglulu __pmusram_incbin_end = .; 91*91f16700Schasinglulu 92*91f16700Schasinglulu __bl31_pmusram_data_start = .; 93*91f16700Schasinglulu *(.pmusram.data) 94*91f16700Schasinglulu __bl31_pmusram_data_end = .; 95*91f16700Schasinglulu } >PMUSRAM 96*91f16700Schasinglulu} 97*91f16700Schasinglulu 98*91f16700Schasinglulu#endif /* ROCKCHIP_PLAT_LD_S */ 99