S-EL2 Support: Check for AArch64

Check that entry point information requesting S-EL2
has AArch64 as an execution state during context setup.

Signed-off-by: Artsem Artsemenka <artsem.artsemenka@arm.com>
Change-Id: I447263692fed6e55c1b076913e6eb73b1ea735b7
This commit is contained in:
Artsem Artsemenka 2019-11-26 16:40:31 +00:00
parent 0376e7c4aa
commit db3ae8538b
2 changed files with 8 additions and 2 deletions

View File

@ -141,7 +141,7 @@
#define ID_AA64PFR0_SVE_SHIFT U(32)
#define ID_AA64PFR0_SVE_MASK ULL(0xf)
#define ID_AA64PFR0_SEL2_SHIFT U(36)
#define ID_AA64PFR0_SEL2_MASK U(0xf)
#define ID_AA64PFR0_SEL2_MASK ULL(0xf)
#define ID_AA64PFR0_MPAM_SHIFT U(40)
#define ID_AA64PFR0_MPAM_MASK ULL(0xf)
#define ID_AA64PFR0_DIT_SHIFT U(48)

View File

@ -182,8 +182,14 @@ void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep)
}
/* Enable S-EL2 if the next EL is EL2 and security state is secure */
if ((security_state == SECURE) && (GET_EL(ep->spsr) == MODE_EL2))
if ((security_state == SECURE) && (GET_EL(ep->spsr) == MODE_EL2)) {
if (GET_RW(ep->spsr) != MODE_RW_64) {
ERROR("S-EL2 can not be used in AArch32.");
panic();
}
scr_el3 |= SCR_EEL2_BIT;
}
/*
* Initialise SCTLR_EL1 to the reset value corresponding to the target