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