xref: /rk3399_ARM-atf/include/plat/arm/common/arm_reclaim_init.ld.S (revision a71c59d5cbd112dbaa1299d4b93dcd99bace75e7)
1cb4adb0dSDaniel Boulby/*
2*a71c59d5SAmbroise Vincent * Copyright (c) 2017-2019, ARM Limited and Contributors. All rights reserved.
3cb4adb0dSDaniel Boulby *
4cb4adb0dSDaniel Boulby * SPDX-License-Identifier: BSD-3-Clause
5cb4adb0dSDaniel Boulby */
6cb4adb0dSDaniel Boulby#ifndef ARM_RECLAIM_INIT_LD_S
7cb4adb0dSDaniel Boulby#define ARM_RECLAIM_INIT_LD_S
8cb4adb0dSDaniel Boulby
9cb4adb0dSDaniel BoulbySECTIONS
10cb4adb0dSDaniel Boulby{
11cb4adb0dSDaniel Boulby        .init __STACKS_START__ : {
12cb4adb0dSDaniel Boulby            . = . + PLATFORM_STACK_SIZE;
13cb4adb0dSDaniel Boulby            . = ALIGN(PAGE_SIZE);
14cb4adb0dSDaniel Boulby            __INIT_CODE_START__ = .;
15cb4adb0dSDaniel Boulby            /*
16cb4adb0dSDaniel Boulby             * Exclude PSCI initialization functions to ensure the init section
17cb4adb0dSDaniel Boulby             * does not become larger than the overlaid stack region
18cb4adb0dSDaniel Boulby             */
19cb4adb0dSDaniel Boulby            *(EXCLUDE_FILE (*psci_setup.o).text.init*)
20cb4adb0dSDaniel Boulby            __INIT_CODE_UNALIGNED__ = .;
21cb4adb0dSDaniel Boulby            .  = ALIGN(PAGE_SIZE);
22cb4adb0dSDaniel Boulby            __INIT_CODE_END__ = .;
23cb4adb0dSDaniel Boulby        } >RAM
24cb4adb0dSDaniel Boulby
25cb4adb0dSDaniel Boulby#ifdef BL31_PROGBITS_LIMIT
26cb4adb0dSDaniel Boulby    ASSERT(__INIT_CODE_END__ <= BL31_PROGBITS_LIMIT,
27cb4adb0dSDaniel Boulby            "BL31 init has exceeded progbits limit.")
28cb4adb0dSDaniel Boulby#endif
29cb4adb0dSDaniel Boulby
30cb4adb0dSDaniel Boulby    ASSERT(__INIT_CODE_END__ <= __STACKS_END__,
31cb4adb0dSDaniel Boulby        "Init code ends past the end of the stacks")
32*a71c59d5SAmbroise Vincent
33cb4adb0dSDaniel Boulby}
34cb4adb0dSDaniel Boulby
35cb4adb0dSDaniel Boulby#endif /* ARM_RECLAIM_INIT_LD_S */
36