1*fcd41e86SJacky Bai /* 2*fcd41e86SJacky Bai * Copyright 2023-2024 NXP 3*fcd41e86SJacky Bai * 4*fcd41e86SJacky Bai * SPDX-License-Identifier: BSD-3-Clause 5*fcd41e86SJacky Bai */ 6*fcd41e86SJacky Bai 7*fcd41e86SJacky Bai #include <imx_plat_common.h> 8*fcd41e86SJacky Bai 9*fcd41e86SJacky Bai uint32_t plat_get_spsr_for_bl33_entry(void) 10*fcd41e86SJacky Bai { 11*fcd41e86SJacky Bai unsigned long el_status; 12*fcd41e86SJacky Bai unsigned long mode; 13*fcd41e86SJacky Bai uint32_t spsr; 14*fcd41e86SJacky Bai 15*fcd41e86SJacky Bai /* figure out what mode we enter the non-secure world */ 16*fcd41e86SJacky Bai el_status = read_id_aa64pfr0_el1() >> ID_AA64PFR0_EL2_SHIFT; 17*fcd41e86SJacky Bai el_status &= ID_AA64PFR0_ELX_MASK; 18*fcd41e86SJacky Bai 19*fcd41e86SJacky Bai mode = (el_status) ? MODE_EL2 : MODE_EL1; 20*fcd41e86SJacky Bai 21*fcd41e86SJacky Bai spsr = SPSR_64(mode, MODE_SP_ELX, DISABLE_ALL_EXCEPTIONS); 22*fcd41e86SJacky Bai return spsr; 23*fcd41e86SJacky Bai } 24