diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2022-06-20 10:51:47 -0700 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2022-06-27 11:18:17 +0100 |
commit | 58b2908ee1011c33cc01d7d9341673f8af6d14b7 (patch) | |
tree | 87b89bef4c35c0c7c41abf88151911f758021f5f /target | |
parent | 6b2ca83e4c7953e6652e897bb4d4fb5280555dbf (diff) | |
download | qemu-58b2908ee1011c33cc01d7d9341673f8af6d14b7.zip qemu-58b2908ee1011c33cc01d7d9341673f8af6d14b7.tar.gz qemu-58b2908ee1011c33cc01d7d9341673f8af6d14b7.tar.bz2 |
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>
Diffstat (limited to 'target')
-rw-r--r-- | target/arm/syndrome.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/target/arm/syndrome.h b/target/arm/syndrome.h index c105f9e..73df5e3 100644 --- a/target/arm/syndrome.h +++ b/target/arm/syndrome.h @@ -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; |