xref: /rk3399_ARM-atf/bl2/aarch64/bl2_el3_entrypoint.S (revision dfdb73f77317b1349e383c5836454db67f8643d3)
1b1d27b48SRoberto Vargas/*
2*04cf04c7SBoyan Karatotev * Copyright (c) 2017-2025, Arm Limited and Contributors. All rights reserved.
3b1d27b48SRoberto Vargas *
4b1d27b48SRoberto Vargas * SPDX-License-Identifier: BSD-3-Clause
5b1d27b48SRoberto Vargas */
6b1d27b48SRoberto Vargas
769af7fcfSMasahiro Yamada#include <platform_def.h>
869af7fcfSMasahiro Yamada
9b1d27b48SRoberto Vargas#include <arch.h>
10b1d27b48SRoberto Vargas#include <asm_macros.S>
1109d40e0eSAntonio Nino Diaz#include <common/bl_common.h>
12b1d27b48SRoberto Vargas#include <el3_common_macros.S>
13b1d27b48SRoberto Vargas
14b1d27b48SRoberto Vargas	.globl	bl2_entrypoint
15b1d27b48SRoberto Vargas
16*04cf04c7SBoyan Karatotev#if BL2_IN_XIP_MEM || ENABLE_RME
1769af7fcfSMasahiro Yamada#define FIXUP_SIZE	0
1869af7fcfSMasahiro Yamada#else
1969af7fcfSMasahiro Yamada#define FIXUP_SIZE	((BL2_LIMIT) - (BL2_BASE))
2069af7fcfSMasahiro Yamada#endif
2169af7fcfSMasahiro Yamada
22b1d27b48SRoberto Vargasfunc bl2_entrypoint
23b1d27b48SRoberto Vargas	/* Save arguments x0-x3 from previous Boot loader */
24b1d27b48SRoberto Vargas	mov	x20, x0
25b1d27b48SRoberto Vargas	mov	x21, x1
26b1d27b48SRoberto Vargas	mov	x22, x2
27b1d27b48SRoberto Vargas	mov	x23, x3
28b1d27b48SRoberto Vargas
29b1d27b48SRoberto Vargas	el3_entrypoint_common							\
30*04cf04c7SBoyan Karatotev		_init_sctlr=RESET_TO_BL2					\
31*04cf04c7SBoyan Karatotev		_warm_boot_mailbox=!PROGRAMMABLE_RESET_ADDRESS && RESET_TO_BL2	\
32*04cf04c7SBoyan Karatotev		_secondary_cold_boot=!COLD_BOOT_SINGLE_CPU && RESET_TO_BL2	\
33*04cf04c7SBoyan Karatotev		_init_memory=RESET_TO_BL2					\
34b1d27b48SRoberto Vargas		_init_c_runtime=1						\
35da90359bSManish Pandey		_exception_vectors=bl2_el3_exceptions				\
3669af7fcfSMasahiro Yamada		_pie_fixup_size=FIXUP_SIZE
37b1d27b48SRoberto Vargas
38dcbfa11bSAntonio Nino Diaz	/* ---------------------------------------------
39b1d27b48SRoberto Vargas	 * Restore parameters of boot rom
40dcbfa11bSAntonio Nino Diaz	 * ---------------------------------------------
41b1d27b48SRoberto Vargas	 */
42b1d27b48SRoberto Vargas	mov	x0, x20
43b1d27b48SRoberto Vargas	mov	x1, x21
44b1d27b48SRoberto Vargas	mov	x2, x22
45b1d27b48SRoberto Vargas	mov	x3, x23
46b1d27b48SRoberto Vargas
47dcbfa11bSAntonio Nino Diaz	/* ---------------------------------------------
48b1d27b48SRoberto Vargas	 * Jump to main function.
49b1d27b48SRoberto Vargas	 * ---------------------------------------------
50b1d27b48SRoberto Vargas	 */
51b1d27b48SRoberto Vargas	bl	bl2_main
52b1d27b48SRoberto Vargas
53b1d27b48SRoberto Vargas	/* ---------------------------------------------
54b1d27b48SRoberto Vargas	 * Should never reach this point.
55b1d27b48SRoberto Vargas	 * ---------------------------------------------
56b1d27b48SRoberto Vargas	 */
57b1d27b48SRoberto Vargas	no_ret	plat_panic_handler
58b1d27b48SRoberto Vargasendfunc bl2_entrypoint
59