[dpdk-dev] [PATCH 3/5] eal: fix compilation for armv8 64-bit
Jan Viktorin
viktorin at rehivetech.com
Thu Oct 29 18:38:35 CET 2015
Hello Dave,
On Thu, 29 Oct 2015 17:29:52 +0000
David Hunt <david.hunt at intel.com> wrote:
> Signed-off-by: David Hunt <david.hunt at intel.com>
> ---
> lib/librte_eal/common/include/arch/arm/rte_cpuflags.h | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/lib/librte_eal/common/include/arch/arm/rte_cpuflags.h b/lib/librte_eal/common/include/arch/arm/rte_cpuflags.h
> index 7ce9d14..27d49c0 100644
> --- a/lib/librte_eal/common/include/arch/arm/rte_cpuflags.h
> +++ b/lib/librte_eal/common/include/arch/arm/rte_cpuflags.h
> @@ -141,12 +141,21 @@ rte_cpu_get_features(__attribute__((unused)) uint32_t leaf,
> __attribute__((unused)) uint32_t subleaf, cpuid_registers_t out)
> {
> int auxv_fd;
> +#ifdef RTE_ARCH_64
> + Elf64_auxv_t auxv;
> +#else
> Elf32_auxv_t auxv;
> +#endif
>
> auxv_fd = open("/proc/self/auxv", O_RDONLY);
> assert(auxv_fd);
> +#ifdef RTE_ARCH_64
> + while (read(auxv_fd, &auxv,
> + sizeof(Elf64_auxv_t)) == sizeof(Elf64_auxv_t)) {
> +#else
> while (read(auxv_fd, &auxv,
> sizeof(Elf32_auxv_t)) == sizeof(Elf32_auxv_t)) {
> +#endif
> if (auxv.a_type == AT_HWCAP)
> out[REG_HWCAP] = auxv.a_un.a_val;
> else if (auxv.a_type == AT_HWCAP2)
I think, it might be better to do a typedef (or define) like
#ifdef RTE_ARCH_64
typedef Elf64_auxv_t Elf_auxv_t;
#else
typedef Elf32_auxv_t Elf_auxv_t;
#endif
while leaving the above code almost untouched (just Elf32_auxv_t ->
Elf_auxv_t). This is like spagetti... :)
Regards
Jan
--
Jan Viktorin E-mail: Viktorin at RehiveTech.com
System Architect Web: www.RehiveTech.com
RehiveTech
Brno, Czech Republic
More information about the dev
mailing list