/* SPDX-License-Identifier: GPL-2.0-only */ #include #include #include /* TODO: Move defines to SoC-specific header file to allow SoC specific values if needed. */ /* * Start of available space is 0x15000 and this is where the * header for the user app (verstage) must be mapped. * Size is 0x28000 bytes */ #define PSP_SRAM_START 0x15000 #define PSP_SRAM_SIZE 160K #define VERSTAGE_START 0x15000 /* * The temp stack can be made much smaller if needed - even 256 bytes * should be sufficient. This is just for the function mapping the * actual stack. */ #define PSP_VERSTAGE_TEMP_STACK_START 0x32000 #define PSP_VERSTAGE_TEMP_STACK_SIZE 4K /* * The top of the stack must be 4k aligned, so set the bottom as 4k aligned * and make the size a multiple of 4k */ #define PSP_VERSTAGE_STACK_START 0x33000 #define PSP_VERSTAGE_STACK_SIZE 40K ENTRY(_psp_vs_start) SECTIONS { SRAM_START(PSP_SRAM_START) _verstage = .; .text : { *(PSP_HEADER_DATA) } .text : { *(.text._psp_vs_start) } .text : { *(.text.Main) } .text : { *(.text*) } .rodata : { *(.rodata*) } .data : { *(.data*) } .data : { *(PSP_FOOTER_DATA) } _bss_start = .; .bss : { *(.bss*) } _bss_end = .; ALIGN_COUNTER(64) _everstage = .; #include "memlayout_transfer_buffer.inc" PSP_VERSTAGE_TEMP_STACK_END = (PSP_VERSTAGE_TEMP_STACK_START + PSP_VERSTAGE_TEMP_STACK_SIZE ); REGION(stack, PSP_VERSTAGE_STACK_START, PSP_VERSTAGE_STACK_SIZE, 64) PSP_VERSTAGE_STACK_BASE = _stack; PSP_VERSTAGE_STACK_END = _estack; SRAM_END(PSP_SRAM_START + PSP_SRAM_SIZE) }