mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
target/arm: Add cpu properties for SME
Mirror the properties for SVE. The main difference is that any arbitrary set of powers of 2 may be supported, and not the stricter constraints that apply to SVE. Include a property to control FEAT_SME_FA64, as failing to restrict the runtime to the proper subset of insns could be a major point for bugs. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 20220620175235.60881-18-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
70cc9ee19e
commit
e74c097638
5 changed files with 180 additions and 7 deletions
|
@ -1123,11 +1123,13 @@ static void arm_cpu_initfn(Object *obj)
|
|||
#ifdef CONFIG_USER_ONLY
|
||||
# ifdef TARGET_AARCH64
|
||||
/*
|
||||
* The linux kernel defaults to 512-bit vectors, when sve is supported.
|
||||
* See documentation for /proc/sys/abi/sve_default_vector_length, and
|
||||
* our corresponding sve-default-vector-length cpu property.
|
||||
* The linux kernel defaults to 512-bit for SVE, and 256-bit for SME.
|
||||
* These values were chosen to fit within the default signal frame.
|
||||
* See documentation for /proc/sys/abi/{sve,sme}_default_vector_length,
|
||||
* and our corresponding cpu property.
|
||||
*/
|
||||
cpu->sve_default_vq = 4;
|
||||
cpu->sme_default_vq = 2;
|
||||
# endif
|
||||
#else
|
||||
/* Our inbound IRQ and FIQ lines */
|
||||
|
@ -1430,6 +1432,12 @@ void arm_cpu_finalize_features(ARMCPU *cpu, Error **errp)
|
|||
return;
|
||||
}
|
||||
|
||||
arm_cpu_sme_finalize(cpu, &local_err);
|
||||
if (local_err != NULL) {
|
||||
error_propagate(errp, local_err);
|
||||
return;
|
||||
}
|
||||
|
||||
arm_cpu_pauth_finalize(cpu, &local_err);
|
||||
if (local_err != NULL) {
|
||||
error_propagate(errp, local_err);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue