arm64: Fix booting issue with FVP V8R >= 11.16.16
In the Armv8R AArch64 profile[1], the Armv8R AArch64 is always in secure mode. But the FVP_BaseR_AEMv8R before version 11.16.16 doesn't strictly follow this rule. It still has some non-secure registers (e.g. CNTHP_CTL_EL2). Since version 11.16.16, the FVP_BaseR_AEMv8R has fixed this issue. The CNTHP_XXX_EL2 registers have been changed to CNTHPS_XXX_EL2. So the FVP_BaseR_AEMv8R (version >= 11.16.16) cannot boot Zephyr. This patch will fix it. [1] https://developer.arm.com/documentation/ddi0600/latest/ Signed-off-by: Jaxson Han <jaxson.han@arm.com> Change-Id: If986f34dc080ae7a8b226bba589b6fe616a4260b
This commit is contained in:
parent
735c10882f
commit
fd231e32e9
2 changed files with 5 additions and 0 deletions
|
@ -129,7 +129,11 @@ void z_arm64_el2_init(void)
|
|||
|
||||
zero_cntvoff_el2(); /* Set 64-bit virtual timer offset to 0 */
|
||||
zero_cnthctl_el2();
|
||||
#ifdef CONFIG_CPU_AARCH64_CORTEX_R
|
||||
zero_cnthps_ctl_el2();
|
||||
#else
|
||||
zero_cnthp_ctl_el2();
|
||||
#endif
|
||||
/*
|
||||
* Enable this if/when we use the hypervisor timer.
|
||||
* write_cnthp_cval_el2(~(uint64_t)0);
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
MAKE_REG_HELPER(cntfrq_el0);
|
||||
MAKE_REG_HELPER(cnthctl_el2);
|
||||
MAKE_REG_HELPER(cnthp_ctl_el2);
|
||||
MAKE_REG_HELPER(cnthps_ctl_el2);
|
||||
MAKE_REG_HELPER(cntv_ctl_el0)
|
||||
MAKE_REG_HELPER(cntv_cval_el0)
|
||||
MAKE_REG_HELPER(cntvct_el0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue