From patchwork Thu Nov 5 16:38:07 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 8714 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 2002B8E96; Thu, 5 Nov 2015 17:39:30 +0100 (CET) Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0094.outbound.protection.outlook.com [157.56.111.94]) by dpdk.org (Postfix) with ESMTP id 5373B8E96 for ; Thu, 5 Nov 2015 17:39:28 +0100 (CET) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@caviumnetworks.com; Received: from jerin.caveonetworks.com (111.93.218.67) by CY1PR0701MB1977.namprd07.prod.outlook.com (10.163.141.19) with Microsoft SMTP Server (TLS) id 15.1.312.18; Thu, 5 Nov 2015 16:39:25 +0000 From: Jerin Jacob To: Date: Thu, 5 Nov 2015 22:08:07 +0530 Message-ID: <1446741498-3096-5-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1446741498-3096-4-git-send-email-jerin.jacob@caviumnetworks.com> References: <1446741498-3096-1-git-send-email-jerin.jacob@caviumnetworks.com> <1446741498-3096-2-git-send-email-jerin.jacob@caviumnetworks.com> <1446741498-3096-3-git-send-email-jerin.jacob@caviumnetworks.com> <1446741498-3096-4-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MA1PR01CA0067.INDPRD01.PROD.OUTLOOK.COM (25.164.116.167) To CY1PR0701MB1977.namprd07.prod.outlook.com (25.163.141.19) X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1977; 2:HrWAiYm6Qf93HVrcvNn+jPTgUREodeYtVl0WKPzgoWiXbTOgUNx4jWLU7LJgIN+7FF8dM4Rax56XjSzuujeJfrJ9F8NTGyDAM4MIZK1ZGN1aagFdHYq97zFdXflkO7Cmb/upzuFdEtYGZ0j5aXMvFv8MGOw93c0VdCEnRrTo+Y4=; 3:CPoBQq5thinF2EI8evteDEeTJH41Ehlq1lC0k3Q1XYzeFYOJYRjFPYhJv4AyPB7SLOVRLjSNIo5er/+2Q9Dct+ZQLRhwa6/y4Dz+M2RhsvhvMhc5TLlPq9uqS5g6tP4SD5zeamVD/R9BPyYDQQVA5Q==; 25:vlrNg5Fz/Td9Gb2PQeqU14KG5uRQ5VS23apUeYtoE8HEV0C6I4iSmktlx1qfDecN+AGYMLDZlvMBhGgaiIK/5c2nO39tt2aZN7iPOUAdNTwY0OkWuVXUjUNmtG1/a4ng0JxutLRKp8CC9X1gb+xFB9UfnXXLCDa+oWG1+65b6szuBkJ5t6R0O1zakrMxsD1GJZT+AKUFdugpv5kp+vKL7aYITYdXznAVsdCHLE/Wdl0psK/cvhzLHrM7fj8cUdZBm5SP1qmX9oKmWCNuRvDvCw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0701MB1977; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1977; 20:dm/K/HyampKlsIgsCEzroPyT566WMPmKffDk+j0HZDzPaGqEtO50K8vYUaomo9sVA9P4fnnf/iVmne6mtS/HPhjD47BFYEeqJZIitcrJqbcEGozmo/XZ6L56UbG+VNt5N3ct5/yR7hUJxukDOEGSrFjzS0if+Zx7mwwIOgdRqHdwOlhG8bzW+GMIQqXoMYMJbgeyo1k0X0Wvj5ZmEMCWCaxGpUJsI5weLvZcT1smbLtbUoeDokBC2gw+oy8cKfZ1rHU8fUefwmgFwoN0ClnIrUS4guGnYvfjjbuWmDt8SQpqeIPVdfmD8edtWokAdF9W5R3JFT4s8BAI114fdP+TK64INAe/j+SurQ84p335OR+RxvdHtodfNsolCB79fTDc80/hUi1OZ1yVUKmPKlvqE8BfLB2Sdsr1anhxMwB4cb3dmmn0vAe+V5i840dJFKGMki4PceQXVGQaJr9PVqV897O6vYQJvdHSjcK/CwFI/rWXtAsPLXUUX3OjsODLzeTuYf4mllPlFkucHVysqozasK6McZFVMxeYnnnMMe3qgn6Bx2WTL3l1tZ/xVU7gdr7fS8g0KPf/Yb3EsgUe+0j8km1mOTz03jjGnYXJCDBwqNE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236414709691187); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001)(10201501046); SRVR:CY1PR0701MB1977; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0701MB1977; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1977; 4:SMN5BhGfWclbYcSm8M5dIXFH6OKG3wo6WLnNJ+j5XsejTMGfmDSYiJBMEWCJvwXejOFYBRvQT+T7MMlnOtIQ8qLRjnapyQLcezfYcyptjrLwxf+JFIOhlFD9MAnnKypDIjgPGNDlG1Ftce3kwOVN1+WODpqGOcOXiNRDpf7Dua4Z0ojvRoSp7uSUiZDli8AIzqyxAJMANueFXzXu6Jazju+hAsWY6YFraPCA9m92MxMd5l7lI+bLH8QEMnKGUTqv0ie4SJ/GsPZz9V4NYMV/K/viioZCjw7cY4l8VwB1k3lw6iQGvkCSMGaLDKwG8hY6202A1pKmicNqK/bBUKcGe1wdtoUuA81iEPw/cg0DrUuNW6bNmOJhWiZs0gLQJuvD X-Forefront-PRVS: 0751474A44 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(189002)(199003)(2351001)(81156007)(5004730100002)(5003940100001)(50986999)(50226001)(76176999)(19580405001)(106356001)(105586002)(77096005)(50466002)(93886004)(53416004)(47776003)(229853001)(48376002)(33646002)(19580395003)(69596002)(36756003)(107886002)(189998001)(42186005)(5008740100001)(40100003)(122386002)(5007970100001)(5001920100001)(5001960100002)(86362001)(2950100001)(5009440100003)(92566002)(4001430100002)(110136002)(87976001)(97736004)(101416001)(66066001)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB1977; H:jerin.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; CY1PR0701MB1977; 23:JENfCEzHJZKBBgX1vlqakdktjvMr3kvNjM2vQna?= =?us-ascii?Q?koisi/igkHyWT9/CXdgatjZAcyjALiw9XNJZRGA5FiFSne/CsgJjmki2/Q/N?= =?us-ascii?Q?bVV6rOMMPxcWwmTThVv2vOAeRYswjbAokNRmS9NNsdhFgGLrTxqDujIlStG5?= =?us-ascii?Q?o1RAoIRhp9KC0Xk/nwh8CDPFu3uEKA6zXzazpkb51QoXD7VBXu9zTz69fwHL?= =?us-ascii?Q?tAxIB6wgpOuONt8Q6wtCIF14CtMkTdxzH7I8YpPaGZWlBDET/wGgGC1IVLBz?= =?us-ascii?Q?C7WYHuSlqx3mVWkuNgseDi6NVV4ah3rqWfHY2LXK0O4VAxl8YZLom6DImjag?= =?us-ascii?Q?35bQ1AhzhRfpravubVRWsX6+/6ZJ1wCqYrgWz6MQZrG2jT2dotnVsW0gkVwr?= =?us-ascii?Q?DT7/pvUd4YflpdK7TyzWXNSHJyrZNu+49ejwxgIQl3kKyiNaLEWvkuobvCB6?= =?us-ascii?Q?m/8fwCpIHSKrRIdiotoZ4lEsoxHLxuVt+hFJ26uOJ10c8sBYLBsd/CQ9cexR?= =?us-ascii?Q?sITI4jFWi8RXM8fm9lmLoNbCN94naMiRkT1vjw/oVFmEHI+c7Alm50pgM8p/?= =?us-ascii?Q?LS/zK9Jmg3eCE98B44SZbCqEeJNll1TFiI/W1yNTQEp8owe2GdF17Gj+d0x6?= =?us-ascii?Q?1xN0UlzkFVnP4WoDt1vhcJ7gBXH9XXr+RxEc0dLkpdcpXx9dCwblPGVhHzEI?= =?us-ascii?Q?4cdW/7LSDktRc505Vog8/PfhW14vyRK8oyVkXJkQVAc8+qTpD17PNq1wlazd?= =?us-ascii?Q?Cujl8G7XVbfO5fLJnfRZ/5eQw3EzrU4OeFqIGVb/aT1PCk2L17tp9VU3bP5w?= =?us-ascii?Q?p7HuDowEezTZhVuNIXlYBHAnh6wDlHJUOQQePMSWZFvLC7su+TvqduXAHCWn?= =?us-ascii?Q?8BepfNaiQrGmTRF8W3xqEKGfzfrFzCozXnjW6ZENq3zWpAG4JXye97d3mOiR?= =?us-ascii?Q?p9nxzquj5IltGVGT70MR2NCl/qAw7qRwvWJD8REvJmJZi3+CdhGtCIOwOCQ8?= =?us-ascii?Q?bwT0xFqUv6M8QEPq4iorZtMLx5nvIN0eoTcD8Yhhcumhfi47Wej6D4MkygWF?= =?us-ascii?Q?zPj8lAg5iwIGXglrH+WrDClt/2Csn44mtUrrGhApBSxT5JVT6Bwsi4TCBz0O?= =?us-ascii?Q?9av+g/1RVcEyFrzEOSPvYBKeeom1UXVtCx+Qkkyn8ecPElPsG7PHDUCOAre8?= =?us-ascii?Q?N25TLe8+V9vNx3D+NeVDPh2ZFjxSSUicBeK//?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1977; 5:+XhtVKksKHJOMVW4W4VjdSot000CUAlijLSESfT4sWiYS/bOiKOWPCmTQFkV7qPeRjhs91KudXXVhpiQZbnkJ6DIDLJ0zg98Whz2Xj2ulzlsZR1itveALBNNS/yEz9JyAeCLvap3jh2VJW2b1R0wWg==; 24:5Rg/c9UI/MbEv5lzAsbqyH26Zgr9Un/yPS2xogHtG4RzGAkJxGHmSdlDRMQV3riJ3bdSFHbrPT/junkGenYAs146P5YOgtybE4PDA2toki0=; 20:VY/LFN//FZAizP4Xhl+JFtaVr44SXw+DeixTAOq4xrSdTixUIcoe2t+7gC1Gz9kyH9qn8GJXj+ly+Nmqxz31lA== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2015 16:39:25.1164 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1977 Subject: [dpdk-dev] [PATCH 04/15] eal: arm64: add armv8-a version of rte_cycles_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" cntcvt_el0 ticks are not based on cpu clk unlike rdtsc in x86. Its a fixed clock running based at constant speed. Though its a armv8-a implementer choice, typically it runs at 50 or 100 MHz Signed-off-by: Jerin Jacob --- .../common/include/arch/arm/rte_cycles.h | 4 ++ .../common/include/arch/arm/rte_cycles_64.h | 71 ++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 lib/librte_eal/common/include/arch/arm/rte_cycles_64.h diff --git a/lib/librte_eal/common/include/arch/arm/rte_cycles.h b/lib/librte_eal/common/include/arch/arm/rte_cycles.h index b2372fa..a8009a0 100644 --- a/lib/librte_eal/common/include/arch/arm/rte_cycles.h +++ b/lib/librte_eal/common/include/arch/arm/rte_cycles.h @@ -33,6 +33,10 @@ #ifndef _RTE_CYCLES_ARM_H_ #define _RTE_CYCLES_ARM_H_ +#ifdef RTE_ARCH_64 +#include +#else #include +#endif #endif /* _RTE_CYCLES_ARM_H_ */ diff --git a/lib/librte_eal/common/include/arch/arm/rte_cycles_64.h b/lib/librte_eal/common/include/arch/arm/rte_cycles_64.h new file mode 100644 index 0000000..14f2612 --- /dev/null +++ b/lib/librte_eal/common/include/arch/arm/rte_cycles_64.h @@ -0,0 +1,71 @@ +/* + * 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_CYCLES_ARM64_H_ +#define _RTE_CYCLES_ARM64_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "generic/rte_cycles.h" + +/** + * Read the time base register. + * + * @return + * The time base for this lcore. + */ +static inline uint64_t +rte_rdtsc(void) +{ + uint64_t tsc; + + asm volatile("mrs %0, cntvct_el0" : "=r" (tsc)); + return tsc; +} + +static inline uint64_t +rte_rdtsc_precise(void) +{ + rte_mb(); + return rte_rdtsc(); +} + +static inline uint64_t +rte_get_tsc_cycles(void) { return rte_rdtsc(); } + +#ifdef __cplusplus +} +#endif + +#endif /* _RTE_CYCLES_ARM64_H_ */