1*91f16700Schasinglulu/* 2*91f16700Schasinglulu * Copyright (c) 2017-2021, Arm Limited and Contributors. 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#if BL2_IN_XIP_MEM 17*91f16700Schasinglulu#define FIXUP_SIZE 0 18*91f16700Schasinglulu#else 19*91f16700Schasinglulu#define FIXUP_SIZE ((BL2_LIMIT) - (BL2_BASE)) 20*91f16700Schasinglulu#endif 21*91f16700Schasinglulu 22*91f16700Schasinglulufunc bl2_entrypoint 23*91f16700Schasinglulu /* Save arguments x0-x3 from previous Boot loader */ 24*91f16700Schasinglulu mov x20, x0 25*91f16700Schasinglulu mov x21, x1 26*91f16700Schasinglulu mov x22, x2 27*91f16700Schasinglulu mov x23, x3 28*91f16700Schasinglulu 29*91f16700Schasinglulu el3_entrypoint_common \ 30*91f16700Schasinglulu _init_sctlr=1 \ 31*91f16700Schasinglulu _warm_boot_mailbox=!PROGRAMMABLE_RESET_ADDRESS \ 32*91f16700Schasinglulu _secondary_cold_boot=!COLD_BOOT_SINGLE_CPU \ 33*91f16700Schasinglulu _init_memory=1 \ 34*91f16700Schasinglulu _init_c_runtime=1 \ 35*91f16700Schasinglulu _exception_vectors=bl2_el3_exceptions \ 36*91f16700Schasinglulu _pie_fixup_size=FIXUP_SIZE 37*91f16700Schasinglulu 38*91f16700Schasinglulu /* --------------------------------------------- 39*91f16700Schasinglulu * Restore parameters of boot rom 40*91f16700Schasinglulu * --------------------------------------------- 41*91f16700Schasinglulu */ 42*91f16700Schasinglulu mov x0, x20 43*91f16700Schasinglulu mov x1, x21 44*91f16700Schasinglulu mov x2, x22 45*91f16700Schasinglulu mov x3, x23 46*91f16700Schasinglulu 47*91f16700Schasinglulu /* --------------------------------------------- 48*91f16700Schasinglulu * Perform BL2 setup 49*91f16700Schasinglulu * --------------------------------------------- 50*91f16700Schasinglulu */ 51*91f16700Schasinglulu bl bl2_el3_setup 52*91f16700Schasinglulu 53*91f16700Schasinglulu#if ENABLE_PAUTH 54*91f16700Schasinglulu /* --------------------------------------------- 55*91f16700Schasinglulu * Program APIAKey_EL1 and enable pointer authentication. 56*91f16700Schasinglulu * --------------------------------------------- 57*91f16700Schasinglulu */ 58*91f16700Schasinglulu bl pauth_init_enable_el3 59*91f16700Schasinglulu#endif /* ENABLE_PAUTH */ 60*91f16700Schasinglulu 61*91f16700Schasinglulu /* --------------------------------------------- 62*91f16700Schasinglulu * Jump to main function. 63*91f16700Schasinglulu * --------------------------------------------- 64*91f16700Schasinglulu */ 65*91f16700Schasinglulu bl bl2_main 66*91f16700Schasinglulu 67*91f16700Schasinglulu /* --------------------------------------------- 68*91f16700Schasinglulu * Should never reach this point. 69*91f16700Schasinglulu * --------------------------------------------- 70*91f16700Schasinglulu */ 71*91f16700Schasinglulu no_ret plat_panic_handler 72*91f16700Schasingluluendfunc bl2_entrypoint 73