xref: /rk3399_ARM-atf/bl1/aarch64/bl1_entrypoint.S (revision cd7d6b0eb161c4b24f4ff19822cbb26c3f59a3f5)
14f6ad66aSAchin Gupta/*
2*cd7d6b0eSAntonio 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
35*cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
36*cd7d6b0eSAntonio Nino Diaz	 * Perform BL1 setup
37*cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
384f6ad66aSAchin Gupta	 */
39*cd7d6b0eSAntonio Nino Diaz	bl	bl1_setup
40dbad1bacSVikram Kanigiri
41*cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
42*cd7d6b0eSAntonio Nino Diaz	 * Enable pointer authentication
43*cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
44*cd7d6b0eSAntonio Nino Diaz	 */
45*cd7d6b0eSAntonio Nino Diaz#if ENABLE_PAUTH
46*cd7d6b0eSAntonio Nino Diaz	mrs	x0, sctlr_el3
47*cd7d6b0eSAntonio Nino Diaz	orr	x0, x0, #SCTLR_EnIA_BIT
48*cd7d6b0eSAntonio Nino Diaz	msr	sctlr_el3, x0
49*cd7d6b0eSAntonio Nino Diaz	isb
50*cd7d6b0eSAntonio Nino Diaz#endif /* ENABLE_PAUTH */
51*cd7d6b0eSAntonio Nino Diaz
52*cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
53dbad1bacSVikram Kanigiri	 * Initialize platform and jump to our c-entry point
547baff11fSYatharth Kochar	 * for this type of reset.
55*cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
56dbad1bacSVikram Kanigiri	 */
57dbad1bacSVikram Kanigiri	bl	bl1_main
587baff11fSYatharth Kochar
59*cd7d6b0eSAntonio Nino Diaz	/* --------------------------------------------------------------------
60*cd7d6b0eSAntonio Nino Diaz	 * Disable pointer authentication before jumping to BL31 or that will
61*cd7d6b0eSAntonio Nino Diaz	 * cause an authentication failure during the early platform init.
62*cd7d6b0eSAntonio Nino Diaz	 * --------------------------------------------------------------------
63*cd7d6b0eSAntonio Nino Diaz	 */
64*cd7d6b0eSAntonio Nino Diaz#if ENABLE_PAUTH
65*cd7d6b0eSAntonio Nino Diaz	mrs	x0, sctlr_el3
66*cd7d6b0eSAntonio Nino Diaz	bic	x0, x0, #SCTLR_EnIA_BIT
67*cd7d6b0eSAntonio Nino Diaz	msr	sctlr_el3, x0
68*cd7d6b0eSAntonio Nino Diaz	isb
69*cd7d6b0eSAntonio Nino Diaz#endif /* ENABLE_PAUTH */
70*cd7d6b0eSAntonio Nino Diaz
717baff11fSYatharth Kochar	/* --------------------------------------------------
727baff11fSYatharth Kochar	 * Do the transition to next boot image.
737baff11fSYatharth Kochar	 * --------------------------------------------------
747baff11fSYatharth Kochar	 */
757baff11fSYatharth Kochar	b	el3_exit
768b779620SKévin Petitendfunc bl1_entrypoint
77