Received: by 2002:ab2:1149:0:b0:1f3:1f8c:d0c6 with SMTP id z9csp1841788lqz; Mon, 1 Apr 2024 21:28:33 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXFmVmS29QPuHUeAWd1jPW1ZjTQTcgSUNLnzhAlxpKKUVS/yUFmAs++jwrix8ut214xOi/+dJ1xsyXgcRE86wzuYtqdugZOZSM+G9MiAQ== X-Google-Smtp-Source: AGHT+IGE43gEaz3/J9jra4IrfWDoszpQB1EHPQXRpou2XG+mnnzYjMPFphKh04T3BdP5HDdexWgu X-Received: by 2002:a05:6214:1c86:b0:696:89ae:9f57 with SMTP id ib6-20020a0562141c8600b0069689ae9f57mr27280691qvb.25.1712032113001; Mon, 01 Apr 2024 21:28:33 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712032112; cv=pass; d=google.com; s=arc-20160816; b=WtDCplCaVyq29vMqrldqW2aMZa+pzW/uAWGTmHg28pJXTtauaZfFIqYkVE7FZIYtjE 1n6h4767/rkxBV6p53CzUVbtT86Tlu3jBLDVejVc59XMKV2hxHPEVT2jv5VVD5a7oW4J 3NlYxlBbinl1hEtucRIX0S8kzut+XrEM+m8OlNtFgmC7ppvWyCkv+DYHHEkFqvoMRyBs Kz8/FjR+dtVKSQ+/rgL6mDw5f6FYq64wKUzdM1BjANj50Nl3inqqMs7tdKA7GALfMfNF Zv/GP755BnJQloBuOB4J3PfKPrLQxIxGBdU1uZlZtWNm8UhRks2rB99vv4bKezWtYLCN kAvQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=sFHPvVoPy1R5t/uFQRIzo0mXrybzkbjh+vjfHgd/BIY=; fh=5XKO4FJFa744F7hHLL6pG6MPZgtIgKlwP2n1WruVqgQ=; b=oK8KjDmUGRjlm2ATghcsPRuUX8YdGTIfw90m4otv7jlFbf26PF0ENtao6ongvLzXA8 XvmNstUtLFoRjHAP628BA7XO0iSv7c4naOMOtPsSN81ouy1uJogrhlbWQSqNY/75hlal KV4lWGQ5wd+qOpYdeQ5wUec4+AQN3qW3MzXorA1dCLz7TR9FeHRn79YonrVx2FqoWfbJ /D6TdhYViGkKZ2gkWFyC3B5zohBoEumqFgdt4Db4P8eZ2Sd5w/25+B8ST947tmjIlREa +QMky671HaJDb9Ynx8Nx1B19IVDyIsZzLLGC+/d7wi4bRZWQ4+98HzEih9XSzbS+n2Dp HSTQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-127379-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-127379-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zeniv.linux.org.uk Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id g27-20020a0caadb000000b00699197d0a36si548293qvb.183.2024.04.01.21.28.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Apr 2024 21:28:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-127379-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-127379-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-127379-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zeniv.linux.org.uk Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id AB89A1C2208A for ; Tue, 2 Apr 2024 04:28:32 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D1EBB2BB1E; Tue, 2 Apr 2024 04:27:16 +0000 (UTC) Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 599A929421 for ; Tue, 2 Apr 2024 04:27:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712032036; cv=none; b=NanGtBgyHLYWY4DTz9qZ+S0g1/bqO0cLk8BHMoQD8tlO7uLt8RutUXylFqJOhoPhv9A3hlHrRz2lREjp14sNvHTzrI5pkdxKtpCR69Cj4vLXrDvCEebTMrsB/jCMzK3GR2VGkLJNJctd1MpAnIJvnQYL/dRJrUYB3RCWDx9S7/8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712032036; c=relaxed/simple; bh=eO8Ldq5bVBT1ZWhJzdjOelO13j/YRq1I97V1Ay9Buzo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Y8/8orS2wLDRMjXV4lV2UAXdCxxSeQXRHjEepVnydbrDYfGfGpgogyxSGI9fY4KN4Cbffav40OdWvCk5lQDHYK1Tb68KjQeKxH3ZZkXujUfE8Bq971jTcRd3ZniFA/aVIxejGmD1tPqrey8G/zFZRJBO/cc+uZA+IdwGSd+pdKA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45495C433F1; Tue, 2 Apr 2024 04:27:15 +0000 (UTC) From: Al Viro To: "Paul E. McKenney" Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, "David S. Miller" , Andreas Larsson , Palmer Dabbelt , Arnd Bergmann , Marco Elver Subject: [PATCH 8/8] parisc: add u16 support to cmpxchg() Date: Tue, 2 Apr 2024 00:28:35 -0400 Message-Id: <20240402042835.11815-8-viro@zeniv.linux.org.uk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240402042835.11815-1-viro@zeniv.linux.org.uk> References: <20240402041138.GF538574@ZenIV> <20240402042835.11815-1-viro@zeniv.linux.org.uk> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Add (and export) __cmpxchg_u16(), teach __cmpxchg() to use it. And get rid of the casts of {old,new_} in __cmpxchg() - __cmpxchg_u...() has those arguments declared as u and conversion from unsigned long to those is automatic. Signed-off-by: Al Viro --- arch/parisc/include/asm/cmpxchg.h | 13 +++++++------ arch/parisc/kernel/parisc_ksyms.c | 1 + arch/parisc/lib/bitops.c | 1 + 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/arch/parisc/include/asm/cmpxchg.h b/arch/parisc/include/asm/cmpxchg.h index 0924ebc576d2..1a0eec8c91f5 100644 --- a/arch/parisc/include/asm/cmpxchg.h +++ b/arch/parisc/include/asm/cmpxchg.h @@ -56,10 +56,11 @@ __arch_xchg(unsigned long x, volatile void *ptr, int size) /* bug catcher for when unsupported size is used - won't link */ extern void __cmpxchg_called_with_bad_pointer(void); -/* __cmpxchg_u32/u64 defined in arch/parisc/lib/bitops.c */ +/* __cmpxchg_u... defined in arch/parisc/lib/bitops.c */ +extern u8 __cmpxchg_u8(volatile u8 *ptr, u8 old, u8 new_); +extern u16 __cmpxchg_u16(volatile u16 *ptr, u16 old, u16 new_); extern u32 __cmpxchg_u32(volatile u32 *m, u32 old, u32 new_); extern u64 __cmpxchg_u64(volatile u64 *ptr, u64 old, u64 new_); -extern u8 __cmpxchg_u8(volatile u8 *ptr, u8 old, u8 new_); /* don't worry...optimizer will get rid of most of this */ static inline unsigned long @@ -67,11 +68,11 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size) { switch (size) { #ifdef CONFIG_64BIT - case 8: return __cmpxchg_u64((u64 *)ptr, old, new_); + case 8: return __cmpxchg_u64((volatile u64 *)ptr, old, new_); #endif - case 4: return __cmpxchg_u32((unsigned int *)ptr, - (unsigned int)old, (unsigned int)new_); - case 1: return __cmpxchg_u8((u8 *)ptr, old & 0xff, new_ & 0xff); + case 4: return __cmpxchg_u32((volatile u32 *)ptr, old, new_); + case 2: return __cmpxchg_u16((volatile u16 *)ptr, old, new_); + case 1: return __cmpxchg_u8((volatile u8 *)ptr, old, new_); } __cmpxchg_called_with_bad_pointer(); return old; diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c index dcf61cbd3147..c1587aa35beb 100644 --- a/arch/parisc/kernel/parisc_ksyms.c +++ b/arch/parisc/kernel/parisc_ksyms.c @@ -23,6 +23,7 @@ EXPORT_SYMBOL(memset); EXPORT_SYMBOL(__xchg8); EXPORT_SYMBOL(__xchg32); EXPORT_SYMBOL(__cmpxchg_u8); +EXPORT_SYMBOL(__cmpxchg_u16); EXPORT_SYMBOL(__cmpxchg_u32); EXPORT_SYMBOL(__cmpxchg_u64); #ifdef CONFIG_SMP diff --git a/arch/parisc/lib/bitops.c b/arch/parisc/lib/bitops.c index cae30a3eb6d9..9df810050642 100644 --- a/arch/parisc/lib/bitops.c +++ b/arch/parisc/lib/bitops.c @@ -71,4 +71,5 @@ unsigned long notrace __xchg8(char x, volatile char *ptr) CMPXCHG(u64) CMPXCHG(u32) +CMPXCHG(u16) CMPXCHG(u8) -- 2.39.2