[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] linux-user/elfload: Add missing arm64 hwcap values
From: |
Peter Maydell |
Subject: |
Re: [PATCH] linux-user/elfload: Add missing arm64 hwcap values |
Date: |
Mon, 30 Oct 2023 09:52:30 +0000 |
On Sun, 29 Oct 2023 at 21:01, Marielle Novastrider
<marielle@novastrider.com> wrote:
>
> Specifically DIT, LSE2, and MTE3.
>
> We already expose detection of these via the CPUID interface, but
> missed these from ELF hwcaps.
>
> Signed-off-by: Marielle Novastrider <marielle@novastrider.com>
> ---
> linux-user/elfload.c | 3 +++
> target/arm/cpu.h | 5 +++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
> index 2e3809f03c..d9683809a1 100644
> --- a/linux-user/elfload.c
> +++ b/linux-user/elfload.c
> @@ -768,12 +768,14 @@ uint32_t get_elf_hwcap(void)
> GET_FEATURE_ID(aa64_sm4, ARM_HWCAP_A64_SM4);
> GET_FEATURE_ID(aa64_fp16, ARM_HWCAP_A64_FPHP | ARM_HWCAP_A64_ASIMDHP);
> GET_FEATURE_ID(aa64_atomics, ARM_HWCAP_A64_ATOMICS);
> + GET_FEATURE_ID(aa64_lse2, ARM_HWCAP_A64_USCAT);
> GET_FEATURE_ID(aa64_rdm, ARM_HWCAP_A64_ASIMDRDM);
> GET_FEATURE_ID(aa64_dp, ARM_HWCAP_A64_ASIMDDP);
> GET_FEATURE_ID(aa64_fcma, ARM_HWCAP_A64_FCMA);
> GET_FEATURE_ID(aa64_sve, ARM_HWCAP_A64_SVE);
> GET_FEATURE_ID(aa64_pauth, ARM_HWCAP_A64_PACA | ARM_HWCAP_A64_PACG);
> GET_FEATURE_ID(aa64_fhm, ARM_HWCAP_A64_ASIMDFHM);
> + GET_FEATURE_ID(aa64_dit, ARM_HWCAP_A64_DIT);
> GET_FEATURE_ID(aa64_jscvt, ARM_HWCAP_A64_JSCVT);
> GET_FEATURE_ID(aa64_sb, ARM_HWCAP_A64_SB);
> GET_FEATURE_ID(aa64_condm_4, ARM_HWCAP_A64_FLAGM);
> @@ -807,6 +809,7 @@ uint32_t get_elf_hwcap2(void)
These two are correct...
> GET_FEATURE_ID(aa64_rndr, ARM_HWCAP2_A64_RNG);
> GET_FEATURE_ID(aa64_bti, ARM_HWCAP2_A64_BTI);
> GET_FEATURE_ID(aa64_mte, ARM_HWCAP2_A64_MTE);
> + GET_FEATURE_ID(aa64_mte3, ARM_HWCAP2_A64_MTE3);
> GET_FEATURE_ID(aa64_sme, (ARM_HWCAP2_A64_SME |
> ARM_HWCAP2_A64_SME_F32F32 |
> ARM_HWCAP2_A64_SME_B16F32 |
> diff --git a/target/arm/cpu.h b/target/arm/cpu.h
> index 76d4cef9e3..7605d6ee3a 100644
> --- a/target/arm/cpu.h
> +++ b/target/arm/cpu.h
> @@ -4073,6 +4073,11 @@ static inline bool isar_feature_aa64_mte(const
> ARMISARegisters *id)
> return FIELD_EX64(id->id_aa64pfr1, ID_AA64PFR1, MTE) >= 2;
> }
>
> +static inline bool isar_feature_aa64_mte3(const ARMISARegisters *id)
> +{
> + return FIELD_EX64(id->id_aa64pfr1, ID_AA64PFR1, MTE) >= 3;
> +}
...but we don't implement FEAT_MTE3 yet. We would add this feature test
function, and the GET_FEATURE_ID() line, when we do, but we don't
need it until then.
> static inline bool isar_feature_aa64_sme(const ARMISARegisters *id)
> {
> return FIELD_EX64(id->id_aa64pfr1, ID_AA64PFR1, SME) != 0;
> --
> 2.39.3 (Apple Git-145)
thanks
-- PMM