0f8d5aaca858a9f1ce250fc47d6a813171751fd5
[project/bcm63xx/atf.git] / bl1 / aarch64 / bl1_entrypoint.S
1 /*
2 * Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7 #include <arch.h>
8 #include <el3_common_macros.S>
9
10 .globl bl1_entrypoint
11
12
13 /* -----------------------------------------------------
14 * bl1_entrypoint() is the entry point into the trusted
15 * firmware code when a cpu is released from warm or
16 * cold reset.
17 * -----------------------------------------------------
18 */
19
20 func bl1_entrypoint
21 /* ---------------------------------------------------------------------
22 * If the reset address is programmable then bl1_entrypoint() is
23 * executed only on the cold boot path. Therefore, we can skip the warm
24 * boot mailbox mechanism.
25 * ---------------------------------------------------------------------
26 */
27 el3_entrypoint_common \
28 _init_sctlr=1 \
29 _warm_boot_mailbox=!PROGRAMMABLE_RESET_ADDRESS \
30 _secondary_cold_boot=!COLD_BOOT_SINGLE_CPU \
31 _init_memory=1 \
32 _init_c_runtime=1 \
33 _exception_vectors=bl1_exceptions
34
35 /* --------------------------------------------------------------------
36 * Perform BL1 setup
37 * --------------------------------------------------------------------
38 */
39 bl bl1_setup
40
41 /* --------------------------------------------------------------------
42 * Enable pointer authentication
43 * --------------------------------------------------------------------
44 */
45 #if ENABLE_PAUTH
46 mrs x0, sctlr_el3
47 orr x0, x0, #SCTLR_EnIA_BIT
48 msr sctlr_el3, x0
49 isb
50 #endif /* ENABLE_PAUTH */
51
52 /* --------------------------------------------------------------------
53 * Initialize platform and jump to our c-entry point
54 * for this type of reset.
55 * --------------------------------------------------------------------
56 */
57 bl bl1_main
58
59 /* --------------------------------------------------------------------
60 * Disable pointer authentication before jumping to BL31 or that will
61 * cause an authentication failure during the early platform init.
62 * --------------------------------------------------------------------
63 */
64 #if ENABLE_PAUTH
65 mrs x0, sctlr_el3
66 bic x0, x0, #SCTLR_EnIA_BIT
67 msr sctlr_el3, x0
68 isb
69 #endif /* ENABLE_PAUTH */
70
71 /* --------------------------------------------------
72 * Do the transition to next boot image.
73 * --------------------------------------------------
74 */
75 b el3_exit
76 endfunc bl1_entrypoint