From patchwork Tue Jan 17 07:13:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 19510 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 B8E06F96B; Tue, 17 Jan 2017 08:15:28 +0100 (CET) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0087.outbound.protection.outlook.com [104.47.42.87]) by dpdk.org (Postfix) with ESMTP id 30183F96B for ; Tue, 17 Jan 2017 08:15:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=OBw969v5YpEFWUtVLY5tvqeJW1miai5WtsS8w3jv8UE=; b=OmieayiHS84C+x6Z3LkXAb+wxoYnLmG43O3vxXqon5eMeZXFvUEGuujPvDEKuFFLJDK8eXlGf6Ng+WwbOBt+un819Hip1B/n++iLoVKbYIYxoWSaMBlLyxJ+iLRTuHucosIpKRO1yFAxW5YKoHzP0D74SEIbpQxGYOeZXVAVesY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.caveonetworks.com (111.93.218.67) by BY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Tue, 17 Jan 2017 07:15:21 +0000 From: Jerin Jacob To: CC: , , , , , , Jerin Jacob Date: Tue, 17 Jan 2017 12:43:46 +0530 Message-ID: <1484637244-7548-12-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1484212646-10338-1-git-send-email-jerin.jacob@caviumnetworks.com> <1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0030.INDPRD01.PROD.OUTLOOK.COM (10.164.137.37) To BY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143) X-MS-Office365-Filtering-Correlation-Id: 76b366dd-d72f-4a17-122f-08d43ea89ae8 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY1PR0701MB1724; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 3:hD23heJVZ6jAedUD+3F2YtSTlMr9NaVVfcuLCcQFVuJ+T3kQRown3ecMYmEESf55MKL1mWB1W2jWs9cN5vSwGunfTD7/71AhxLMKBMsEc7/hV6fX6aNalJAtVBLKj16t1RXBHmnx3AQTyNW9Sgn85HNxHiL4CQwnsJXY5HrwvwQ2f0TeLJXek66H6FbsvHM9uTsLE0ssA+J8U82V3TGKCTXKJrv68wS0+uPgT56SSNm2IapdBQwVpUAKt7pybHv2cUeZb5JwjCCUgKPIgTnzRA== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 25:iU8w7IRrpawipERkaEux4lRv3DiT76cETf2LvrpvM6m3WeZiq6cM2y+VqoYBMX6ON8NmBKZyrfY0AjkosLmBgJzk9qxpA0Yfd5Lj5PPAZTjhOKXEe9GOVURywmnqWq0F4iq/0OltkkdKytiWJl2kMTD+kMcBn546ho0Ik6WIRZ/A9MFtDU/wBkQI5CNTlbg/LUVm6EK4tLwhWIjVgJQhn58adDSekZYq9tGh7cWpYYWb4AzpqGb+syzu5oktYcml3Cfhah8lhsh3dgPqXtB+ao/UT/OVdmVucYRfVORIwfRQwQRv+mfsWJzLK1f1RUgPaYoXG18HNEntBNBToARXI2AdPswfKCJ5fGZoJeu/63miUphZz/QmfKP4mrw1aa9Bu69ZMVeKbYTD088kHaCHgiDc+/p/riPYbIfwbKnT2DqcURPxIhuV6gSGClIhACDu8do5N0zubzpxJeZnTFdormy3eWZpdTOwg/SIJNY/wX3i6CfAuZEHisq+iqACs6Rqz9qtvfJBBTY+WQQdCAhxhHA5MHZK3uOfeGQqd6ldCT/iVqf2UR7cVUD1y1VFdhqKRG3eHuRrqbeL7XMenhbLad9X5jYCb9pXHyDeRpzwKPNXHEHm2l2Tkwwmgzf4NKhiOUgzrHRfh/fAQjX40s6aPwMVD3vOl8dl/ZWaBPofw8nkbdzjz8yQbLRzY8jcQFXAudOx5YDI0Dz8+bH1f2Lb6GNvnt7f4ePstZsBHESfB2NBkuSowN39gPUV7Ev/k9ZLjoTZ5cTtszI+PKcEcIIe9P51TRAaMhi0v+L+KP8pikA= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 31:gKrYC3m81+B130hxBMnKTtrX52+5bCKXGX/ZwTiznkTJrDrL+KHNGrOM9LYgmg4xQd2VDbDlJudXARPwdcUVT+ETcCC7ohdi7QUHSFP0cN88O/ScLcDxXOx4pQ+Mg6dDf5OBp6h6Kl4f6QMbf6d2+AEECkeSw5lQq3b6vY1P9w9oJ7YhbQeUzlYya7PeDpe0V5V4DTkdhBWsx+rfY2HhGKxbp72+csSIn85c7/CCNYgoeuNTUZZsyOz6s7izQCtpQUifS4n1tJW+D2YZw2owIw==; 20:LLZ6RNRA/muaDfh9XZOJeW0I9lIxOJnQicnB95lx2Z2bw5XBDOvjiRDQO/9iQlcYy6507O0ovM4XQjkV3AiRW95NKR4owhdYeHVvoT/jUeALqIM+9MtDWQiFw4HEe87wRUFBZJMgzC9y8YTq+BExAFhO4UhqEwNlNDTMwWdT1sT0I11lZBXAKTbgT/gyvzRfaeM4dplTiHGtpr1ryPy6WhlJ5D5qJ9CMNZcdVEVQMelGDvavz8fat5V3cihY0mTCHSzKB8iOkVZ2nbqAMDIts2SV68MlqQMUiPOMTpnGaqeYGF0smZMSHm7OX/eOhp0chxYfAndcHrOliMCpaVVcTGthmktO2yz61G+vsn8HCFvHn8dw66klcxbkH7PjjXL7lygmTpQ9Oxqi5yGejo0fxz3OOxaplE7NuTc+83sZxn9TVK3cu3sPIhzwLFSTFYaZ8XA6L1hz0sppii9ZS7YChV8qHTEg8IBGYbpQtmzOpp4jNdOzTCTbGcFkVM0rA63ihZuWt70vVOysJwLPRPYIxNQh5r5ARKk7JjaVUQZ3HgdJIses2gzvrcLqg5yB8VvRWYf65Pg/7jvUnUaSZHVemvKHUbgdvJ+xIQsNe11w9EQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(6072148); SRVR:BY1PR0701MB1724; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1724; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 4:JwfUxes8x7Bjr6iha/mrgw/vDn7wtbfVwLmof5nepquyyZ9uqmXVswCQUjChF8P+O470MPtpdJahrGcGv2li5Tgwyz0qxgzHfWj0SEIQtPFSaJIdARuimhe4cBRN0ZpzHDmsNLgTT8JsZqSQXQuZVdaVUD5FJkc6zBYIJYNH+TbmE9wGlyUlQw383TEPVLm1ERBzbzpb5GqGCY4cdjpUfp9gwTA7LIPjmaF+62T7kjDNBnuepQmPw90AmvJC/KtBRS9hXe6/LFKAhSmnGVxXBtwbQ7x7gbpHnOQHp6QFl5+/XUD4NGL9AxgVAV9H03zcyEQMtwMPRd9c9xXsdbz+5aqK3wwni3z0I1rntMG0N8/qUmhXyNlofZ9anqjo1Gq2NGtu2hi+t5xhyn/yW+hLuGW5qy++6fpC4qej6sO3P/tfw5QItAdF8EL6wufFJmQ5rgVig8nBOz7oDu7vZgEt4OFyXV/TkFDVviktOcZaJ9ZABqk8LQZTXYZLRIZd7Z8vRbFoG1tk+z0wIaZ5igZ4UJkXtAif2ZySx/HHnApS0E9AcbsB+u8MmO5+5pgIXf4F X-Forefront-PRVS: 01901B3451 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(199003)(189002)(2906002)(4326007)(76506005)(107886002)(53416004)(189998001)(92566002)(106356001)(38730400001)(47776003)(25786008)(6486002)(54906002)(66066001)(6506006)(305945005)(7736002)(6512007)(5009440100003)(81156014)(3846002)(50226002)(5003940100001)(68736007)(4001430100002)(6116002)(76176999)(50986999)(2351001)(97736004)(81166006)(5660300001)(8676002)(105586002)(69596002)(42186005)(48376002)(6666003)(36756003)(33646002)(101416001)(2950100002)(6916009)(110136003)(50466002)(42882006)(30001)(7099028)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1724; H:localhost.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0701MB1724; 23:NI/Enpu3pKqMMcy69VczOgfEimxaHHPV92TeZPN?= LYNQj5OZl7YVxEe1TLezw4tesRwjltw5j9U+hAkd6aj1VqpqjFhqcmiXolkE0cTtbb8GewHp5K0MIWCAvQY4Uros2IeTrkbucb93sGstXA1jL/qtsyCO+Pzqs3J5wdFC/gE5A6yXl/h87wIMe9XwWhI/F0om+XIouJ4HLB//7IIv47lyoRwQUKGJVmtnJ36hEn6IktezurpYMJCi1dECfsvtOWaC0LhhDaWngFCRw1vRMXNVmCzTImuDZNt/lahOy7qweq3XsyIYM9QICbSWTKvCpHB21RbZxGEFQPaz1zV5qB7wjm30XZ0BYrn8G4l8utFqEJmmCUDD8MvNvQGy9Qh+OjXndjiMTiPsWTokhMBKog1Mv37RmLAxRM5gzg5nd1nxQEztMz1YLzRWEEf6KopaukrJPmgIxe1GdBTOLHLrX0yEYZ6yxxmR2c6rRR4I37JI7BCiYuQxn4svG8klx65FCBRLJYLD5gmbupTpTMGZFRfMwu8GEUZ5TAtQp7jKH3mRhJ4OoKePLzraqyP6BWAEIgewnJiEqY/Ba6h244bRevG6JG2zhHBue3xAink94Uhhb6761hX/rCkBZH44jRavp7EuK+xKQawO1sd9XxdQIyku4yieElRmg7YTYQBWwJG7aXlTZADRVR4FL6+Geyl83cxd1YEGnP97Z5QMzcxwroDKn02S4Pa4REIxuM98+j1lPAs+04EObElaQAirDk3SsclHqEmLniPrg0IkHUw0XqdKt/klH3oOjHx/Z94Vqs9c6MR486FXR5JuL30g0mxQIkIn256Ij8r5JCn2I5QKWLBFZAEKZm1ATsXTuY1c27AUe/g8B7So6gqlxDB+GcGWxSCv1MGHBIQsDFMHqdHeIJxJS1O96waTK8OWT/XE3cYRo2cLtE8Dio2zj5zJisKp6vx6WqS0BIHjwy46d2gxyh0WWLdHBGOkVR56lhkGTPjGwFF+ad/nuLQyFCKr00Vsik4fHGs+C1jGHX9tocR/+aly2NyLYwYecD+vjbWnjwASsp0JIrpDA7SX8PVT2UVhPWoNK50Mm+bheBg+tCOlpy/ynqMj+Esm7AsfopyU9upHATUOId424xDyjS2qCHP5jAT5/Hf167WUoYmV95NJ5xbtpaLPktgnrBNrJAM5C/mq9X25vjlZFO43vrWNzO3MMDFqhzKvKNEgRiiUS/j2iGjYOykCkaoUHDn7Ix2M8DWEj+bhEUKub+coo6tpFBda8vMVf4aPkAXAxSRPlfN2xA4EVNODpjejv3tPcB9zZiG9NEaSDkggcha2jhgjGEW1W X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 6:ecIK90iORcwZED4Mqy2p4t5BS/R06LaK3AO59ahJeBzZmpJoGS18i+DiIyZmyHUMP0xkcXEjX2G7UVy/+a1twUUoW7ycVc5RigmUayyb18ecUwHSv8WhdS3YewOViMaYWWxlqIvEo/nkuBcSBkxL6NUzPyJ4wfRqAvPP+MVw2dYH3igyqQAAEqVCb8QWm5aKNxgrdgJJf4wrOjVTtOgfLKtWHXmOaAvzErnG7gGb/jY6cLU8UPAH03Ohf7Oy2b37DDa2A0EFIl3bCv0Nue0f0DDTexmWoXknPsb1eJZb/8+DbmIGCWnIapOm/QQh+g9RJlX5gOodbjdleZFJydW44cfZaa7X/qEJFE9XT18yzbacZ+jVOfVvLm5slnQS3P1n0lYmgoAinVOBUF4EB21Lzgom7O1d6jp2JkJUeI9mPOo=; 5:Ij/Q0d8fcbWsQd9k3+ywQJmY43UZhg7A0O2LJQBHrCmHurI4LtYapUUWvKAY75t/GCq49nPwoagYZesA0Aq+ALfj8FLcPmdIO8Q5yLsbq1bk5de5BVgMKV1R0tRQ4Bh7e/naIVjScX1uZpdBe7QyMw==; 24:GJnKpaiIqROQ2wImk3ec3VIFYDBWR2yILgeSUSZhnCfpRFT9clCUHexxnzXd0UntGbFMQ6Q0l8fkxMxnkFP+jf6p1iTSaeh9K6Py+5QDbjM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 7:8RkR1KT3nu029qCQCF4Kd451G3tHjXLq+5qwZOYnRYtpqBJ2WTInYoI0qPXztZDMN68VhE3G3a6/DSYpokDQsdKgzKliYIPVxPJxb37HFEo2IAuFmGsaRdqfmvnx6G7kIReGav+oS3Yp7msrrylXiwRpJw9OcyeDAHo5mJjp1C2ZDqmJVitQWhueDvxFcfgEuTD9/fZ94uNP5JXyhcLncD1yhYpOVoxXNXjL2q3X/OyUdQo8JjBwRtJhf6tNAOUnFfqZaphkf7OUPnQFc4A+Z/4dl6Vj0A6tXPiY595SwcSCq66xY4ZKWioXMfu7s3BFIYImW/r5l+Px7MiGNExAvlH5ygHgcvpTa96EUlxyUdwWaU07Upjw8DsKi12h5qITO/7S0z761XFfOv+8jpb/olR2q9iNrZOazFdxAqgwJnemKlBtKqORTID1EP2us678EYjMP7yBZn4Mt3IeU/8MLQ== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 07:15:21.1537 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1724 Subject: [dpdk-dev] [PATCH v4 11/29] eal: generic implementation for I/O device read/write access X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch implements the generic version of rte_read[b/w/l/q]_[relaxed] and rte_write[b/w/l/q]_[relaxed] using rte_io_wmb() and rte_io_rmb() Signed-off-by: Jerin Jacob --- lib/librte_eal/common/include/generic/rte_io.h | 118 +++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/lib/librte_eal/common/include/generic/rte_io.h b/lib/librte_eal/common/include/generic/rte_io.h index edfebf8..d82ee69 100644 --- a/lib/librte_eal/common/include/generic/rte_io.h +++ b/lib/librte_eal/common/include/generic/rte_io.h @@ -34,6 +34,8 @@ #ifndef _RTE_IO_H_ #define _RTE_IO_H_ +#include + /** * @file * I/O device memory operations @@ -260,4 +262,120 @@ rte_write64(uint64_t value, volatile void *addr); #endif /* __DOXYGEN__ */ +#ifndef RTE_OVERRIDE_IO_H + +static inline uint8_t __attribute__((always_inline)) +rte_read8_relaxed(const volatile void *addr) +{ + return *(const volatile uint8_t *)addr; +} + +static inline uint16_t __attribute__((always_inline)) +rte_read16_relaxed(const volatile void *addr) +{ + return *(const volatile uint16_t *)addr; +} + +static inline uint32_t __attribute__((always_inline)) +rte_read32_relaxed(const volatile void *addr) +{ + return *(const volatile uint32_t *)addr; +} + +static inline uint64_t __attribute__((always_inline)) +rte_read64_relaxed(const volatile void *addr) +{ + return *(const volatile uint64_t *)addr; +} + +static inline void __attribute__((always_inline)) +rte_write8_relaxed(uint8_t value, volatile void *addr) +{ + *(volatile uint8_t *)addr = value; +} + +static inline void __attribute__((always_inline)) +rte_write16_relaxed(uint16_t value, volatile void *addr) +{ + *(volatile uint16_t *)addr = value; +} + +static inline void __attribute__((always_inline)) +rte_write32_relaxed(uint32_t value, volatile void *addr) +{ + *(volatile uint32_t *)addr = value; +} + +static inline void __attribute__((always_inline)) +rte_write64_relaxed(uint64_t value, volatile void *addr) +{ + *(volatile uint64_t *)addr = value; +} + +static inline uint8_t __attribute__((always_inline)) +rte_read8(const volatile void *addr) +{ + uint8_t val; + val = rte_read8_relaxed(addr); + rte_io_rmb(); + return val; +} + +static inline uint16_t __attribute__((always_inline)) +rte_read16(const volatile void *addr) +{ + uint16_t val; + val = rte_read16_relaxed(addr); + rte_io_rmb(); + return val; +} + +static inline uint32_t __attribute__((always_inline)) +rte_read32(const volatile void *addr) +{ + uint32_t val; + val = rte_read32_relaxed(addr); + rte_io_rmb(); + return val; +} + +static inline uint64_t __attribute__((always_inline)) +rte_read64(const volatile void *addr) +{ + uint64_t val; + val = rte_read64_relaxed(addr); + rte_io_rmb(); + return val; +} + +static inline void __attribute__((always_inline)) +rte_write8(uint8_t value, volatile void *addr) +{ + rte_io_wmb(); + rte_write8_relaxed(value, addr); +} + +static inline void __attribute__((always_inline)) +rte_write16(uint16_t value, volatile void *addr) +{ + rte_io_wmb(); + rte_write16_relaxed(value, addr); +} + +static inline void __attribute__((always_inline)) +rte_write32(uint32_t value, volatile void *addr) +{ + rte_io_wmb(); + rte_write32_relaxed(value, addr); +} + +static inline void __attribute__((always_inline)) +rte_write64(uint64_t value, volatile void *addr) +{ + rte_io_wmb(); + rte_write64_relaxed(value, addr); +} + +#endif /* RTE_OVERRIDE_IO_H */ + #endif /* _RTE_IO_H_ */