mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-24 05:54:08 +00:00

This adds assembly routines to save and restore SVE registers. In order to share between FPU and SVE the code to save and restore FPCR and FPSR, the patch converts code for those registers into macro. Since we will be using simd_ctx_t to save and restore FPU also, we use offsets in simd_ctx_t for FPSR and FPCR. Since simd_ctx_t has the same structure at the beginning as fp_regs_t, those offsets should be the same as CTX_FP_* offsets, when SVE is not enabled. Note that the code also saves and restores FPEXC32 reg along with FPSR and FPCR. Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com> Signed-off-by: Okash Khawaja <okash@google.com> Change-Id: I120c02359794aa6bb6376a464a9afe98bd84ae60
34 lines
798 B
C
34 lines
798 B
C
/*
|
|
* Copyright (c) 2017-2024, Arm Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef SVE_H
|
|
#define SVE_H
|
|
|
|
#include <context.h>
|
|
|
|
#if (ENABLE_SME_FOR_NS || ENABLE_SVE_FOR_NS)
|
|
|
|
void sve_init_el2_unused(void);
|
|
void sve_enable_per_world(per_world_context_t *per_world_ctx);
|
|
void sve_disable_per_world(per_world_context_t *per_world_ctx);
|
|
#else
|
|
static inline void sve_init_el2_unused(void)
|
|
{
|
|
}
|
|
static inline void sve_enable_per_world(per_world_context_t *per_world_ctx)
|
|
{
|
|
}
|
|
static inline void sve_disable_per_world(per_world_context_t *per_world_ctx)
|
|
{
|
|
}
|
|
#endif /* ( ENABLE_SME_FOR_NS | ENABLE_SVE_FOR_NS ) */
|
|
|
|
#if CTX_INCLUDE_SVE_REGS
|
|
void sve_context_save(simd_regs_t *regs);
|
|
void sve_context_restore(simd_regs_t *regs);
|
|
#endif
|
|
|
|
#endif /* SVE_H */
|