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 /* --------------------------------------------- 48dcbfa11bSAntonio Nino Diaz * Perform BL2 setup 49dcbfa11bSAntonio Nino Diaz * --------------------------------------------- 50dcbfa11bSAntonio Nino Diaz */ 51*04cf04c7SBoyan Karatotev#if RESET_TO_BL2 52dcbfa11bSAntonio Nino Diaz bl bl2_el3_setup 53*04cf04c7SBoyan Karatotev#else 54*04cf04c7SBoyan Karatotev bl bl2_setup 55*04cf04c7SBoyan Karatotev#endif 56dcbfa11bSAntonio Nino Diaz 57dcbfa11bSAntonio Nino Diaz#if ENABLE_PAUTH 589fc59639SAlexei Fedorov /* --------------------------------------------- 59ed108b56SAlexei Fedorov * Program APIAKey_EL1 and enable pointer authentication. 609fc59639SAlexei Fedorov * --------------------------------------------- 619fc59639SAlexei Fedorov */ 62ed108b56SAlexei Fedorov bl pauth_init_enable_el3 63dcbfa11bSAntonio Nino Diaz#endif /* ENABLE_PAUTH */ 64b1d27b48SRoberto Vargas 65b1d27b48SRoberto Vargas /* --------------------------------------------- 66b1d27b48SRoberto Vargas * Jump to main function. 67b1d27b48SRoberto Vargas * --------------------------------------------- 68b1d27b48SRoberto Vargas */ 69b1d27b48SRoberto Vargas bl bl2_main 70b1d27b48SRoberto Vargas 71b1d27b48SRoberto Vargas /* --------------------------------------------- 72b1d27b48SRoberto Vargas * Should never reach this point. 73b1d27b48SRoberto Vargas * --------------------------------------------- 74b1d27b48SRoberto Vargas */ 75b1d27b48SRoberto Vargas no_ret plat_panic_handler 76b1d27b48SRoberto Vargasendfunc bl2_entrypoint 77