1 /* 2 * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <arch.h> 8 #include <arch_helpers.h> 9 10 /******************************************************************************* 11 * Function that does the first bit of architectural setup that affects 12 * execution in the non-secure address space. 13 ******************************************************************************/ 14 void bl1_arch_setup(void) 15 { 16 /* Set the next EL to be AArch64 */ 17 write_scr_el3(read_scr_el3() | SCR_RW_BIT); 18 } 19 20 /******************************************************************************* 21 * Set the Secure EL1 required architectural state 22 ******************************************************************************/ 23 void bl1_arch_next_el_setup(void) 24 { 25 unsigned long next_sctlr; 26 27 /* Use the same endianness than the current BL */ 28 next_sctlr = (read_sctlr_el3() & SCTLR_EE_BIT); 29 30 /* Set SCTLR Secure EL1 */ 31 next_sctlr |= SCTLR_EL1_RES1; 32 33 write_sctlr_el1(next_sctlr); 34 } 35