diff options
Diffstat (limited to 'lib/el3_runtime/aarch64/context.S')
-rw-r--r-- | lib/el3_runtime/aarch64/context.S | 186 |
1 files changed, 0 insertions, 186 deletions
diff --git a/lib/el3_runtime/aarch64/context.S b/lib/el3_runtime/aarch64/context.S index 771fcdcb9..f47e7795f 100644 --- a/lib/el3_runtime/aarch64/context.S +++ b/lib/el3_runtime/aarch64/context.S @@ -10,15 +10,6 @@ #include <context.h> #include <el3_common_macros.S> -#if CTX_INCLUDE_EL2_REGS - .global el2_sysregs_context_save_common - .global el2_sysregs_context_restore_common -#if CTX_INCLUDE_MTE_REGS - .global el2_sysregs_context_save_mte - .global el2_sysregs_context_restore_mte -#endif /* CTX_INCLUDE_MTE_REGS */ -#endif /* CTX_INCLUDE_EL2_REGS */ - .global el1_sysregs_context_save .global el1_sysregs_context_restore #if CTX_INCLUDE_FPREGS @@ -30,183 +21,6 @@ .global save_and_update_ptw_el1_sys_regs .global el3_exit -#if CTX_INCLUDE_EL2_REGS - -/* ----------------------------------------------------- - * The following functions strictly follow the AArch64 - * PCS to use x9-x16 (temporary caller-saved registers) - * to save/restore EL2 system register context. - * el2_sysregs_context_save/restore_common functions - * save and restore registers that are common to all - * configurations. The rest of the functions save and - * restore EL2 system registers that are present when a - * particular feature is enabled. All functions assume - * that 'x0' is pointing to a 'el2_sys_regs' structure - * where the register context will be saved/restored. - * - * The following registers are not added. - * AMEVCNTVOFF0<n>_EL2 - * AMEVCNTVOFF1<n>_EL2 - * ICH_AP0R<n>_EL2 - * ICH_AP1R<n>_EL2 - * ICH_LR<n>_EL2 - * ----------------------------------------------------- - */ -func el2_sysregs_context_save_common - mrs x9, actlr_el2 - mrs x10, afsr0_el2 - stp x9, x10, [x0, #CTX_ACTLR_EL2] - - mrs x11, afsr1_el2 - mrs x12, amair_el2 - stp x11, x12, [x0, #CTX_AFSR1_EL2] - - mrs x13, cnthctl_el2 - mrs x14, cntvoff_el2 - stp x13, x14, [x0, #CTX_CNTHCTL_EL2] - - mrs x15, cptr_el2 - str x15, [x0, #CTX_CPTR_EL2] - -#if CTX_INCLUDE_AARCH32_REGS - mrs x16, dbgvcr32_el2 - str x16, [x0, #CTX_DBGVCR32_EL2] -#endif /* CTX_INCLUDE_AARCH32_REGS */ - - mrs x9, elr_el2 - mrs x10, esr_el2 - stp x9, x10, [x0, #CTX_ELR_EL2] - - mrs x11, far_el2 - mrs x12, hacr_el2 - stp x11, x12, [x0, #CTX_FAR_EL2] - - mrs x13, hcr_el2 - mrs x14, hpfar_el2 - stp x13, x14, [x0, #CTX_HCR_EL2] - - mrs x15, hstr_el2 - mrs x16, ICC_SRE_EL2 - stp x15, x16, [x0, #CTX_HSTR_EL2] - - mrs x9, ICH_HCR_EL2 - mrs x10, ICH_VMCR_EL2 - stp x9, x10, [x0, #CTX_ICH_HCR_EL2] - - mrs x11, mair_el2 - mrs x12, mdcr_el2 - stp x11, x12, [x0, #CTX_MAIR_EL2] - - mrs x14, sctlr_el2 - str x14, [x0, #CTX_SCTLR_EL2] - - mrs x15, spsr_el2 - mrs x16, sp_el2 - stp x15, x16, [x0, #CTX_SPSR_EL2] - - mrs x9, tcr_el2 - mrs x10, tpidr_el2 - stp x9, x10, [x0, #CTX_TCR_EL2] - - mrs x11, ttbr0_el2 - mrs x12, vbar_el2 - stp x11, x12, [x0, #CTX_TTBR0_EL2] - - mrs x13, vmpidr_el2 - mrs x14, vpidr_el2 - stp x13, x14, [x0, #CTX_VMPIDR_EL2] - - mrs x15, vtcr_el2 - mrs x16, vttbr_el2 - stp x15, x16, [x0, #CTX_VTCR_EL2] - ret -endfunc el2_sysregs_context_save_common - -func el2_sysregs_context_restore_common - ldp x9, x10, [x0, #CTX_ACTLR_EL2] - msr actlr_el2, x9 - msr afsr0_el2, x10 - - ldp x11, x12, [x0, #CTX_AFSR1_EL2] - msr afsr1_el2, x11 - msr amair_el2, x12 - - ldp x13, x14, [x0, #CTX_CNTHCTL_EL2] - msr cnthctl_el2, x13 - msr cntvoff_el2, x14 - - ldr x15, [x0, #CTX_CPTR_EL2] - msr cptr_el2, x15 - -#if CTX_INCLUDE_AARCH32_REGS - ldr x16, [x0, #CTX_DBGVCR32_EL2] - msr dbgvcr32_el2, x16 -#endif /* CTX_INCLUDE_AARCH32_REGS */ - - ldp x9, x10, [x0, #CTX_ELR_EL2] - msr elr_el2, x9 - msr esr_el2, x10 - - ldp x11, x12, [x0, #CTX_FAR_EL2] - msr far_el2, x11 - msr hacr_el2, x12 - - ldp x13, x14, [x0, #CTX_HCR_EL2] - msr hcr_el2, x13 - msr hpfar_el2, x14 - - ldp x15, x16, [x0, #CTX_HSTR_EL2] - msr hstr_el2, x15 - msr ICC_SRE_EL2, x16 - - ldp x9, x10, [x0, #CTX_ICH_HCR_EL2] - msr ICH_HCR_EL2, x9 - msr ICH_VMCR_EL2, x10 - - ldp x11, x12, [x0, #CTX_MAIR_EL2] - msr mair_el2, x11 - msr mdcr_el2, x12 - - ldr x14, [x0, #CTX_SCTLR_EL2] - msr sctlr_el2, x14 - - ldp x15, x16, [x0, #CTX_SPSR_EL2] - msr spsr_el2, x15 - msr sp_el2, x16 - - ldp x9, x10, [x0, #CTX_TCR_EL2] - msr tcr_el2, x9 - msr tpidr_el2, x10 - - ldp x11, x12, [x0, #CTX_TTBR0_EL2] - msr ttbr0_el2, x11 - msr vbar_el2, x12 - - ldp x13, x14, [x0, #CTX_VMPIDR_EL2] - msr vmpidr_el2, x13 - msr vpidr_el2, x14 - - ldp x15, x16, [x0, #CTX_VTCR_EL2] - msr vtcr_el2, x15 - msr vttbr_el2, x16 - ret -endfunc el2_sysregs_context_restore_common - -#if CTX_INCLUDE_MTE_REGS -func el2_sysregs_context_save_mte - mrs x9, TFSR_EL2 - str x9, [x0, #CTX_TFSR_EL2] - ret -endfunc el2_sysregs_context_save_mte - -func el2_sysregs_context_restore_mte - ldr x9, [x0, #CTX_TFSR_EL2] - msr TFSR_EL2, x9 - ret -endfunc el2_sysregs_context_restore_mte -#endif /* CTX_INCLUDE_MTE_REGS */ - -#endif /* CTX_INCLUDE_EL2_REGS */ /* ------------------------------------------------------------------ * The following function strictly follows the AArch64 PCS to use |