| /* |
| * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| #include <arch.h> |
| #include <el3_common_macros.S> |
| |
| .globl bl1_entrypoint |
| |
| |
| /* ----------------------------------------------------- |
| * bl1_entrypoint() is the entry point into the trusted |
| * firmware code when a cpu is released from warm or |
| * cold reset. |
| * ----------------------------------------------------- |
| */ |
| |
| func bl1_entrypoint |
| /* --------------------------------------------------------------------- |
| * If the reset address is programmable then bl1_entrypoint() is |
| * executed only on the cold boot path. Therefore, we can skip the warm |
| * boot mailbox mechanism. |
| * --------------------------------------------------------------------- |
| */ |
| el3_entrypoint_common \ |
| _set_endian=1 \ |
| _warm_boot_mailbox=!PROGRAMMABLE_RESET_ADDRESS \ |
| _secondary_cold_boot=!COLD_BOOT_SINGLE_CPU \ |
| _init_memory=1 \ |
| _init_c_runtime=1 \ |
| _exception_vectors=bl1_exceptions |
| |
| /* --------------------------------------------- |
| * Architectural init. can be generic e.g. |
| * enabling stack alignment and platform spec- |
| * ific e.g. MMU & page table setup as per the |
| * platform memory map. Perform the latter here |
| * and the former in bl1_main. |
| * --------------------------------------------- |
| */ |
| bl bl1_early_platform_setup |
| bl bl1_plat_arch_setup |
| |
| /* -------------------------------------------------- |
| * Initialize platform and jump to our c-entry point |
| * for this type of reset. |
| * -------------------------------------------------- |
| */ |
| bl bl1_main |
| |
| /* -------------------------------------------------- |
| * Do the transition to next boot image. |
| * -------------------------------------------------- |
| */ |
| b el3_exit |
| endfunc bl1_entrypoint |