mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 10:04:26 +00:00

This patch updates the el3_arch_init_common macro so that it fully initialises essential control registers rather then relying on hardware to set the reset values. The context management functions are also updated to fully initialise the appropriate control registers when initialising the non-secure and secure context structures and when preparing to leave EL3 for a lower EL. This gives better alignement with the ARM ARM which states that software must initialise RES0 and RES1 fields with 0 / 1. This patch also corrects the following typos: "NASCR definitions" -> "NSACR definitions" Change-Id: Ia8940b8351dc27bc09e2138b011e249655041cfc Signed-off-by: David Cunado <david.cunado@arm.com>
58 lines
1.8 KiB
ArmAsm
58 lines
1.8 KiB
ArmAsm
/*
|
|
* Copyright (c) 2013-2017, 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 \
|
|
_init_sctlr=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
|