mirror of
https://github.com/qemu/qemu.git
synced 2024-12-18 01:34:15 +08:00
target/arm: Add syn_smetrap
This will be used for raising various traps for SME. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220620175235.60881-4-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
6b2ca83e4c
commit
58b2908ee1
@ -48,6 +48,7 @@ enum arm_exception_class {
|
||||
EC_AA64_SMC = 0x17,
|
||||
EC_SYSTEMREGISTERTRAP = 0x18,
|
||||
EC_SVEACCESSTRAP = 0x19,
|
||||
EC_SMETRAP = 0x1d,
|
||||
EC_INSNABORT = 0x20,
|
||||
EC_INSNABORT_SAME_EL = 0x21,
|
||||
EC_PCALIGNMENT = 0x22,
|
||||
@ -68,6 +69,13 @@ enum arm_exception_class {
|
||||
EC_AA64_BKPT = 0x3c,
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
SME_ET_AccessTrap,
|
||||
SME_ET_Streaming,
|
||||
SME_ET_NotStreaming,
|
||||
SME_ET_InactiveZA,
|
||||
} SMEExceptionType;
|
||||
|
||||
#define ARM_EL_EC_SHIFT 26
|
||||
#define ARM_EL_IL_SHIFT 25
|
||||
#define ARM_EL_ISV_SHIFT 24
|
||||
@ -207,6 +215,12 @@ static inline uint32_t syn_sve_access_trap(void)
|
||||
return EC_SVEACCESSTRAP << ARM_EL_EC_SHIFT;
|
||||
}
|
||||
|
||||
static inline uint32_t syn_smetrap(SMEExceptionType etype, bool is_16bit)
|
||||
{
|
||||
return (EC_SMETRAP << ARM_EL_EC_SHIFT)
|
||||
| (is_16bit ? 0 : ARM_EL_IL) | etype;
|
||||
}
|
||||
|
||||
static inline uint32_t syn_pactrap(void)
|
||||
{
|
||||
return EC_PACTRAP << ARM_EL_EC_SHIFT;
|
||||
|
Loading…
Reference in New Issue
Block a user