mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-08-17 01:47:00 +02:00
Map the initialization code for BL31 to overlap with the memory required for the secondary cores stack. Once BL31 has been initialized the memory can be remapped to RW data so that it can be used for secondary cores stacks. By moving code from .text to .text.init the size of the BL31 image is decreased by a page. Split arm_common.ld.S into two linker scripts, one for tzc_dram (arm_tzc_dram.ld.S) and one for reclaiming initialization code (arm_reclaim_init.ld.S) so that platforms can chose which memory regions they wish to include. Change-Id: I648e88f3eda1aa71765744cf34343ecda9320b32 Signed-off-by: Daniel Boulby <daniel.boulby@arm.com>
37 lines
1021 B
ArmAsm
37 lines
1021 B
ArmAsm
/*
|
|
* Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
#ifndef ARM_RECLAIM_INIT_LD_S
|
|
#define ARM_RECLAIM_INIT_LD_S
|
|
|
|
SECTIONS
|
|
{
|
|
.init __STACKS_START__ : {
|
|
. = . + PLATFORM_STACK_SIZE;
|
|
. = ALIGN(PAGE_SIZE);
|
|
__INIT_CODE_START__ = .;
|
|
/*
|
|
* Exclude PSCI initialization functions to ensure the init section
|
|
* does not become larger than the overlaid stack region
|
|
*/
|
|
*(EXCLUDE_FILE (*psci_setup.o).text.init*)
|
|
__INIT_CODE_UNALIGNED__ = .;
|
|
. = ALIGN(PAGE_SIZE);
|
|
__INIT_CODE_END__ = .;
|
|
} >RAM
|
|
|
|
#ifdef BL31_PROGBITS_LIMIT
|
|
ASSERT(__INIT_CODE_END__ <= BL31_PROGBITS_LIMIT,
|
|
"BL31 init has exceeded progbits limit.")
|
|
#endif
|
|
|
|
#if RECLAIM_INIT_CODE
|
|
ASSERT(__INIT_CODE_END__ <= __STACKS_END__,
|
|
"Init code ends past the end of the stacks")
|
|
#endif
|
|
}
|
|
|
|
#endif /* ARM_RECLAIM_INIT_LD_S */
|