On Tue, Oct 19, 2021 at 11:45 AM Warner Losh <i...@bsdimp.com> wrote: > > Implement the extended HW capabilities for HWCAP2. > > Signed-off-by: Klye Evans <kev...@freebsd.org> > Signed-off-by: Warner Losh <i...@bsdimp.com> > --- > bsd-user/arm/target_arch_elf.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/bsd-user/arm/target_arch_elf.h b/bsd-user/arm/target_arch_elf.h > index 02d25b8926..4a0215d02e 100644 > --- a/bsd-user/arm/target_arch_elf.h > +++ b/bsd-user/arm/target_arch_elf.h > @@ -32,6 +32,7 @@ > #define ELF_EXEC_PAGESIZE 4096 > > #define ELF_HWCAP get_elf_hwcap() > +#define ELF_HWCAP2 get_elf_hwcap2() > > #define GET_FEATURE(feat, hwcap) \ > do { if (arm_feature(&cpu->env, feat)) { hwcaps |= hwcap; } } while (0) > @@ -64,6 +65,14 @@ enum { > ARM_HWCAP_ARM_EVTSTRM = 1 << 21, > }; > > +enum { > + ARM_HWCAP2_ARM_AES = 1 << 0, > + ARM_HWCAP2_ARM_PMULL = 1 << 1, > + ARM_HWCAP2_ARM_SHA1 = 1 << 2, > + ARM_HWCAP2_ARM_SHA2 = 1 << 3, > + ARM_HWCAP2_ARM_CRC32 = 1 << 4, > +}; > + > static uint32_t get_elf_hwcap(void) > { > ARMCPU *cpu = ARM_CPU(thread_cpu); > @@ -100,6 +109,19 @@ static uint32_t get_elf_hwcap(void) > return hwcaps; > } > > +static uint32_t get_elf_hwcap2(void) > +{ > + ARMCPU *cpu = ARM_CPU(thread_cpu); > + uint32_t hwcaps = 0; > + > + GET_FEATURE_ID(aa32_aes, ARM_HWCAP2_ARM_AES); > + GET_FEATURE_ID(aa32_pmull, ARM_HWCAP2_ARM_PMULL); > + GET_FEATURE_ID(aa32_sha1, ARM_HWCAP2_ARM_SHA1); > + GET_FEATURE_ID(aa32_sha2, ARM_HWCAP2_ARM_SHA2); > + GET_FEATURE_ID(aa32_crc32, ARM_HWCAP2_ARM_CRC32); > + return hwcaps; > +} > + > #undef GET_FEATURE > #undef GET_FEATURE_ID > > -- > 2.32.0 >
Reviewed-by: Kyle Evans <kev...@freebsd.org>