All of lore.kernel.org
 help / color / mirror / Atom feed
From: Akinobu Mita <mita@miraclelinux.com>
To: linux-kernel@vger.kernel.org
Cc: parisc-linux@parisc-linux.org, Akinobu Mita <mita@miraclelinux.com>
Subject: [patch 30/44] parisc: use generic bitops
Date: Wed, 01 Feb 2006 18:02:54 +0900	[thread overview]
Message-ID: <20060201090333.395732000@localhost.localdomain> (raw)
In-Reply-To: 20060201090224.536581000@localhost.localdomain

[-- Attachment #1: parisc.patch --]
[-- Type: text/plain, Size: 10621 bytes --]

- remove __{,test_and_}{set,clear,change}_bit() and test_bit()
- remove ffz()
- remove generic_fls64()
- remove generic_hweight{32,16,8}()
- remove generic_hweight64()
- remove sched_find_first_bit()
- remove find_{next,first}{,_zero}_bit()
- remove ext2_{set,clear,test,find_first_zero,find_next_zero}_bit()

Signed-off-by: Akinobu Mita <mita@miraclelinux.com>
 include/asm-parisc/bitops.h |  286 +-------------------------------------------
 1 files changed, 9 insertions(+), 277 deletions(-)

Index: 2.6-git/include/asm-parisc/bitops.h
===================================================================
--- 2.6-git.orig/include/asm-parisc/bitops.h
+++ 2.6-git/include/asm-parisc/bitops.h
@@ -35,13 +35,6 @@ static __inline__ void set_bit(int nr, v
 	_atomic_spin_unlock_irqrestore(addr, flags);
 }
 
-static __inline__ void __set_bit(unsigned long nr, volatile unsigned long * addr)
-{
-	unsigned long *m = (unsigned long *) addr + (nr >> SHIFT_PER_LONG);
-
-	*m |= 1UL << CHOP_SHIFTCOUNT(nr);
-}
-
 static __inline__ void clear_bit(int nr, volatile unsigned long * addr)
 {
 	unsigned long mask = ~(1UL << CHOP_SHIFTCOUNT(nr));
@@ -53,13 +46,6 @@ static __inline__ void clear_bit(int nr,
 	_atomic_spin_unlock_irqrestore(addr, flags);
 }
 
-static __inline__ void __clear_bit(unsigned long nr, volatile unsigned long * addr)
-{
-	unsigned long *m = (unsigned long *) addr + (nr >> SHIFT_PER_LONG);
-
-	*m &= ~(1UL << CHOP_SHIFTCOUNT(nr));
-}
-
 static __inline__ void change_bit(int nr, volatile unsigned long * addr)
 {
 	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
@@ -71,13 +57,6 @@ static __inline__ void change_bit(int nr
 	_atomic_spin_unlock_irqrestore(addr, flags);
 }
 
-static __inline__ void __change_bit(unsigned long nr, volatile unsigned long * addr)
-{
-	unsigned long *m = (unsigned long *) addr + (nr >> SHIFT_PER_LONG);
-
-	*m ^= 1UL << CHOP_SHIFTCOUNT(nr);
-}
-
 static __inline__ int test_and_set_bit(int nr, volatile unsigned long * addr)
 {
 	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
@@ -93,18 +72,6 @@ static __inline__ int test_and_set_bit(i
 	return (oldbit & mask) ? 1 : 0;
 }
 
-static __inline__ int __test_and_set_bit(int nr, volatile unsigned long * address)
-{
-	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-	unsigned long oldbit;
-	unsigned long *addr = (unsigned long *)address + (nr >> SHIFT_PER_LONG);
-
-	oldbit = *addr;
-	*addr = oldbit | mask;
-
-	return (oldbit & mask) ? 1 : 0;
-}
-
 static __inline__ int test_and_clear_bit(int nr, volatile unsigned long * addr)
 {
 	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
@@ -120,18 +87,6 @@ static __inline__ int test_and_clear_bit
 	return (oldbit & mask) ? 1 : 0;
 }
 
-static __inline__ int __test_and_clear_bit(int nr, volatile unsigned long * address)
-{
-	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-	unsigned long *addr = (unsigned long *)address + (nr >> SHIFT_PER_LONG);
-	unsigned long oldbit;
-
-	oldbit = *addr;
-	*addr = oldbit & ~mask;
-
-	return (oldbit & mask) ? 1 : 0;
-}
-
 static __inline__ int test_and_change_bit(int nr, volatile unsigned long * addr)
 {
 	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
@@ -147,25 +102,7 @@ static __inline__ int test_and_change_bi
 	return (oldbit & mask) ? 1 : 0;
 }
 
-static __inline__ int __test_and_change_bit(int nr, volatile unsigned long * address)
-{
-	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-	unsigned long *addr = (unsigned long *)address + (nr >> SHIFT_PER_LONG);
-	unsigned long oldbit;
-
-	oldbit = *addr;
-	*addr = oldbit ^ mask;
-
-	return (oldbit & mask) ? 1 : 0;
-}
-
-static __inline__ int test_bit(int nr, const volatile unsigned long *address)
-{
-	unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr);
-	const unsigned long *addr = (const unsigned long *)address + (nr >> SHIFT_PER_LONG);
-	
-	return !!(*addr & mask);
-}
+#include <asm-generic/bitops/non-atomic.h>
 
 #ifdef __KERNEL__
 
@@ -219,8 +156,7 @@ static __inline__ unsigned long __ffs(un
 	return ret;
 }
 
-/* Undefined if no bit is zero. */
-#define ffz(x)	__ffs(~(x))
+#include <asm-generic/bitops/ffz.h>
 
 /*
  * ffs: find first bit set. returns 1 to BITS_PER_LONG or 0 (if none set)
@@ -263,155 +199,22 @@ static __inline__ int fls(int x)
 
 	return ret;
 }
-#define fls64(x)   generic_fls64(x)
 
-/*
- * hweightN: returns the hamming weight (i.e. the number
- * of bits set) of a N-bit word
- */
-#define hweight64(x) generic_hweight64(x)
-#define hweight32(x) generic_hweight32(x)
-#define hweight16(x) generic_hweight16(x)
-#define hweight8(x) generic_hweight8(x)
-
-/*
- * Every architecture must define this function. It's the fastest
- * way of searching a 140-bit bitmap where the first 100 bits are
- * unlikely to be set. It's guaranteed that at least one of the 140
- * bits is cleared.
- */
-static inline int sched_find_first_bit(const unsigned long *b)
-{
-#ifdef __LP64__
-	if (unlikely(b[0]))
-		return __ffs(b[0]);
-	if (unlikely(b[1]))
-		return __ffs(b[1]) + 64;
-	return __ffs(b[2]) + 128;
-#else
-	if (unlikely(b[0]))
-		return __ffs(b[0]);
-	if (unlikely(b[1]))
-		return __ffs(b[1]) + 32;
-	if (unlikely(b[2]))
-		return __ffs(b[2]) + 64;
-	if (b[3])
-		return __ffs(b[3]) + 96;
-	return __ffs(b[4]) + 128;
-#endif
-}
+#include <asm-generic/bitops/fls64.h>
+#include <asm-generic/bitops/hweight.h>
+#include <asm-generic/bitops/sched.h>
 
 #endif /* __KERNEL__ */
 
-/*
- * This implementation of find_{first,next}_zero_bit was stolen from
- * Linus' asm-alpha/bitops.h.
- */
-#define find_first_zero_bit(addr, size) \
-	find_next_zero_bit((addr), (size), 0)
-
-static __inline__ unsigned long find_next_zero_bit(const void * addr, unsigned long size, unsigned long offset)
-{
-	const unsigned long * p = ((unsigned long *) addr) + (offset >> SHIFT_PER_LONG);
-	unsigned long result = offset & ~(BITS_PER_LONG-1);
-	unsigned long tmp;
-
-	if (offset >= size)
-		return size;
-	size -= result;
-	offset &= (BITS_PER_LONG-1);
-	if (offset) {
-		tmp = *(p++);
-		tmp |= ~0UL >> (BITS_PER_LONG-offset);
-		if (size < BITS_PER_LONG)
-			goto found_first;
-		if (~tmp)
-			goto found_middle;
-		size -= BITS_PER_LONG;
-		result += BITS_PER_LONG;
-	}
-	while (size & ~(BITS_PER_LONG -1)) {
-		if (~(tmp = *(p++)))
-			goto found_middle;
-		result += BITS_PER_LONG;
-		size -= BITS_PER_LONG;
-	}
-	if (!size)
-		return result;
-	tmp = *p;
-found_first:
-	tmp |= ~0UL << size;
-found_middle:
-	return result + ffz(tmp);
-}
-
-static __inline__ unsigned long find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset)
-{
-	const unsigned long *p = addr + (offset >> SHIFT_PER_LONG);
-	unsigned long result = offset & ~(BITS_PER_LONG-1);
-	unsigned long tmp;
-
-	if (offset >= size)
-		return size;
-	size -= result;
-	offset &= (BITS_PER_LONG-1);
-	if (offset) {
-		tmp = *(p++);
-		tmp &= (~0UL << offset);
-		if (size < BITS_PER_LONG)
-			goto found_first;
-		if (tmp)
-			goto found_middle;
-		size -= BITS_PER_LONG;
-		result += BITS_PER_LONG;
-	}
-	while (size & ~(BITS_PER_LONG-1)) {
-		if ((tmp = *(p++)))
-			goto found_middle;
-		result += BITS_PER_LONG;
-		size -= BITS_PER_LONG;
-	}
-	if (!size)
-		return result;
-	tmp = *p;
-
-found_first:
-	tmp &= (~0UL >> (BITS_PER_LONG - size));
-	if (tmp == 0UL)        /* Are any bits set? */
-		return result + size; /* Nope. */
-found_middle:
-	return result + __ffs(tmp);
-}
-
-/**
- * find_first_bit - find the first set bit in a memory region
- * @addr: The address to start the search at
- * @size: The maximum size to search
- *
- * Returns the bit-number of the first set bit, not the number of the byte
- * containing a bit.
- */
-#define find_first_bit(addr, size) \
-        find_next_bit((addr), (size), 0)
-
-#define _EXT2_HAVE_ASM_BITOPS_
+#include <asm-generic/bitops/find.h>
 
 #ifdef __KERNEL__
-/*
- * test_and_{set,clear}_bit guarantee atomicity without
- * disabling interrupts.
- */
+
+#include <asm-generic/bitops/ext2-non-atomic.h>
 
 /* '3' is bits per byte */
 #define LE_BYTE_ADDR ((sizeof(unsigned long) - 1) << 3)
 
-#define ext2_test_bit(nr, addr) \
-			test_bit((nr)	^ LE_BYTE_ADDR, (unsigned long *)addr)
-#define ext2_set_bit(nr, addr)	\
-		__test_and_set_bit((nr) ^ LE_BYTE_ADDR, (unsigned long *)addr)
-#define ext2_clear_bit(nr, addr) \
-		__test_and_clear_bit((nr) ^ LE_BYTE_ADDR, (unsigned long *)addr)
-
 #define ext2_set_bit_atomic(l,nr,addr) \
 		test_and_set_bit((nr)   ^ LE_BYTE_ADDR, (unsigned long *)addr)
 #define ext2_clear_bit_atomic(l,nr,addr) \
@@ -419,77 +222,6 @@ found_middle:
 
 #endif	/* __KERNEL__ */
 
-
-#define ext2_find_first_zero_bit(addr, size) \
-	ext2_find_next_zero_bit((addr), (size), 0)
-
-/* include/linux/byteorder does not support "unsigned long" type */
-static inline unsigned long ext2_swabp(unsigned long * x)
-{
-#ifdef __LP64__
-	return (unsigned long) __swab64p((u64 *) x);
-#else
-	return (unsigned long) __swab32p((u32 *) x);
-#endif
-}
-
-/* include/linux/byteorder doesn't support "unsigned long" type */
-static inline unsigned long ext2_swab(unsigned long y)
-{
-#ifdef __LP64__
-	return (unsigned long) __swab64((u64) y);
-#else
-	return (unsigned long) __swab32((u32) y);
-#endif
-}
-
-static __inline__ unsigned long ext2_find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
-{
-	unsigned long *p = (unsigned long *) addr + (offset >> SHIFT_PER_LONG);
-	unsigned long result = offset & ~(BITS_PER_LONG - 1);
-	unsigned long tmp;
-
-	if (offset >= size)
-		return size;
-	size -= result;
-	offset &= (BITS_PER_LONG - 1UL);
-	if (offset) {
-		tmp = ext2_swabp(p++);
-		tmp |= (~0UL >> (BITS_PER_LONG - offset));
-		if (size < BITS_PER_LONG)
-			goto found_first;
-		if (~tmp)
-			goto found_middle;
-		size -= BITS_PER_LONG;
-		result += BITS_PER_LONG;
-	}
-
-	while (size & ~(BITS_PER_LONG - 1)) {
-		if (~(tmp = *(p++)))
-			goto found_middle_swap;
-		result += BITS_PER_LONG;
-		size -= BITS_PER_LONG;
-	}
-	if (!size)
-		return result;
-	tmp = ext2_swabp(p);
-found_first:
-	tmp |= ~0UL << size;
-	if (tmp == ~0UL)	/* Are any bits zero? */
-		return result + size; /* Nope. Skip ffz */
-found_middle:
-	return result + ffz(tmp);
-
-found_middle_swap:
-	return result + ffz(ext2_swab(tmp));
-}
-
-
-/* Bitmap functions for the minix filesystem.  */
-#define minix_test_and_set_bit(nr,addr) ext2_set_bit(nr,addr)
-#define minix_set_bit(nr,addr) ((void)ext2_set_bit(nr,addr))
-#define minix_test_and_clear_bit(nr,addr) ext2_clear_bit(nr,addr)
-#define minix_test_bit(nr,addr) ext2_test_bit(nr,addr)
-#define minix_find_first_zero_bit(addr,size) ext2_find_first_zero_bit(addr,size)
+#include <asm-generic/bitops/minix-le.h>
 
 #endif /* _PARISC_BITOPS_H */

--

  parent reply	other threads:[~2006-02-01  9:09 UTC|newest]

Thread overview: 145+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-01  9:02 [patch 00/44] generic bitops Akinobu Mita
2006-02-01  9:02 ` [patch 01/44] ia64: use cpu_set() instead of __set_bit() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 02/44] parisc: add ()-pair in __ffz() macro Akinobu Mita
2006-02-01  9:02 ` [patch 03/44] cris: remove unnecessary local_irq_restore() Akinobu Mita
2006-02-01  9:02 ` [patch 04/44] use non atomic operations for minix_*_bit() and ext2_*_bit() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 05/44] generic {,test_and_}{set,clear,change}_bit() Akinobu Mita
2006-02-03  9:55   ` Martin Waitz
2006-02-06 23:07     ` Russell King
2006-02-01  9:02 ` [patch 06/44] generic __{,test_and_}{set,clear,change}_bit() and test_bit() Akinobu Mita
2006-02-01  9:02   ` [patch 06/44] generic __{, test_and_}{set, clear, change}_bit() " Akinobu Mita
2006-02-01  9:02   ` [patch 06/44] generic __{,test_and_}{set,clear,change}_bit() " Akinobu Mita
2006-02-01  9:02 ` [patch 07/44] generic __ffs() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 08/44] generic ffz() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 09/44] generic fls() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 10/44] generic fls64() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-02 15:05   ` Rune Torgersen
2006-02-02 15:05     ` Rune Torgersen
2006-02-02 15:05     ` Rune Torgersen
2006-02-02 15:05     ` Rune Torgersen
2006-02-02 15:05     ` Rune Torgersen
2006-02-02 15:05     ` Rune Torgersen
2006-02-03  1:27     ` [PATCH] fix generic_fls64() Akinobu Mita
2006-02-03  1:27       ` Akinobu Mita
2006-02-03  1:27       ` Akinobu Mita
2006-02-03  1:27       ` Akinobu Mita
2006-02-03  1:27       ` Akinobu Mita
2006-02-01  9:02 ` [patch 11/44] generic find_{next,first}{,_zero}_bit() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-06 10:26   ` David Howells
2006-02-07  2:02     ` Akinobu Mita
2006-02-07  2:02       ` Akinobu Mita
2006-02-01  9:02 ` [patch 12/44] generic sched_find_first_bit() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-03  3:58   ` [parisc-linux] " Grant Grundler
2006-02-03  3:58     ` Grant Grundler
2006-02-03  3:58     ` Grant Grundler
2006-02-03  3:58     ` Grant Grundler
2006-02-03  3:58     ` Grant Grundler
2006-02-03  3:58   ` Grant Grundler
2006-02-01  9:02 ` [patch 13/44] generic ffs() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 14/44] generic hweight{64,32,16,8}() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:06   ` Andi Kleen
2006-02-01  9:06     ` Andi Kleen
2006-02-01  9:06     ` Andi Kleen
2006-02-01  9:06     ` Andi Kleen
2006-02-01  9:06     ` Andi Kleen
2006-02-01  9:26     ` Michael Tokarev
2006-02-01  9:26       ` Michael Tokarev
2006-02-01  9:26       ` Michael Tokarev
2006-02-01  9:26       ` Michael Tokarev
2006-02-01  9:26       ` Michael Tokarev
2006-02-01 10:24       ` Andi Kleen
2006-02-01 10:24         ` Andi Kleen
2006-02-01 10:24         ` Andi Kleen
2006-02-01 10:24         ` Andi Kleen
2006-02-01 10:24         ` Andi Kleen
2006-02-02 12:50         ` Akinobu Mita
2006-02-02 12:50           ` Akinobu Mita
2006-02-02 12:50           ` Akinobu Mita
2006-02-02 12:50           ` Akinobu Mita
2006-02-02 12:50           ` Akinobu Mita
2006-02-09  5:55           ` [PATCH] alpha: remove __alpha_cix__ and __alpha_fix__ Akinobu Mita
2006-02-09 19:12             ` Richard Henderson
2006-02-10  5:40               ` Akinobu Mita
2006-02-02  1:26   ` [patch 14/44] generic hweight{64,32,16,8}() Gabriel Paubert
2006-02-02  1:26     ` Gabriel Paubert
2006-02-02  1:26     ` Gabriel Paubert
2006-02-06 11:52     ` Akinobu Mita
2006-02-06 11:52       ` Akinobu Mita
2006-02-06 11:52       ` Akinobu Mita
2006-02-03  8:31   ` Ulrich Eckhardt
2006-02-03  8:31     ` Ulrich Eckhardt
2006-02-03  8:31     ` Ulrich Eckhardt
2006-02-03  8:31     ` Ulrich Eckhardt
2006-02-03  8:31     ` Ulrich Eckhardt
2006-02-01  9:02 ` [patch 15/44] generic ext2_{set,clear,test,find_first_zero,find_next_zero}_bit() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01 11:27   ` Roman Zippel
2006-02-01 11:27     ` Roman Zippel
2006-02-06 11:47     ` Akinobu Mita
2006-02-06 11:47       ` Akinobu Mita
2006-02-08 10:41     ` Akinobu Mita
2006-02-08 10:41       ` Akinobu Mita
2006-02-01  9:02 ` [patch 16/44] generic ext2_{set,clear}_bit_atomic() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 17/44] generic minix_{test,set,test_and_clear,test,find_first_zero}_bit() Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 18/44] alpha: use generic bitops Akinobu Mita
2006-02-01  9:02 ` [patch 19/44] arm: " Akinobu Mita
2006-02-01  9:02 ` [patch 20/44] arm26: " Akinobu Mita
2006-02-01  9:02 ` [patch 21/44] cris: " Akinobu Mita
2006-02-01  9:02 ` [patch 22/44] frv: " Akinobu Mita
2006-02-01  9:02 ` [patch 23/44] h8300: " Akinobu Mita
2006-02-01  9:02 ` [patch 24/44] i386: " Akinobu Mita
2006-02-01  9:02 ` [patch 25/44] ia64: " Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 26/44] m32r: " Akinobu Mita
2006-02-01  9:02 ` [patch 27/44] m68k: " Akinobu Mita
2006-02-01  9:02 ` [patch 28/44] m68knommu: " Akinobu Mita
2006-02-01  9:02 ` [patch 29/44] mips: " Akinobu Mita
2006-02-01  9:02 ` Akinobu Mita [this message]
2006-02-01  9:02 ` [patch 31/44] powerpc: " Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:02 ` [patch 32/44] s390: " Akinobu Mita
2006-02-01  9:02 ` [patch 33/44] sh: " Akinobu Mita
2006-02-01  9:02 ` [patch 34/44] sh64: " Akinobu Mita
2006-02-01  9:02 ` [patch 35/44] sparc: " Akinobu Mita
2006-02-01  9:02   ` Akinobu Mita
2006-02-01  9:03 ` [patch 36/44] sparc64: " Akinobu Mita
2006-02-01  9:03   ` Akinobu Mita
2006-02-01  9:03 ` [patch 37/44] v850: " Akinobu Mita
2006-02-01  9:03 ` [patch 38/44] x86_64: " Akinobu Mita
2006-02-01  9:03 ` [patch 39/44] xtensa: " Akinobu Mita
2006-02-01  9:03 ` [patch 40/44] update include/asm-generic/bitops.h Akinobu Mita
2006-02-01  9:03 ` [patch 41/44] make thread_info.flags an unsigned long Akinobu Mita
2006-02-01  9:03   ` Akinobu Mita
2006-02-01 18:17   ` Luck, Tony
2006-02-01 18:17     ` Luck, Tony
2006-02-02  1:37     ` Akinobu Mita
2006-02-02  1:37       ` Akinobu Mita
2006-02-01  9:03 ` [patch 42/44] ia64: make partial_page.bitmap " Akinobu Mita
2006-02-01  9:03   ` Akinobu Mita
2006-02-01  9:03 ` [patch 43/44] ntfs: remove generic_ffs() Akinobu Mita
2006-02-01  9:03 ` [patch 44/44] remove unused generic bitops in include/linux/bitops.h Akinobu Mita

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060201090333.395732000@localhost.localdomain \
    --to=mita@miraclelinux.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=parisc-linux@parisc-linux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.