xref: /arm-trusted-firmware/bl2/aarch64/bl2_rme_entrypoint.S (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu/*
2*91f16700Schasinglulu * Copyright (c) 2021, Arm Limited. All rights reserved.
3*91f16700Schasinglulu *
4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu */
6*91f16700Schasinglulu
7*91f16700Schasinglulu#include <platform_def.h>
8*91f16700Schasinglulu
9*91f16700Schasinglulu#include <arch.h>
10*91f16700Schasinglulu#include <asm_macros.S>
11*91f16700Schasinglulu#include <common/bl_common.h>
12*91f16700Schasinglulu#include <el3_common_macros.S>
13*91f16700Schasinglulu
14*91f16700Schasinglulu	.globl	bl2_entrypoint
15*91f16700Schasinglulu
16*91f16700Schasinglulu
17*91f16700Schasinglulufunc bl2_entrypoint
18*91f16700Schasinglulu	/* Save arguments x0-x3 from previous Boot loader */
19*91f16700Schasinglulu	mov	x20, x0
20*91f16700Schasinglulu	mov	x21, x1
21*91f16700Schasinglulu	mov	x22, x2
22*91f16700Schasinglulu	mov	x23, x3
23*91f16700Schasinglulu
24*91f16700Schasinglulu	el3_entrypoint_common                                   \
25*91f16700Schasinglulu		_init_sctlr=0                                   \
26*91f16700Schasinglulu		_warm_boot_mailbox=0                            \
27*91f16700Schasinglulu		_secondary_cold_boot=0                          \
28*91f16700Schasinglulu		_init_memory=0                                  \
29*91f16700Schasinglulu		_init_c_runtime=1                               \
30*91f16700Schasinglulu		_exception_vectors=bl2_el3_exceptions           \
31*91f16700Schasinglulu		_pie_fixup_size=0
32*91f16700Schasinglulu
33*91f16700Schasinglulu	/* ---------------------------------------------
34*91f16700Schasinglulu	 * Restore parameters of boot rom
35*91f16700Schasinglulu	 * ---------------------------------------------
36*91f16700Schasinglulu	 */
37*91f16700Schasinglulu	mov	x0, x20
38*91f16700Schasinglulu	mov	x1, x21
39*91f16700Schasinglulu	mov	x2, x22
40*91f16700Schasinglulu	mov	x3, x23
41*91f16700Schasinglulu
42*91f16700Schasinglulu	/* ---------------------------------------------
43*91f16700Schasinglulu	 * Perform BL2 setup
44*91f16700Schasinglulu	 * ---------------------------------------------
45*91f16700Schasinglulu	 */
46*91f16700Schasinglulu	bl	bl2_setup
47*91f16700Schasinglulu
48*91f16700Schasinglulu#if ENABLE_PAUTH
49*91f16700Schasinglulu	/* ---------------------------------------------
50*91f16700Schasinglulu	 * Program APIAKey_EL1 and enable pointer authentication.
51*91f16700Schasinglulu	 * ---------------------------------------------
52*91f16700Schasinglulu	 */
53*91f16700Schasinglulu	bl	pauth_init_enable_el3
54*91f16700Schasinglulu#endif /* ENABLE_PAUTH */
55*91f16700Schasinglulu
56*91f16700Schasinglulu	/* ---------------------------------------------
57*91f16700Schasinglulu	 * Jump to main function.
58*91f16700Schasinglulu	 * ---------------------------------------------
59*91f16700Schasinglulu	 */
60*91f16700Schasinglulu	bl	bl2_main
61*91f16700Schasinglulu
62*91f16700Schasinglulu	/* ---------------------------------------------
63*91f16700Schasinglulu	 * Should never reach this point.
64*91f16700Schasinglulu	 * ---------------------------------------------
65*91f16700Schasinglulu	 */
66*91f16700Schasinglulu	no_ret	plat_panic_handler
67*91f16700Schasingluluendfunc bl2_entrypoint
68