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