[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