From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 989011B137 for ; Sun, 13 Jan 2019 13:18:53 +0100 (CET) X-Virus-Scanned: Proofpoint Essentials engine Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us3.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with ESMTPS id DEE52B40057; Sun, 13 Jan 2019 12:18:51 +0000 (UTC) Received: from [192.168.38.17] (91.220.146.112) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Sun, 13 Jan 2019 12:18:45 +0000 To: Gage Eads , CC: , , References: <20190110205538.24435-1-gage.eads@intel.com> <20190110205538.24435-2-gage.eads@intel.com> From: Andrew Rybchenko Message-ID: Date: Sun, 13 Jan 2019 15:18:42 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <20190110205538.24435-2-gage.eads@intel.com> Content-Language: en-GB X-Originating-IP: [91.220.146.112] X-ClientProxiedBy: ocex03.SolarFlarecom.com (10.20.40.36) To ukex01.SolarFlarecom.com (10.17.10.4) X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.5.1010-24360.003 X-TM-AS-Result: No-12.769500-8.000000-10 X-TMASE-MatchedRID: L8tZF6zWW2r1Dewoh2WPYya1MaKuob8PC/ExpXrHizy7iyvTWcaOCYCu qghmtWfXQOro6Hn0XNBtHCT8idKS15Hf3nwSOjgJws9cphnKwlHt/okBLaEo+H/TCpmSpzol5et Yh7sfkXvRRwfvHPOMKLrPw9YmjlIgNuVzoZ6LieUiPTMUjkOgkl4KsHfYo5LQowtRP8whCK8K8T ry7xT2TxHh35S+GXSq/VWmtOMs6xGwquY0kEgdZ506nVOMOuVpHAwy0XhreD35lA8aRaIEF6PFj JEFr+olA9Mriq0CDAgBi3kqJOK62XnN0DN7HnFm6GwPK6DEEAiImIQDjsTHVvRvZq3N+eKen17c z9wWulnubcfQnG0MlNCq6CcjXA9p5Jqyx9P/o4hGsaOP8hl2RLvRQYofER/oftwZ3X11IV0= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--12.769500-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.5.1010-24360.003 X-MDID: 1547381932-jEceTodG0K_Y Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH 1/3] eal: add 128-bit cmpset (x86-64 only) 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: , X-List-Received-Date: Sun, 13 Jan 2019 12:18:54 -0000 On 1/10/19 11:55 PM, Gage Eads wrote: > This operation can be used for non-blocking algorithms, such as a > non-blocking stack or ring. > > Signed-off-by: Gage Eads > --- > .../common/include/arch/x86/rte_atomic_64.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/lib/librte_eal/common/include/arch/x86/rte_atomic_64.h b/lib/librte_eal/common/include/arch/x86/rte_atomic_64.h > index fd2ec9c53..34c2addf8 100644 > --- a/lib/librte_eal/common/include/arch/x86/rte_atomic_64.h > +++ b/lib/librte_eal/common/include/arch/x86/rte_atomic_64.h > @@ -34,6 +34,7 @@ > /* > * Inspired from FreeBSD src/sys/amd64/include/atomic.h > * Copyright (c) 1998 Doug Rabson > + * Copyright (c) 2019 Intel Corporation > * All rights reserved. > */ > > @@ -208,4 +209,25 @@ static inline void rte_atomic64_clear(rte_atomic64_t *v) > } > #endif > > +static inline int > +rte_atomic128_cmpset(volatile uint64_t *dst, uint64_t *exp, uint64_t *src) > +{ > + uint8_t res; > + > + asm volatile ( > + MPLOCKED > + "cmpxchg16b %[dst];" > + " sete %[res]" > + : [dst] "=m" (*dst), > + [res] "=r" (res) > + : "c" (src[1]), > + "b" (src[0]), > + "m" (*dst), > + "d" (exp[1]), > + "a" (exp[0]) > + : "memory"); > + > + return res; > +} > + > #endif /* _RTE_ATOMIC_X86_64_ Is it OK to add it to rte_atomic_64.h header which is for 64-bit integer ops? Andrew. > H_ */