blob: aa27bae1d48a8e95f1825e22b8223ed5169b1246 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#include <memlayout.h>
#include <soc/psp_transfer.h>
#include <fmap_config.h>
/* 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)
}