From patchwork Tue Nov 3 13:09:02 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 8582 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 09F6891B4; Tue, 3 Nov 2015 14:10:06 +0100 (CET) Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0057.outbound.protection.outlook.com [65.55.169.57]) by dpdk.org (Postfix) with ESMTP id A486491B4 for ; Tue, 3 Nov 2015 14:10:03 +0100 (CET) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@caviumnetworks.com; Received: from localhost.caveonetworks.com (111.93.218.67) by BY2PR0701MB1974.namprd07.prod.outlook.com (10.163.155.20) with Microsoft SMTP Server (TLS) id 15.1.312.18; Tue, 3 Nov 2015 13:10:00 +0000 From: Jerin Jacob To: Date: Tue, 3 Nov 2015 18:39:02 +0530 Message-ID: <1446556153-18845-2-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1446556153-18845-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1446556153-18845-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MAXPR01CA0048.INDPRD01.PROD.OUTLOOK.COM (25.164.146.148) To BY2PR0701MB1974.namprd07.prod.outlook.com (25.163.155.20) X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB1974; 2:CBI5vQjHsgo9mft7I/mn13lCujl/s+4eSaKhGUAEn4XIrHE1ZqEn6olLhhEn8S4uwZAllutZAHHr5kxSK2k3up+/P84Xm+C0bV8sSKyi0HsDOPrf7T+l08ZuJKbL5ln89uvLIHhujGm/o9kl967kJ8qr0PdnYIYyUULw/D82LUA=; 3:Ne/Dl+oa08LSJj/dYi2BFPxeFL5ROUZ59tW/rPA0/Qj8UIn67z/st4iorfU3Uts7lfD7VZCpUYG1R+o4ZrtfgxwMz0DHz/36OTTWZV2OPqHNM6JnI066LndCM+mGaaBFtZTCn57zaJ048QD/dvilcw==; 25:e3VpikFZzl/ePQ/JJzC5nsCT/87Yztx2YsZw+dQ89cDskeIEf2CUKYoytvCsdpf/+YUTdNjn3N64quSGfI8b+U7Od0NOQo3rBO0YZLvw2XDr2UNZcq8c8XtxD6cQ7dZb2xGlWzb98Ej9sAg4FFemZ2ubX4v1qBINbWwMEXSiRU67Q/x8rrhadybjuK1VS+AaehV93U4OtKNzdgtYrIljhJQI7jT7kX9+DMjauWXN/0T1wa0peRpguKxIFQfFfz8Eoe5qujw9k4avgiOXrba/Og== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0701MB1974; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB1974; 20:uPVDeDkILqSShcQK/EuZ/0NHdwhmNXEcSpgDNfs1fCZbhl5m9LUDUbOsnImX/D6egwBdAUOgUXiMCucF3g5U0+CEpr9VtryJlVMdpp3arZNJXhW20i1Ad4m+geASWychrKd3WhHH40gbvcf9xgf25TizJHSPAqHhQmdQAy95t1ShvbBb5T4mXaaifivt/TMXdXM3EiJABz0xd/9RAOmfg5fdCcO2AwMZvJVA/WIH/avsuwiXUgSto1PMBGb5mPuWWXXfi7MC1yhZr9YQDXRWSPBT2bGEHrW56DKcOqAx7bN90T833HyQm9u6S1bmMe2L6MPI/4zf7zGLKxu5kCaOR+uCh+1C7Nrf2meLXVBEMx+2h7otTsm3E484c82YW9bV1ms2CVElghUbRmtHRcBwiptkiIuOwRSiss4JJHtNARkuSv5rfH/Dy/XoE1KzbcSPLXPt5KkVKgibOkIh+ZSxEc2JG7+5Z/DBf2CXc7Mir5jhOQD7LG2oKldNCdzcJT0thpX3uH6pVgEQ2cJ9ZbNJFPhbsWmRmbhA9xb1Zlr4zikTUyuJiIVaS5fELAhQr01S4Vx6XrxcKunaS4XFlqCVQzoQVr4Fn8XCmtP4u8+EPiU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236414709691187); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(520078)(10201501046)(3002001); SRVR:BY2PR0701MB1974; BCL:0; PCL:0; RULEID:; SRVR:BY2PR0701MB1974; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB1974; 4:D6BsqbL6o6dsPOs6VSVEx2D2oRhuDZkUQXtnSGvuUht901PXSU9L5O9Q/iD6Zs2uuKXoS/EDWG7R9giMgMfJGBIhBp+SxuWqHHlsCg5bXHAqnBpNArhWf6rDZWOZlyNbgdJnYPapJD59aNtHilYbtV030OZqo3GkMpPqwmQqflWKc+ZM3cYe7FEi0Fo2FMmTeHx05oZ5xFmcKBusRusvxPst+dn7oWsLYTbfFFP2zrLMZ3TwI8wLQuqtkgegNiEb7q2/f3OX1Ou6K4Dw8i9iZf4cNIFOZslagBi8V2mAiLx1IuTirU2c1kCb3xytC/pGsm72FWPXzrRgvE9E8GF9wxR3jhbJ+XrYj8n//6A6LAK7oO153dW5DlQ9Z+y67MDx X-Forefront-PRVS: 0749DC2CE6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(189002)(199003)(81156007)(5001960100002)(50226001)(50986999)(5004730100002)(2950100001)(110136002)(77096005)(107886002)(66066001)(47776003)(189998001)(5007970100001)(42186005)(19580395003)(86362001)(76506005)(87976001)(69596002)(97736004)(50466002)(101416001)(53416004)(48376002)(106356001)(105586002)(19580405001)(36756003)(5008740100001)(76176999)(40100003)(92566002)(4001430100002)(5009440100003)(33646002)(122386002)(5003940100001)(229853001)(2351001)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0701MB1974; H:localhost.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0701MB1974; 23:6G3xSJ8ZU49JXyyTNNLlJS9Zr+SRYXcfrILRC37?= =?us-ascii?Q?XrW6F3okSDr4VIaI+gvYhp9AQRoFZ536RmmkOKKBlxRWu/NntxM7PJC9vP/J?= =?us-ascii?Q?jYUkuCuyanBfskyB90KFCo7HObL79dPekwSBGJGZja+l9WlZqI2YmXFP86pF?= =?us-ascii?Q?StlHPgv2a1Qmi8DjZSS43W3nriYeMvSpEEuWXjk/9hOPjNYnaidUrFWIQTl0?= =?us-ascii?Q?RC10H2dYaeJ40MijcgZzuQ/Zi6PHxswWycR0AE+OVwQfz0Z4ikJ/pQMmx9J/?= =?us-ascii?Q?N+YPop6Wlsb+AfSem7tZe2+3kQPSU2C4DXbab3mQu7R15AsJQnhocwZH4Qyi?= =?us-ascii?Q?4qC5v+jBSTplRKywDyNYg2w5xjYMfwOB5fYieTPvKGeSDPPg6OSeRJ0wgFiS?= =?us-ascii?Q?uCGZ0Q0ZhSNQB8bupQenMhJsvYsQubnBpDgBeNOL7Y6P7Uj8jk//c4B2nnSS?= =?us-ascii?Q?m7a9udP+3tcV16AlI31/nzT1jwb9Xfs2GcRCmiqTaSEqi5HNFG7t7uLcPZGB?= =?us-ascii?Q?+kWUvNa8n8qJEY0qeIKGR3eaHp5oxsjLmPwVEHhnzrHGyTZTO+BRa/1JbR2R?= =?us-ascii?Q?J3ht3xZiDfTPyjdKcsIeJnL4mNsB5oOZ2wB1vzrnmdSlUeRF4DF30aQwShx2?= =?us-ascii?Q?1OTItuDEK6fwgQxhe8coJfB7/+UzIuO6ea7HC241yNuAy0Nb2xB0v9ePRHgw?= =?us-ascii?Q?b83bvtW1DBX2UdqqMvPguj4KIj1ODo14PfnVDI9IbWVEGz9XKrJt5btjJl3I?= =?us-ascii?Q?jFNwS23DkYXENU8b5xv4slPgQStTh+KOeQXEGdbVyZ3715aSr1OOp/zK14UM?= =?us-ascii?Q?glZ8vZaBvFBS88cqZs25S3fOugthaUx5psUebc+Z6xSiXuW+TBjdIvbdU10e?= =?us-ascii?Q?mGzeabXHl0/Nzj3lQpbEJeMaudObsJy8sVgDrloEWKDM8sLTGebPqvptqBSV?= =?us-ascii?Q?FQ11jOSHF/XVqA2o9l5x2iF8JCDzFgMrDm32vMoUzfv57ffz81JBaflhdLh2?= =?us-ascii?Q?nnlj2pLyr5DbJIbjVBiI/pP4boR+VOxqENgRj7tjho4E5t2pgbitsJDgNW6b?= =?us-ascii?Q?AIzV/b8bWvL9DQiHMo/XP8JWihc2eMjnno9GUcb8H3cy6AU6aUSObVyZoADS?= =?us-ascii?Q?qYuxAs/p4Qe2QKXIzNlIPGDvCNIW63T9bTtqqpnemxvG3JTGHyMTenV4rILU?= =?us-ascii?Q?gMTh24XIa2M/T2eM=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB1974; 5:CFbLpl+bNw3ecgpE//q4kdRDDTfRqPjAao7Xr07wJuAbSoL6/DlYyzZCHeAQ2ERGzyrEuzd85D6vNJfpV6ArqFOaWcqDFG8HPxwxffv7zsgDFHb1H0XxEWvl5BomOl0YEue6UYGCc7I/yakzp+xfUw==; 24:bA/iI27IvL0SU+a/csNqK/uQLJ4rIEbZVfnmJkuIebOYQmFbCpIlASxq8tNozFAHxy/vtl9aH7lKDZ2tp6e8gAR27HN6D85ooQWC56FUsaQ=; 20:oPe3IvP5f24re7DGfHg+QO92pJSxSCfclmA20Pt0RXk02m40cMwkrYQcvlrHwEX7Ih8/KdRYgmmxiWxZWh14cw== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2015 13:10:00.2669 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0701MB1974 Subject: [dpdk-dev] [PATCH 01/12] eal: arm64: add armv8-a version of rte_atomic_64.h 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" except rte_?wb() functions other functions are used from RTE_FORCE_INTRINSICS=y scheme Signed-off-by: Jerin Jacob --- .../common/include/arch/arm/rte_atomic.h | 4 + .../common/include/arch/arm/rte_atomic_64.h | 88 ++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 lib/librte_eal/common/include/arch/arm/rte_atomic_64.h diff --git a/lib/librte_eal/common/include/arch/arm/rte_atomic.h b/lib/librte_eal/common/include/arch/arm/rte_atomic.h index f4f5783..f3f3b6e 100644 --- a/lib/librte_eal/common/include/arch/arm/rte_atomic.h +++ b/lib/librte_eal/common/include/arch/arm/rte_atomic.h @@ -33,6 +33,10 @@ #ifndef _RTE_ATOMIC_ARM_H_ #define _RTE_ATOMIC_ARM_H_ +#ifdef RTE_ARCH_64 +#include +#else #include +#endif #endif /* _RTE_ATOMIC_ARM_H_ */ diff --git a/lib/librte_eal/common/include/arch/arm/rte_atomic_64.h b/lib/librte_eal/common/include/arch/arm/rte_atomic_64.h new file mode 100644 index 0000000..671caa7 --- /dev/null +++ b/lib/librte_eal/common/include/arch/arm/rte_atomic_64.h @@ -0,0 +1,88 @@ +/* + * BSD LICENSE + * + * Copyright (C) Cavium networks Ltd. 2015. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Cavium networks nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef _RTE_ATOMIC_ARM64_H_ +#define _RTE_ATOMIC_ARM64_H_ + +#ifndef RTE_FORCE_INTRINSICS +# error Platform must be built with CONFIG_RTE_FORCE_INTRINSICS +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "generic/rte_atomic.h" + +#define dmb(opt) do { asm volatile("dmb " #opt : : : "memory"); } while (0) + +/** + * General memory barrier. + * + * Guarantees that the LOAD and STORE operations generated before the + * barrier occur before the LOAD and STORE operations generated after. + * This function is architecture dependent. + */ +static inline void rte_mb(void) +{ + dmb(ish); +} + +/** + * Write memory barrier. + * + * Guarantees that the STORE operations generated before the barrier + * occur before the STORE operations generated after. + * This function is architecture dependent. + */ +static inline void rte_wmb(void) +{ + dmb(ishst); +} + +/** + * Read memory barrier. + * + * Guarantees that the LOAD operations generated before the barrier + * occur before the LOAD operations generated after. + * This function is architecture dependent. + */ +static inline void rte_rmb(void) +{ + dmb(ishld); +} + +#ifdef __cplusplus +} +#endif + +#endif /* _RTE_ATOMIC_ARM64_H_ */