xref: /rk3399_ARM-atf/bl1/aarch64/bl1_entrypoint.S (revision ed108b56051de5da8024568a06781ce287e86c78)
14f6ad66aSAchin Gupta/*
2cd7d6b0eSAntonio Nino Diaz * Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
34f6ad66aSAchin Gupta *
482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause
54f6ad66aSAchin Gupta */
64f6ad66aSAchin Gupta
7c10bd2ceSSandrine Bailleux#include <arch.h>
852010cc7SSandrine Bailleux#include <el3_common_macros.S>
94f6ad66aSAchin Gupta
109f98aa1aSJeenu Viswambharan	.globl	bl1_entrypoint
114f6ad66aSAchin Gupta
124f6ad66aSAchin Gupta
134f6ad66aSAchin Gupta	/* -----------------------------------------------------
149f98aa1aSJeenu Viswambharan	 * bl1_entrypoint() is the entry point into the trusted
154f6ad66aSAchin Gupta	 * firmware code when a cpu is released from warm or
164f6ad66aSAchin Gupta	 * cold reset.
174f6ad66aSAchin Gupta	 * -----------------------------------------------------
184f6ad66aSAchin Gupta	 */
194f6ad66aSAchin Gupta
200a30cf54SAndrew Thoelkefunc bl1_entrypoint
21bf031bbaSSandrine Bailleux	/* ---------------------------------------------------------------------
22bf031bbaSSandrine Bailleux	 * If the reset address is programmable then bl1_entrypoint() is
23bf031bbaSSandrine Bailleux	 * executed only on the cold boot path. Therefore, we can skip the warm
24bf031bbaSSandrine Bailleux	 * boot mailbox mechanism.
25bf031bbaSSandrine Bailleux	 * ---------------------------------------------------------------------
26bf031bbaSSandrine Bailleux	 */
2752010cc7SSandrine Bailleux	el3_entrypoint_common					\
2818f2efd6SDavid Cunado		_init_sctlr=1					\
29bf031bbaSSandrine Bailleux		_warm_boot_mailbox=!PROGRAMMABLE_RESET_ADDRESS	\
30a9bec67dSSandrine Bailleux		_secondary_cold_boot=!COLD_BOOT_SINGLE_CPU	\
3152010cc7SSandrine Bailleux		_init_memory=1					\
3252010cc7SSandrine Bailleux		_init_c_runtime=1				\
3352010cc7SSandrine Bailleux		_exception_vectors=bl1_exceptions
344f6ad66aSAchin Gupta
35cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
36cd7d6b0eSAntonio Nino Diaz	 * Perform BL1 setup
37cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
384f6ad66aSAchin Gupta	 */
39cd7d6b0eSAntonio Nino Diaz	bl	bl1_setup
40dbad1bacSVikram Kanigiri
41*ed108b56SAlexei Fedorov#if ENABLE_PAUTH
42cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
43*ed108b56SAlexei Fedorov	 * Program APIAKey_EL1 and enable pointer authentication.
44cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
45cd7d6b0eSAntonio Nino Diaz	 */
46*ed108b56SAlexei Fedorov	bl	pauth_init_enable_el3
47cd7d6b0eSAntonio Nino Diaz#endif /* ENABLE_PAUTH */
48cd7d6b0eSAntonio Nino Diaz
49cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
50dbad1bacSVikram Kanigiri	 * Initialize platform and jump to our c-entry point
517baff11fSYatharth Kochar	 * for this type of reset.
52cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
53dbad1bacSVikram Kanigiri	 */
54dbad1bacSVikram Kanigiri	bl	bl1_main
557baff11fSYatharth Kochar
56*ed108b56SAlexei Fedorov#if ENABLE_PAUTH
57cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
58*ed108b56SAlexei Fedorov	 * Disable pointer authentication before jumping to next boot image.
59cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
60cd7d6b0eSAntonio Nino Diaz	 */
61*ed108b56SAlexei Fedorov	bl	pauth_disable_el3
62cd7d6b0eSAntonio Nino Diaz#endif /* ENABLE_PAUTH */
63cd7d6b0eSAntonio Nino Diaz
647baff11fSYatharth Kochar	/* --------------------------------------------------
657baff11fSYatharth Kochar	 * Do the transition to next boot image.
667baff11fSYatharth Kochar	 * --------------------------------------------------
677baff11fSYatharth Kochar	 */
687baff11fSYatharth Kochar	b	el3_exit
698b779620SKévin Petitendfunc bl1_entrypoint
70