From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1D75AC2BA2B for ; Thu, 16 Apr 2020 22:02:03 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D485921973 for ; Thu, 16 Apr 2020 22:02:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="tNL7iD41" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D485921973 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 1682C8E00EE; Thu, 16 Apr 2020 18:01:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0F2118E00EF; Thu, 16 Apr 2020 18:01:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E343A8E00EE; Thu, 16 Apr 2020 18:01:39 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0182.hostedemail.com [216.40.44.182]) by kanga.kvack.org (Postfix) with ESMTP id C45658E00E7 for ; Thu, 16 Apr 2020 18:01:39 -0400 (EDT) Received: from smtpin29.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 81B7E824556B for ; Thu, 16 Apr 2020 22:01:39 +0000 (UTC) X-FDA: 76715090718.29.trick10_48a983ca7d102 X-HE-Tag: trick10_48a983ca7d102 X-Filterd-Recvd-Size: 3765 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf20.hostedemail.com (Postfix) with ESMTP for ; Thu, 16 Apr 2020 22:01:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=aO1fN0fbVh2ayP7yJD7ISd8Eo2lcaZKKQzdebmXo4PQ=; b=tNL7iD41PJak5MbgEcMKlUs8sM HkQ4N6Xn7iLsZU9wAUE9FCT3x8Odr3rQIFtinuDh3Xfjy2rGZ3T+6N+ZrT8hthLKgq0+DcPvx8dVf Jlcpqse1/0M9oOMB5M0C85RIy//qrSW2uzNCVdXJ7p9bJGcFzVyyT5WAj9oVzuIpy+OQLD8eLx0yR 3YnWsUnT7lfQmYe7+X6nRWQ+ueUygPi8RAJhiFYZE9pssSwBBj++J/N2/1KX4EY2TqbVmT4CCha1b LmG7YrdMNVCyCQIg9c8OYvX0fLdnAzFGz1XuWf3iu3hlqQCPjCMWgEFpqKyV+Vqt5NqHIEfFM0H2T FIK8R5Ig==; Received: from willy by bombadil.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1jPCZg-0003UB-Da; Thu, 16 Apr 2020 22:01:32 +0000 From: Matthew Wilcox To: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Cc: "Matthew Wilcox (Oracle)" , Richard Henderson , Ivan Kokshaysky , Matt Turner , linux-alpha@vger.kernel.org Subject: [PATCH v3 01/11] alpha: Add clear_bit_unlock_is_negative_byte implementation Date: Thu, 16 Apr 2020 15:01:20 -0700 Message-Id: <20200416220130.13343-2-willy@infradead.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200416220130.13343-1-willy@infradead.org> References: <20200416220130.13343-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: "Matthew Wilcox (Oracle)" Copy and paste the clear_bit_unlock() implementation, and test the temp variable to see if it has bit 7 set. Saves two instructions: a load and a compare: 860: 01 31 20 44 andnot t0,0x1,t0 864: 00 00 30 b8 stl_c t0,0(a0) 868: 67 1b 20 e4 beq t0,7608 - 86c: 00 00 30 a0 ldl t0,0(a0) - 870: 01 10 30 44 and t0,0x80,t0 - 874: a1 03 e1 43 cmpult zero,t0,t0 - 878: 01 00 20 f4 bne t0,880 - 87c: 01 80 fa 6b ret + 86c: 01 10 30 44 and t0,0x80,t0 + 870: 03 00 20 f4 bne t0,880 + 874: 01 80 fa 6b ret Signed-off-by: Matthew Wilcox (Oracle) Cc: Richard Henderson Cc: Ivan Kokshaysky Cc: Matt Turner Cc: linux-alpha@vger.kernel.org --- arch/alpha/include/asm/bitops.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/arch/alpha/include/asm/bitops.h b/arch/alpha/include/asm/bit= ops.h index 5adca78830b5..f9af2401bd23 100644 --- a/arch/alpha/include/asm/bitops.h +++ b/arch/alpha/include/asm/bitops.h @@ -79,6 +79,29 @@ clear_bit_unlock(unsigned long nr, volatile void * add= r) clear_bit(nr, addr); } =20 +static inline bool clear_bit_unlock_is_negative_byte(unsigned int nr, + volatile unsigned long *p) +{ + unsigned long temp; + int *m =3D ((int *)p) + (nr >> 5); + + smp_mb(); + __asm__ __volatile__( + "1: ldl_l %0,%3\n" + " bic %0,%2,%0\n" + " stl_c %0,%1\n" + " beq %0,2f\n" + ".subsection 2\n" + "2: br 1b\n" + ".previous" + :"=3D&r" (temp), "=3Dm" (*m) + :"Ir" (1UL << (nr & 31)), "m" (*m)); + + return temp & 128; +} +#define clear_bit_unlock_is_negative_byte \ + clear_bit_unlock_is_negative_byte + /* * WARNING: non atomic version. */ --=20 2.25.1