xref: /rk3399_ARM-atf/bl1/aarch64/bl1_entrypoint.S (revision da90359b7852e13dc21f54f4d42df6d4790fe0cd)
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				\
33*da90359bSManish Pandey		_exception_vectors=bl1_exceptions		\
34*da90359bSManish Pandey		_pie_fixup_size=0
354f6ad66aSAchin Gupta
36cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
37cd7d6b0eSAntonio Nino Diaz	 * Perform BL1 setup
38cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
394f6ad66aSAchin Gupta	 */
40cd7d6b0eSAntonio Nino Diaz	bl	bl1_setup
41dbad1bacSVikram Kanigiri
42ed108b56SAlexei Fedorov#if ENABLE_PAUTH
43cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
44ed108b56SAlexei Fedorov	 * Program APIAKey_EL1 and enable pointer authentication.
45cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
46cd7d6b0eSAntonio Nino Diaz	 */
47ed108b56SAlexei Fedorov	bl	pauth_init_enable_el3
48cd7d6b0eSAntonio Nino Diaz#endif /* ENABLE_PAUTH */
49cd7d6b0eSAntonio Nino Diaz
50cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
51dbad1bacSVikram Kanigiri	 * Initialize platform and jump to our c-entry point
527baff11fSYatharth Kochar	 * for this type of reset.
53cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
54dbad1bacSVikram Kanigiri	 */
55dbad1bacSVikram Kanigiri	bl	bl1_main
567baff11fSYatharth Kochar
57ed108b56SAlexei Fedorov#if ENABLE_PAUTH
58cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
59ed108b56SAlexei Fedorov	 * Disable pointer authentication before jumping to next boot image.
60cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
61cd7d6b0eSAntonio Nino Diaz	 */
62ed108b56SAlexei Fedorov	bl	pauth_disable_el3
63cd7d6b0eSAntonio Nino Diaz#endif /* ENABLE_PAUTH */
64cd7d6b0eSAntonio Nino Diaz
657baff11fSYatharth Kochar	/* --------------------------------------------------
667baff11fSYatharth Kochar	 * Do the transition to next boot image.
677baff11fSYatharth Kochar	 * --------------------------------------------------
687baff11fSYatharth Kochar	 */
697baff11fSYatharth Kochar	b	el3_exit
708b779620SKévin Petitendfunc bl1_entrypoint
71