mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-05-09 02:51:21 +00:00
refactor(context mgmt): refactor EL2 context save and restore functions
This patch splits the el2_sysregs_context_save/restore functions into multiple functions based on features. This will allow us to selectively save and restore EL2 context registers based on features enabled for a particular configuration. For now feature build flags are used to decide which registers to save and restore. The long term plan is to dynamically check for features that are enabled and then save/restore registers accordingly. Splitting el2_sysregs_context_save/restore functions into smaller assembly functions makes that task easier. For more information please take a look at: https://trustedfirmware-a.readthedocs.io/en/latest/design_documents/context_mgmt_rework.html Signed-off-by: Zelalem Aweke <zelalem.aweke@arm.com> Change-Id: I1819a9de8b70fa35c8f45568908025f790c4808c
This commit is contained in:
parent
65a5e1c04d
commit
d20052f33a
4 changed files with 340 additions and 147 deletions
|
@ -509,9 +509,53 @@ void el1_sysregs_context_save(el1_sysregs_t *regs);
|
|||
void el1_sysregs_context_restore(el1_sysregs_t *regs);
|
||||
|
||||
#if CTX_INCLUDE_EL2_REGS
|
||||
void el2_sysregs_context_save(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore(el2_sysregs_t *regs);
|
||||
#endif
|
||||
void el2_sysregs_context_save_common(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_common(el2_sysregs_t *regs);
|
||||
#if ENABLE_SPE_FOR_LOWER_ELS
|
||||
void el2_sysregs_context_save_spe(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_spe(el2_sysregs_t *regs);
|
||||
#endif /* ENABLE_SPE_FOR_LOWER_ELS */
|
||||
#if CTX_INCLUDE_MTE_REGS
|
||||
void el2_sysregs_context_save_mte(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_mte(el2_sysregs_t *regs);
|
||||
#endif /* CTX_INCLUDE_MTE_REGS */
|
||||
#if ENABLE_MPAM_FOR_LOWER_ELS
|
||||
void el2_sysregs_context_save_mpam(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_mpam(el2_sysregs_t *regs);
|
||||
#endif /* ENABLE_MPAM_FOR_LOWER_ELS */
|
||||
#if ENABLE_FEAT_FGT
|
||||
void el2_sysregs_context_save_fgt(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_fgt(el2_sysregs_t *regs);
|
||||
#endif /* ENABLE_FEAT_FGT */
|
||||
#if ENABLE_FEAT_ECV
|
||||
void el2_sysregs_context_save_ecv(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_ecv(el2_sysregs_t *regs);
|
||||
#endif /* ENABLE_FEAT_ECV */
|
||||
#if ENABLE_FEAT_VHE
|
||||
void el2_sysregs_context_save_vhe(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_vhe(el2_sysregs_t *regs);
|
||||
#endif /* ENABLE_FEAT_VHE */
|
||||
#if RAS_EXTENSION
|
||||
void el2_sysregs_context_save_ras(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_ras(el2_sysregs_t *regs);
|
||||
#endif /* RAS_EXTENSION */
|
||||
#if CTX_INCLUDE_NEVE_REGS
|
||||
void el2_sysregs_context_save_nv2(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_nv2(el2_sysregs_t *regs);
|
||||
#endif /* CTX_INCLUDE_NEVE_REGS */
|
||||
#if ENABLE_TRF_FOR_NS
|
||||
void el2_sysregs_context_save_trf(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_trf(el2_sysregs_t *regs);
|
||||
#endif /* ENABLE_TRF_FOR_NS */
|
||||
#if ENABLE_FEAT_CSV2_2
|
||||
void el2_sysregs_context_save_csv2(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_csv2(el2_sysregs_t *regs);
|
||||
#endif /* ENABLE_FEAT_CSV2_2 */
|
||||
#if ENABLE_FEAT_HCX
|
||||
void el2_sysregs_context_save_hcx(el2_sysregs_t *regs);
|
||||
void el2_sysregs_context_restore_hcx(el2_sysregs_t *regs);
|
||||
#endif /* ENABLE_FEAT_HCX */
|
||||
#endif /* CTX_INCLUDE_EL2_REGS */
|
||||
|
||||
#if CTX_INCLUDE_FPREGS
|
||||
void fpregs_context_save(fp_regs_t *regs);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue