From patchwork Tue Mar 21 06:34:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leonardo Bras Soares Passos X-Patchwork-Id: 72720 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1626541wrt; Tue, 21 Mar 2023 00:01:51 -0700 (PDT) X-Google-Smtp-Source: AK7set+ul28k3QlaGtMGHaIfv6pz1fraebxmfo4aj828b3DdtMR5Oud+5gCnmfnUDGZs7qsOzkwG X-Received: by 2002:a17:903:27c4:b0:1a1:ad71:7403 with SMTP id km4-20020a17090327c400b001a1ad717403mr1140026plb.33.1679382111477; Tue, 21 Mar 2023 00:01:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679382111; cv=none; d=google.com; s=arc-20160816; b=Xw5IKWDoiT0wvA7khhjF4YpoVyLTHQOUIilZkRZsT3mvjelbWWidnfH7FW2ETa9lKD ZM5sY+TUjomBSo49Ftp+i0XAMJ54RttK5PyxA+lF5crf3MCEPr4YwviQsvkHUDTRzG12 0RSYG6o5jbCqumV2UiX2XY8rU8WRQrC7l2I/SDFaM/NVZECXTD2If7JdMsCoqnP/xGSb n735FFSplh3FUVYMqFXRZmrn8E9idO6Z3G89ruLuMLs44LUZFlVY6CKPcyrpdt/INlU9 +rQPMYM1YGY0JwizgBWS1ne/NFg1I/O7xFuYOzKxg3QB6XEeFprLqEa8ofYhXNhFBrDW GM+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=tlcmKFBm9EfeLOX/A4Ek+TTZZd7OjXZ+kA7z9b9Tay8=; b=MG5zw786Xm/nueSRrXZu3n7QilMOthUNlFSjo5EZnvq4UfBpLYPclz4JCeie7i6ZD8 TEhOT90Y8rI2xzVa1TfYJmDva2eEDlAegY1Z1o0Nkge1EuQp+R6hiV/RDSFSNOsTFwRv TuDlgPthov9cefQN7O/VZlEaGYEjJChs8vsU3+cC+6mc3zts5e8ql39D7Uacwl3FXQ6e BGHpJCRJAvgD/1D80RBuF2oJcRp77SHlQqe5kozCr0aEHV4CFzWpxMqlVqO8jT/Q/FoZ FFkhDzXmf5pXiCo2TpNkO0ZXHUEiK1oOVJbdOMan4rJY2w5EFd3/hhOwrkeDv2ItMj0H iBOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Xyg1avX6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h7-20020a170902b94700b001a1809e22c2si12059118pls.435.2023.03.21.00.01.15; Tue, 21 Mar 2023 00:01:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Xyg1avX6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230353AbjCUGgn (ORCPT + 99 others); Tue, 21 Mar 2023 02:36:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230327AbjCUGgi (ORCPT ); Tue, 21 Mar 2023 02:36:38 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 11EAA3B85C for ; Mon, 20 Mar 2023 23:35:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679380528; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tlcmKFBm9EfeLOX/A4Ek+TTZZd7OjXZ+kA7z9b9Tay8=; b=Xyg1avX62sTLnt4ZtsX27ok177kZnMQPdX1tMbow9isdbLzRdw71rZoS2x2/ASfImrqxrN 4OBh5AFblJqRn1d9Go5Kqsqkq58AhrwB2dIyBrwGPQi/EJRQZ3HTgS1uQC5DKVPTt4Khbn FHIgb5QrKR3ZG9zvDSJ79U4I/GW4vbw= Received: from mail-ot1-f70.google.com (mail-ot1-f70.google.com [209.85.210.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-665--RKgjSXMNWq3KZ8UyX6bRw-1; Tue, 21 Mar 2023 02:35:27 -0400 X-MC-Unique: -RKgjSXMNWq3KZ8UyX6bRw-1 Received: by mail-ot1-f70.google.com with SMTP id p28-20020a0568301d5c00b0069f851af0aaso466901oth.22 for ; Mon, 20 Mar 2023 23:35:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679380526; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tlcmKFBm9EfeLOX/A4Ek+TTZZd7OjXZ+kA7z9b9Tay8=; b=HA2wkDpmYfAqNiDYAEdpfZcva/Uxdsno6sRtdNlCZc541VGlilOaiQt2Le56VaWCkY v7iABDOncRlFSuz5embpQXqQu73zqByK1ZU3Ey3066/N0fPqXeJRYYkfF/CdDJmNXpmp q1OTDqeJJB3h6JyPxxNWxJpM9ri7A/wSIYjps/tjlphKadWvEjQkazxrSZpJgzidldjK r/PhPEMbPig9m8gzSwI2f+zbTo5OS3tX+fSHlf64aGOuOgdP7cW+mDDs6R/YCou8QGZu vNdhikBQBZPyVxknFXAmLj0kecgpdOUrPqYFgsPUGrTaxGrq3J+fFT0xjmGq9TdPvbEe kLIg== X-Gm-Message-State: AO0yUKXCqf72vq4ePYZWCL8FvmcxQfT/RUFYx+rrfONWbUnd2JuinJsj SBUtwn6iR5V4fnOIRIXTu2UbrasHpgPWcrdw2L8j1R8OvqH6/3SFKdrAj2YLP5RNDO2NxK8WnMa tsNIBTySw9fjc9CG/3k+SZvTb8t7HqMJBL6Y= X-Received: by 2002:a9d:6ad0:0:b0:69f:d2:4ff9 with SMTP id m16-20020a9d6ad0000000b0069f00d24ff9mr658172otq.34.1679380525851; Mon, 20 Mar 2023 23:35:25 -0700 (PDT) X-Received: by 2002:a9d:6ad0:0:b0:69f:d2:4ff9 with SMTP id m16-20020a9d6ad0000000b0069f00d24ff9mr658162otq.34.1679380525642; Mon, 20 Mar 2023 23:35:25 -0700 (PDT) Received: from localhost.localdomain ([2804:1b3:a801:b074:274d:d04e:badc:c89f]) by smtp.gmail.com with ESMTPSA id y75-20020a4a454e000000b005293e9a12f5sm4545147ooa.45.2023.03.20.23.35.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 23:35:25 -0700 (PDT) From: Leonardo Bras To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Leonardo Bras , Guo Ren Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH v2 5/6] riscv/cmpxchg: Deduplicate xchg() macros Date: Tue, 21 Mar 2023 03:34:31 -0300 Message-Id: <20230321063430.2218795-6-leobras@redhat.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230321063430.2218795-1-leobras@redhat.com> References: <20230321063430.2218795-1-leobras@redhat.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760959776686741010?= X-GMAIL-MSGID: =?utf-8?q?1760959776686741010?= Every xchg define (_relaxed, _acquire, _release, vanilla) contain it's own define for creating tmp variables and selecting the correct asm code for given variable size. All those defines are mostly the same code (other than specific barriers), so there is no need to keep the 4 copies. Unify those under a more general define, that can reproduce the previous 4 versions. (This did not cause any change in generated asm) Signed-off-by: Leonardo Bras --- arch/riscv/include/asm/cmpxchg.h | 62 ++++++-------------------------- 1 file changed, 10 insertions(+), 52 deletions(-) diff --git a/arch/riscv/include/asm/cmpxchg.h b/arch/riscv/include/asm/cmpxchg.h index 715bf61e72c82..23da4d8e6f0c8 100644 --- a/arch/riscv/include/asm/cmpxchg.h +++ b/arch/riscv/include/asm/cmpxchg.h @@ -11,7 +11,7 @@ #include #include -#define ___xchg(sfx, prepend, append) \ +#define ____xchg(sfx, prepend, append) \ ({ \ __asm__ __volatile__ ( \ prepend \ @@ -22,17 +22,17 @@ : "memory"); \ }) -#define __xchg_relaxed(ptr, new, size) \ +#define ___xchg(ptr, new, size, sfx, prepend, append) \ ({ \ __typeof__(ptr) __ptr = (ptr); \ __typeof__(new) __new = (new); \ __typeof__(*(ptr)) __ret; \ switch (size) { \ case 4: \ - ___xchg(".w", "", ""); \ + ____xchg(".w" sfx, prepend, append); \ break; \ case 8: \ - ___xchg(".d", "", ""); \ + ____xchg(".d" sfx, prepend, append); \ break; \ default: \ BUILD_BUG(); \ @@ -40,6 +40,9 @@ __ret; \ }) +#define __xchg_relaxed(ptr, new, size) \ + ___xchg(ptr, new, size, "", "", "") + #define arch_xchg_relaxed(ptr, x) \ ({ \ __typeof__(*(ptr)) _x_ = (x); \ @@ -48,22 +51,7 @@ }) #define __xchg_acquire(ptr, new, size) \ -({ \ - __typeof__(ptr) __ptr = (ptr); \ - __typeof__(new) __new = (new); \ - __typeof__(*(ptr)) __ret; \ - switch (size) { \ - case 4: \ - ___xchg(".w", "", RISCV_ACQUIRE_BARRIER); \ - break; \ - case 8: \ - ___xchg(".d", "", RISCV_ACQUIRE_BARRIER); \ - break; \ - default: \ - BUILD_BUG(); \ - } \ - __ret; \ -}) + ___xchg(ptr, new, size, "", "", RISCV_ACQUIRE_BARRIER) #define arch_xchg_acquire(ptr, x) \ ({ \ @@ -73,22 +61,7 @@ }) #define __xchg_release(ptr, new, size) \ -({ \ - __typeof__(ptr) __ptr = (ptr); \ - __typeof__(new) __new = (new); \ - __typeof__(*(ptr)) __ret; \ - switch (size) { \ - case 4: \ - ___xchg(".w", RISCV_RELEASE_BARRIER, ""); \ - break; \ - case 8: \ - ___xchg(".d", RISCV_RELEASE_BARRIER, ""); \ - break; \ - default: \ - BUILD_BUG(); \ - } \ - __ret; \ -}) + ___xchg(ptr, new, size, "", RISCV_RELEASE_BARRIER, "") #define arch_xchg_release(ptr, x) \ ({ \ @@ -98,22 +71,7 @@ }) #define __xchg(ptr, new, size) \ -({ \ - __typeof__(ptr) __ptr = (ptr); \ - __typeof__(new) __new = (new); \ - __typeof__(*(ptr)) __ret; \ - switch (size) { \ - case 4: \ - ___xchg(".w.aqrl", "", ""); \ - break; \ - case 8: \ - ___xchg(".d.aqrl", "", ""); \ - break; \ - default: \ - BUILD_BUG(); \ - } \ - __ret; \ -}) + ___xchg(ptr, new, size, ".aqrl", "", "") #define arch_xchg(ptr, x) \ ({ \