/* * Copyright (c) 2017-2022, 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__ = .; *(*text.init.*); __INIT_CODE_END__ = .; INIT_CODE_END_ALIGNED = ALIGN(PAGE_SIZE); } >RAM #ifdef BL31_PROGBITS_LIMIT ASSERT(__INIT_CODE_END__ <= BL31_PROGBITS_LIMIT, "BL31 init has exceeded progbits limit.") #endif } #define ABS ABSOLUTE #define STACK_SECTION \ stacks (NOLOAD) : { \ __STACKS_START__ = .; \ *(tzfw_normal_stacks) \ __STACKS_END__ = .; \ /* Allow room for the init section where necessary. */ \ OFFSET = ABS(SIZEOF(.init) - (. - __STACKS_START__)); \ /* Offset sign */ \ SIGN = ABS(OFFSET) & (1 << 63); \ /* Offset mask */ \ MASK = ABS(SIGN >> 63) - 1; \ . += ABS(OFFSET) & ABS(MASK); \ . = ALIGN(PAGE_SIZE); \ } #endif /* ARM_RECLAIM_INIT_LD_S */