From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from wes1-so2.wedos.net (wes1-so2.wedos.net [46.28.106.16]) by dpdk.org (Postfix) with ESMTP id 53054567C for ; Fri, 30 Oct 2015 01:27:35 +0100 (CET) Received: from pcviktorin.fit.vutbr.cz (pcviktorin.fit.vutbr.cz [147.229.13.147]) by wes1-so2.wedos.net (Postfix) with ESMTPSA id 3nn4Gb1DjvzBkn; Fri, 30 Oct 2015 01:27:35 +0100 (CET) From: Jan Viktorin To: david.marchand@6wind.com, David Hunt , Thomas Monjalon Date: Fri, 30 Oct 2015 01:25:37 +0100 Message-Id: <1446164742-29546-11-git-send-email-viktorin@rehivetech.com> X-Mailer: git-send-email 2.6.1 In-Reply-To: <1446164742-29546-1-git-send-email-viktorin@rehivetech.com> References: <5289220.BuGOiUSaJq@xps13> <1446164742-29546-1-git-send-email-viktorin@rehivetech.com> Cc: dev@dpdk.org Subject: [dpdk-dev] [PATCH v5 10/15] eal/arm: detect arm architecture in cpu flags X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Oct 2015 00:27:35 -0000 Based on the patch by David Hunt and Armuta Zende: lib: added support for armv7 architecture Signed-off-by: Jan Viktorin Signed-off-by: Amruta Zende Signed-off-by: David Hunt --- v2 -> v3: fixed forgotten include of string.h v4: checkpatch reports few characters over 80 for checking aarch64 --- lib/librte_eal/common/include/arch/arm/rte_cpuflags.h | 16 ++++++++++++++++ 1 file changed, 16 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 1eadb33..7ce9d14 100644 --- a/lib/librte_eal/common/include/arch/arm/rte_cpuflags.h +++ b/lib/librte_eal/common/include/arch/arm/rte_cpuflags.h @@ -41,6 +41,7 @@ extern "C" { #include #include #include +#include #include "generic/rte_cpuflags.h" @@ -52,10 +53,15 @@ extern "C" { #define AT_HWCAP2 26 #endif +#ifndef AT_PLATFORM +#define AT_PLATFORM 15 +#endif + /* software based registers */ enum cpu_register_t { REG_HWCAP = 0, REG_HWCAP2, + REG_PLATFORM, }; /** @@ -89,6 +95,8 @@ enum rte_cpu_flag_t { RTE_CPUFLAG_SHA1, RTE_CPUFLAG_SHA2, RTE_CPUFLAG_CRC32, + RTE_CPUFLAG_AARCH32, + RTE_CPUFLAG_AARCH64, /* The last item */ RTE_CPUFLAG_NUMFLAGS,/**< This should always be the last! */ }; @@ -121,6 +129,8 @@ static const struct feature_entry cpu_feature_table[] = { FEAT_DEF(SHA1, 0x00000001, 0, REG_HWCAP2, 2) FEAT_DEF(SHA2, 0x00000001, 0, REG_HWCAP2, 3) FEAT_DEF(CRC32, 0x00000001, 0, REG_HWCAP2, 4) + FEAT_DEF(AARCH32, 0x00000001, 0, REG_PLATFORM, 0) + FEAT_DEF(AARCH64, 0x00000001, 0, REG_PLATFORM, 1) }; /* @@ -141,6 +151,12 @@ rte_cpu_get_features(__attribute__((unused)) uint32_t leaf, out[REG_HWCAP] = auxv.a_un.a_val; else if (auxv.a_type == AT_HWCAP2) out[REG_HWCAP2] = auxv.a_un.a_val; + else if (auxv.a_type == AT_PLATFORM) { + if (!strcmp((const char *)auxv.a_un.a_val, "aarch32")) + out[REG_PLATFORM] = 0x0001; + else if (!strcmp((const char *)auxv.a_un.a_val, "aarch64")) + out[REG_PLATFORM] = 0x0002; + } } } -- 2.6.1