Phriction Trusted Firmware Trusted Firmware-A (TF-A) Patchdescription Bl1aarch64bl1 Entrypointsvsplatarmboardfvp Rfvp R Bl1 Entrypoints
Bl1aarch64bl1 Entrypointsvsplatarmboardfvp Rfvp R Bl1 Entrypoints
Bl1aarch64bl1 Entrypointsvsplatarmboardfvp Rfvp R Bl1 Entrypoints
/* /* * Copyright (c) 2013-2021, ARM Limited and Contributors. | * Copyright (c) 2021, ARM Limited and Contributors. All r * * * SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause */ */ #include <arch.h> #include <arch.h> > #include <asm_macros.S> > #include <common/bl_common.h> #include <el_max_common_macros.S> #include <el_max_common_macros.S> > #include <lib/xlat_mpu/xlat_mpu.h> .globl bl1_entrypoint .globl bl1_entrypoint > .globl bl1_run_next_image /* ----------------------------------------------- /* ----------------------------------------------- * bl1_entrypoint() is the entry point into the tr * bl1_entrypoint() is the entry point into the tr * firmware code when a cpu is released from warm * firmware code when a cpu is released from warm * cold reset. * cold reset. * ----------------------------------------------- * ----------------------------------------------- */ */ func bl1_entrypoint func bl1_entrypoint /* ----------------------------------------------- /* ----------------------------------------------- * If the reset address is programmable then bl1_e * If the reset address is programmable then bl1_e * executed only on the cold boot path. Therefore, * executed only on the cold boot path. Therefore, * boot mailbox mechanism. * boot mailbox mechanism. * ----------------------------------------------- * ----------------------------------------------- */ */ el_max_entrypoint_common el_max_entrypoint_common _init_sctlr=1 _init_sctlr=1 _warm_boot_mailbox=!PROGRAMMABLE_RESET_ADD _warm_boot_mailbox=!PROGRAMMABLE_RESET_ADD _secondary_cold_boot=!COLD_BOOT_SINGLE_CPU _secondary_cold_boot=!COLD_BOOT_SINGLE_CPU _init_memory=1 _init_memory=1 _init_c_runtime=1 _init_c_runtime=1 _exception_vectors=bl1_exceptions _exception_vectors=bl1_exceptions _pie_fixup_size=0 _pie_fixup_size=0 _el_max=3 | _el_max=2 /* ----------------------------------------------- /* ----------------------------------------------- * Perform BL1 setup * Perform BL1 setup * ----------------------------------------------- * ----------------------------------------------- */ */ bl bl1_setup bl bl1_setup #if ENABLE_PAUTH #if ENABLE_PAUTH /* ----------------------------------------------- /* ----------------------------------------------- * Program APIAKey_EL1 and enable pointer authenti * Program APIAKey_EL1 and enable pointer authenti * ----------------------------------------------- * ----------------------------------------------- */ */ bl pauth_init_enable_el3 | bl pauth_init_enable_el2 #endif /* ENABLE_PAUTH */ #endif /* ENABLE_PAUTH */ /* ----------------------------------------------- /* ----------------------------------------------- * Initialize platform and jump to our c-entry poi * Initialize platform and jump to our c-entry poi * for this type of reset. * for this type of reset. * ----------------------------------------------- * ----------------------------------------------- */ */ bl bl1_main bl bl1_main > /* --------------------------------------------- > * Should never reach this point. > * --------------------------------------------- > */ > no_ret plat_panic_handler > endfunc bl1_entrypoint > > func bl1_run_next_image > mov x20,x0 > > /* --------------------------------------------- > * MPU needs to be disabled because both BL1 and B > * in EL2, and therefore share the same address sp > * BL33 will initialize the address space accordin > * own requirement. > * --------------------------------------------- > */ > bl disable_mpu_icache_el2 > > /* --------------------------------------------- > * Wipe clean and disable all MPU regions. This f > * that the MPU has already been turned off, and c > * addressed, but it also explicitly turns off the > * --------------------------------------------- > */ > bl clear_all_mpu_regions > #if ENABLE_PAUTH #if ENABLE_PAUTH /* ----------------------------------------------- | /* --------------------------------------------- * Disable pointer authentication before jumping t | * Disable pointer authentication before jumping * ----------------------------------------------- | * to next boot image. > * --------------------------------------------- */ */ bl pauth_disable_el3 | bl pauth_disable_el2 #endif /* ENABLE_PAUTH */ #endif /* ENABLE_PAUTH */ /* ----------------------------------------------- | ldp x0, x1, [x20, #ENTRY_POINT_INFO_PC_OFFSET] * Do the transition to next boot image. | msr elr_el2, x0 * ----------------------------------------------- | msr spsr_el2, x1 */ | b el3_exit | ldp x6, x7, [x20, #(ENTRY_POINT_INFO_ARGS_OFFS endfunc bl1_entrypoint | ldp x4, x5, [x20, #(ENTRY_POINT_INFO_ARGS_OFFS > ldp x2, x3, [x20, #(ENTRY_POINT_INFO_ARGS_OFFS > ldp x0, x1, [x20, #(ENTRY_POINT_INFO_ARGS_OFFS > exception_return > endfunc bl1_run_next_image
Tags
None
Subscribers
None
- Last Author
- garymorrison-arm
- Last Edited
- Jul 2 2021, 11:08 PM