From: mita@miraclelinux.com (Akinobu Mita)
To: Grant Grundler <iod00d@hp.com>
Cc: Linux Kernel Development <linux-kernel@vger.kernel.org>,
linux-ia64@vger.kernel.org
Subject: [PATCH 1/12] generic *_bit()
Date: Thu, 26 Jan 2006 03:29:18 +0000 [thread overview]
Message-ID: <20060126032918.GB9984@miraclelinux.com> (raw)
In-Reply-To: <20060126032713.GA9984@miraclelinux.com>
This patch introduces the C-language equivalents of the functions below:
- atomic operation:
void set_bit(int nr, volatile unsigned long *addr);
void clear_bit(int nr, volatile unsigned long *addr);
void change_bit(int nr, volatile unsigned long *addr);
int test_and_set_bit(int nr, volatile unsigned long *addr);
int test_and_clear_bit(int nr, volatile unsigned long *addr);
int test_and_change_bit(int nr, volatile unsigned long *addr);
- non-atomic operation:
void __set_bit(int nr, volatile unsigned long *addr);
void __clear_bit(int nr, volatile unsigned long *addr);
void __change_bit(int nr, volatile unsigned long *addr);
int __test_and_set_bit(int nr, volatile unsigned long *addr);
int __test_and_clear_bit(int nr, volatile unsigned long *addr);
int __test_and_change_bit(int nr, volatile unsigned long *addr);
int test_bit(int nr, const volatile unsigned long *addr);
HAVE_ARCH_ATOMIC_BITOPS is defined when the architecture has its own
{,test_and_}{set,clear,change}_bit()
HAVE_ARCH_NON_ATOMIC_BITOPS is defined when the architecture has its own
__{,test_and_}{set,clear,change}_bit() and test_bit()
This code largely copied from:
include/asm-powerpc/bitops.h
include/asm-parisc/bitops.h
include/asm-parisc/atomic.h
Index: 2.6-git/include/asm-generic/bitops.h
=================================--- 2.6-git.orig/include/asm-generic/bitops.h 2006-01-25 19:07:14.000000000 +0900
+++ 2.6-git/include/asm-generic/bitops.h 2006-01-25 19:14:08.000000000 +0900
@@ -1,56 +1,198 @@
#ifndef _ASM_GENERIC_BITOPS_H_
#define _ASM_GENERIC_BITOPS_H_
+#include <asm/types.h>
+
+#define BITOP_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
+#define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
+
+#ifndef HAVE_ARCH_ATOMIC_BITOPS
+
+#ifdef CONFIG_SMP
+#include <asm/spinlock.h>
+#include <asm/cache.h> /* we use L1_CACHE_BYTES */
+
+/* Use an array of spinlocks for our atomic_ts.
+ * Hash function to index into a different SPINLOCK.
+ * Since "a" is usually an address, use one spinlock per cacheline.
+ */
+# define ATOMIC_HASH_SIZE 4
+# define ATOMIC_HASH(a) (&(__atomic_hash[ (((unsigned long) a)/L1_CACHE_BYTES) & (ATOMIC_HASH_SIZE-1) ]))
+
+extern raw_spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned;
+
+/* Can't use raw_spin_lock_irq because of #include problems, so
+ * this is the substitute */
+#define _atomic_spin_lock_irqsave(l,f) do { \
+ raw_spinlock_t *s = ATOMIC_HASH(l); \
+ local_irq_save(f); \
+ __raw_spin_lock(s); \
+} while(0)
+
+#define _atomic_spin_unlock_irqrestore(l,f) do { \
+ raw_spinlock_t *s = ATOMIC_HASH(l); \
+ __raw_spin_unlock(s); \
+ local_irq_restore(f); \
+} while(0)
+
+
+#else
+# define _atomic_spin_lock_irqsave(l,f) do { local_irq_save(f); } while (0)
+# define _atomic_spin_unlock_irqrestore(l,f) do { local_irq_restore(f); } while (0)
+#endif
+
/*
* For the benefit of those who are trying to port Linux to another
* architecture, here are some C-language equivalents. You should
* recode these in the native assembly language, if at all possible.
- * To guarantee atomicity, these routines call cli() and sti() to
- * disable interrupts while they operate. (You have to provide inline
- * routines to cli() and sti().)
*
- * Also note, these routines assume that you have 32 bit longs.
- * You will have to change this if you are trying to port Linux to the
- * Alpha architecture or to a Cray. :-)
- *
* C language equivalents written by Theodore Ts'o, 9/26/92
*/
-extern __inline__ int set_bit(int nr,long * addr)
+static __inline__ void set_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ *p |= mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
+}
+
+static __inline__ void clear_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ *p &= ~mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
+}
+
+static __inline__ void change_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ *p ^= mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
+}
+
+static __inline__ int test_and_set_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old;
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ old = *p;
+ *p = old | mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
+
+ return (old & mask) != 0;
+}
+
+static __inline__ int test_and_clear_bit(int nr, volatile unsigned long *addr)
{
- int mask, retval;
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old;
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ old = *p;
+ *p = old & ~mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
- addr += nr >> 5;
- mask = 1 << (nr & 0x1f);
- cli();
- retval = (mask & *addr) != 0;
- *addr |= mask;
- sti();
- return retval;
+ return (old & mask) != 0;
}
-extern __inline__ int clear_bit(int nr, long * addr)
+static __inline__ int test_and_change_bit(int nr, volatile unsigned long *addr)
{
- int mask, retval;
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old;
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ old = *p;
+ *p = old ^ mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
- addr += nr >> 5;
- mask = 1 << (nr & 0x1f);
- cli();
- retval = (mask & *addr) != 0;
- *addr &= ~mask;
- sti();
- return retval;
+ return (old & mask) != 0;
}
-extern __inline__ int test_bit(int nr, const unsigned long * addr)
+#endif /* HAVE_ARCH_ATOMIC_BITOPS */
+
+#ifndef HAVE_ARCH_NON_ATOMIC_BITOPS
+
+static __inline__ void __set_bit(int nr, volatile unsigned long *addr)
{
- int mask;
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
- addr += nr >> 5;
- mask = 1 << (nr & 0x1f);
- return ((mask & *addr) != 0);
+ *p |= mask;
}
+static __inline__ void __clear_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+
+ *p &= ~mask;
+}
+
+static __inline__ void __change_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+
+ *p ^= mask;
+}
+
+static __inline__ int __test_and_set_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old = *p;
+
+ *p = old | mask;
+ return (old & mask) != 0;
+}
+
+static __inline__ int __test_and_clear_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old = *p;
+
+ *p = old & ~mask;
+ return (old & mask) != 0;
+}
+
+static __inline__ int __test_and_change_bit(int nr,
+ volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old = *p;
+
+ *p = old ^ mask;
+ return (old & mask) != 0;
+}
+
+static __inline__ int test_bit(int nr, __const__ volatile unsigned long *addr)
+{
+ return 1UL & (addr[BITOP_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
+}
+
+#endif /* HAVE_ARCH_NON_ATOMIC_BITOPS */
+
/*
* fls: find last bit set.
*/
WARNING: multiple messages have this Message-ID (diff)
From: mita@miraclelinux.com (Akinobu Mita)
To: Grant Grundler <iod00d@hp.com>
Cc: Linux Kernel Development <linux-kernel@vger.kernel.org>,
linux-ia64@vger.kernel.org
Subject: [PATCH 1/12] generic *_bit()
Date: Thu, 26 Jan 2006 12:29:18 +0900 [thread overview]
Message-ID: <20060126032918.GB9984@miraclelinux.com> (raw)
In-Reply-To: <20060126032713.GA9984@miraclelinux.com>
This patch introduces the C-language equivalents of the functions below:
- atomic operation:
void set_bit(int nr, volatile unsigned long *addr);
void clear_bit(int nr, volatile unsigned long *addr);
void change_bit(int nr, volatile unsigned long *addr);
int test_and_set_bit(int nr, volatile unsigned long *addr);
int test_and_clear_bit(int nr, volatile unsigned long *addr);
int test_and_change_bit(int nr, volatile unsigned long *addr);
- non-atomic operation:
void __set_bit(int nr, volatile unsigned long *addr);
void __clear_bit(int nr, volatile unsigned long *addr);
void __change_bit(int nr, volatile unsigned long *addr);
int __test_and_set_bit(int nr, volatile unsigned long *addr);
int __test_and_clear_bit(int nr, volatile unsigned long *addr);
int __test_and_change_bit(int nr, volatile unsigned long *addr);
int test_bit(int nr, const volatile unsigned long *addr);
HAVE_ARCH_ATOMIC_BITOPS is defined when the architecture has its own
{,test_and_}{set,clear,change}_bit()
HAVE_ARCH_NON_ATOMIC_BITOPS is defined when the architecture has its own
__{,test_and_}{set,clear,change}_bit() and test_bit()
This code largely copied from:
include/asm-powerpc/bitops.h
include/asm-parisc/bitops.h
include/asm-parisc/atomic.h
Index: 2.6-git/include/asm-generic/bitops.h
===================================================================
--- 2.6-git.orig/include/asm-generic/bitops.h 2006-01-25 19:07:14.000000000 +0900
+++ 2.6-git/include/asm-generic/bitops.h 2006-01-25 19:14:08.000000000 +0900
@@ -1,56 +1,198 @@
#ifndef _ASM_GENERIC_BITOPS_H_
#define _ASM_GENERIC_BITOPS_H_
+#include <asm/types.h>
+
+#define BITOP_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
+#define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
+
+#ifndef HAVE_ARCH_ATOMIC_BITOPS
+
+#ifdef CONFIG_SMP
+#include <asm/spinlock.h>
+#include <asm/cache.h> /* we use L1_CACHE_BYTES */
+
+/* Use an array of spinlocks for our atomic_ts.
+ * Hash function to index into a different SPINLOCK.
+ * Since "a" is usually an address, use one spinlock per cacheline.
+ */
+# define ATOMIC_HASH_SIZE 4
+# define ATOMIC_HASH(a) (&(__atomic_hash[ (((unsigned long) a)/L1_CACHE_BYTES) & (ATOMIC_HASH_SIZE-1) ]))
+
+extern raw_spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned;
+
+/* Can't use raw_spin_lock_irq because of #include problems, so
+ * this is the substitute */
+#define _atomic_spin_lock_irqsave(l,f) do { \
+ raw_spinlock_t *s = ATOMIC_HASH(l); \
+ local_irq_save(f); \
+ __raw_spin_lock(s); \
+} while(0)
+
+#define _atomic_spin_unlock_irqrestore(l,f) do { \
+ raw_spinlock_t *s = ATOMIC_HASH(l); \
+ __raw_spin_unlock(s); \
+ local_irq_restore(f); \
+} while(0)
+
+
+#else
+# define _atomic_spin_lock_irqsave(l,f) do { local_irq_save(f); } while (0)
+# define _atomic_spin_unlock_irqrestore(l,f) do { local_irq_restore(f); } while (0)
+#endif
+
/*
* For the benefit of those who are trying to port Linux to another
* architecture, here are some C-language equivalents. You should
* recode these in the native assembly language, if at all possible.
- * To guarantee atomicity, these routines call cli() and sti() to
- * disable interrupts while they operate. (You have to provide inline
- * routines to cli() and sti().)
*
- * Also note, these routines assume that you have 32 bit longs.
- * You will have to change this if you are trying to port Linux to the
- * Alpha architecture or to a Cray. :-)
- *
* C language equivalents written by Theodore Ts'o, 9/26/92
*/
-extern __inline__ int set_bit(int nr,long * addr)
+static __inline__ void set_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ *p |= mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
+}
+
+static __inline__ void clear_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ *p &= ~mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
+}
+
+static __inline__ void change_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ *p ^= mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
+}
+
+static __inline__ int test_and_set_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old;
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ old = *p;
+ *p = old | mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
+
+ return (old & mask) != 0;
+}
+
+static __inline__ int test_and_clear_bit(int nr, volatile unsigned long *addr)
{
- int mask, retval;
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old;
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ old = *p;
+ *p = old & ~mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
- addr += nr >> 5;
- mask = 1 << (nr & 0x1f);
- cli();
- retval = (mask & *addr) != 0;
- *addr |= mask;
- sti();
- return retval;
+ return (old & mask) != 0;
}
-extern __inline__ int clear_bit(int nr, long * addr)
+static __inline__ int test_and_change_bit(int nr, volatile unsigned long *addr)
{
- int mask, retval;
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old;
+ unsigned long flags;
+
+ _atomic_spin_lock_irqsave(p, flags);
+ old = *p;
+ *p = old ^ mask;
+ _atomic_spin_unlock_irqrestore(p, flags);
- addr += nr >> 5;
- mask = 1 << (nr & 0x1f);
- cli();
- retval = (mask & *addr) != 0;
- *addr &= ~mask;
- sti();
- return retval;
+ return (old & mask) != 0;
}
-extern __inline__ int test_bit(int nr, const unsigned long * addr)
+#endif /* HAVE_ARCH_ATOMIC_BITOPS */
+
+#ifndef HAVE_ARCH_NON_ATOMIC_BITOPS
+
+static __inline__ void __set_bit(int nr, volatile unsigned long *addr)
{
- int mask;
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
- addr += nr >> 5;
- mask = 1 << (nr & 0x1f);
- return ((mask & *addr) != 0);
+ *p |= mask;
}
+static __inline__ void __clear_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+
+ *p &= ~mask;
+}
+
+static __inline__ void __change_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+
+ *p ^= mask;
+}
+
+static __inline__ int __test_and_set_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old = *p;
+
+ *p = old | mask;
+ return (old & mask) != 0;
+}
+
+static __inline__ int __test_and_clear_bit(int nr, volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old = *p;
+
+ *p = old & ~mask;
+ return (old & mask) != 0;
+}
+
+static __inline__ int __test_and_change_bit(int nr,
+ volatile unsigned long *addr)
+{
+ unsigned long mask = BITOP_MASK(nr);
+ unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr);
+ unsigned long old = *p;
+
+ *p = old ^ mask;
+ return (old & mask) != 0;
+}
+
+static __inline__ int test_bit(int nr, __const__ volatile unsigned long *addr)
+{
+ return 1UL & (addr[BITOP_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
+}
+
+#endif /* HAVE_ARCH_NON_ATOMIC_BITOPS */
+
/*
* fls: find last bit set.
*/
next prev parent reply other threads:[~2006-01-26 3:29 UTC|newest]
Thread overview: 265+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-25 11:26 [PATCH 0/6] RFC: use include/asm-generic/bitops.h Akinobu Mita
2006-01-25 11:26 ` Akinobu Mita
2006-01-25 11:26 ` Akinobu Mita
2006-01-25 11:26 ` Akinobu Mita
2006-01-25 11:26 ` Akinobu Mita
2006-01-25 11:28 ` [PATCH 1/6] {set,clear,test}_bit() related cleanup Akinobu Mita
2006-01-25 11:28 ` Akinobu Mita
2006-01-25 11:28 ` Akinobu Mita
2006-01-25 11:28 ` Akinobu Mita
2006-01-25 11:28 ` Akinobu Mita
2006-01-25 11:46 ` Andi Kleen
2006-01-25 11:46 ` Andi Kleen
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:47 ` Russell King
2006-01-26 16:47 ` Russell King
2006-01-26 16:47 ` Russell King
2006-01-26 16:47 ` Russell King
2006-01-26 16:47 ` Russell King
2006-01-26 19:14 ` Paul Jackson
2006-01-26 19:14 ` Paul Jackson
2006-01-26 19:14 ` Paul Jackson
2006-01-25 11:30 ` [PATCH 2/6] use non atomic operations for minix_*_bit() and ext2_*_bit() Akinobu Mita
2006-01-25 11:30 ` Akinobu Mita
2006-01-25 11:30 ` Akinobu Mita
2006-01-25 11:30 ` Akinobu Mita
2006-01-25 11:30 ` Akinobu Mita
2006-01-25 11:32 ` [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h Akinobu Mita
2006-01-25 11:32 ` Akinobu Mita
2006-01-25 11:32 ` Akinobu Mita
2006-01-25 11:32 ` Akinobu Mita
2006-01-25 11:32 ` Akinobu Mita
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:19 ` Akinobu Mita
2006-01-25 20:02 ` Russell King
2006-01-25 20:02 ` Russell King
2006-01-25 20:02 ` Russell King
2006-01-25 20:02 ` Russell King
2006-01-25 20:02 ` Russell King
2006-01-25 20:59 ` Grant Grundler
2006-01-25 20:59 ` Grant Grundler
2006-01-26 3:27 ` Akinobu Mita
2006-01-26 3:27 ` Akinobu Mita
2006-01-26 3:29 ` Akinobu Mita [this message]
2006-01-26 3:29 ` [PATCH 1/12] generic *_bit() Akinobu Mita
2006-02-01 15:11 ` Chen, Kenneth W
2006-02-01 15:11 ` Chen, Kenneth W
2006-02-01 18:02 ` Christoph Hellwig
2006-02-01 18:02 ` Christoph Hellwig
2006-02-01 18:07 ` Chen, Kenneth W
2006-02-01 18:07 ` Chen, Kenneth W
2006-02-01 19:19 ` Russell King
2006-02-01 19:19 ` Russell King
2006-02-03 10:24 ` Geert Uytterhoeven
2006-02-03 10:24 ` Geert Uytterhoeven
2006-02-03 10:27 ` Russell King
2006-02-03 10:27 ` Russell King
2006-02-01 19:39 ` Grant Grundler
2006-02-01 19:39 ` Grant Grundler
2006-02-02 22:43 ` Paul Mackerras
2006-02-02 22:43 ` Paul Mackerras
2006-02-01 19:25 ` Chen, Kenneth W
2006-02-01 19:25 ` Chen, Kenneth W
2006-02-01 19:35 ` Russell King
2006-02-01 19:35 ` Russell King
2006-02-01 21:41 ` Chen, Kenneth W
2006-02-01 21:41 ` Chen, Kenneth W
2006-02-01 22:09 ` Grant Grundler
2006-02-01 22:09 ` Grant Grundler
2006-02-01 22:49 ` Anton Altaparmakov
2006-02-01 22:49 ` Anton Altaparmakov
2006-02-02 0:08 ` Grant Grundler
2006-02-02 0:08 ` Grant Grundler
2006-02-02 8:52 ` Anton Altaparmakov
2006-02-02 8:52 ` Anton Altaparmakov
2006-02-02 10:13 ` Andreas Schwab
2006-02-02 10:13 ` Andreas Schwab
2006-02-03 17:07 ` Luck, Tony
2006-02-03 17:07 ` Luck, Tony
2006-01-26 3:30 ` [PATCH 2/12] generic __ffs() Akinobu Mita
2006-01-26 3:30 ` Akinobu Mita
2006-01-26 3:31 ` [PATCH 3/12] generic ffz() Akinobu Mita
2006-01-26 3:31 ` Akinobu Mita
2006-01-26 8:21 ` Michael Tokarev
2006-01-26 8:21 ` Michael Tokarev
2006-01-27 6:39 ` [PATCH] parisc: add ()-pair in __ffs() Akinobu Mita
2006-01-27 6:39 ` Akinobu Mita
2006-01-26 3:32 ` [PATCH 4/12] generic fls() and fls64() Akinobu Mita
2006-01-26 3:32 ` Akinobu Mita
2006-01-26 3:33 ` [PATCH 5/12] generic find_{next,first}{,_zero}_bit() Akinobu Mita
2006-01-26 3:33 ` Akinobu Mita
2006-01-26 3:34 ` [PATCH 6/12] generic sched_find_first_bit() Akinobu Mita
2006-01-26 3:34 ` Akinobu Mita
2006-01-26 3:35 ` [PATCH 7/12] generic ffs() Akinobu Mita
2006-01-26 3:35 ` Akinobu Mita
2006-01-26 3:36 ` [PATCH 8/12] generic hweight{32,16,8}() Akinobu Mita
2006-01-26 3:36 ` Akinobu Mita
2006-01-26 7:12 ` Balbir Singh
2006-01-26 7:24 ` Balbir Singh
2006-01-26 10:04 ` Rutger Nijlunsing
2006-01-26 10:04 ` Rutger Nijlunsing
2006-01-27 4:55 ` Akinobu Mita
2006-01-27 4:55 ` Akinobu Mita
2006-01-27 5:40 ` Balbir Singh
2006-01-27 5:52 ` Balbir Singh
2006-01-27 6:40 ` Akinobu Mita
2006-01-27 6:40 ` Akinobu Mita
2006-01-31 11:14 ` Balbir Singh
2006-01-31 11:26 ` Balbir Singh
2006-01-26 18:57 ` Bryan O'Sullivan
2006-01-26 18:57 ` Bryan O'Sullivan
2006-01-27 4:43 ` Akinobu Mita
2006-01-27 4:43 ` Akinobu Mita
2006-01-27 5:23 ` Bryan O'Sullivan
2006-01-27 5:23 ` Bryan O'Sullivan
2006-01-31 16:49 ` linux
2006-01-31 16:49 ` linux
2006-01-31 18:14 ` Grant Grundler
2006-01-31 18:14 ` Grant Grundler
2006-02-02 9:34 ` Balbir Singh
2006-02-02 9:46 ` Balbir Singh
2006-01-26 3:36 ` [PATCH 9/12] generic hweight64() Akinobu Mita
2006-01-26 3:36 ` Akinobu Mita
2006-01-26 7:05 ` Balbir Singh
2006-01-26 7:17 ` Balbir Singh
2006-01-26 3:38 ` [PATCH 10/12] generic ext2_{set,clear,test,find_first_zero,find_next_zero}_bit() Akinobu Mita
2006-01-26 3:38 ` Akinobu Mita
2006-01-26 3:38 ` [PATCH 11/12] generic ext2_{set,clear}_bit_atomic() Akinobu Mita
2006-01-26 3:38 ` Akinobu Mita
2006-01-26 3:39 ` [PATCH 12/12] generic minix_{test,set,test_and_clear,test,find_first_zero}_bit() Akinobu Mita
2006-01-26 3:39 ` Akinobu Mita
2006-01-25 23:25 ` [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h Ian Molton
2006-01-25 23:25 ` Ian Molton
2006-01-26 0:06 ` Richard Henderson
2006-01-26 0:06 ` Richard Henderson
2006-01-26 4:34 ` Edgar Toernig
2006-01-26 4:34 ` Edgar Toernig
2006-01-26 4:34 ` Edgar Toernig
2006-01-26 17:30 ` Richard Henderson
2006-01-26 17:30 ` Richard Henderson
2006-01-26 17:30 ` Richard Henderson
2006-01-26 8:55 ` Russell King
2006-01-26 8:55 ` Russell King
2006-01-26 16:18 ` [parisc-linux] " Grant Grundler
2006-01-26 16:18 ` Grant Grundler
2006-01-26 16:18 ` Grant Grundler
2006-01-26 16:18 ` Grant Grundler
2006-01-26 16:30 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of Nicolas Pitre
2006-01-26 16:30 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h Nicolas Pitre
2006-01-26 16:30 ` Nicolas Pitre
2006-01-27 0:28 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of John David Anglin
2006-01-27 0:28 ` John David Anglin
2006-01-27 0:28 ` John David Anglin
2006-01-27 0:28 ` John David Anglin
2006-01-27 0:28 ` John David Anglin
2006-01-26 16:40 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h Russell King
2006-01-26 16:40 ` Russell King
2006-01-26 16:40 ` Russell King
2006-01-26 16:40 ` Russell King
2006-01-26 16:40 ` Russell King
2006-01-26 22:55 ` Grant Grundler
2006-01-26 23:04 ` Grant Grundler
2006-01-26 23:04 ` Grant Grundler
2006-01-26 22:55 ` Grant Grundler
2006-01-26 22:55 ` Grant Grundler
2006-01-26 23:03 ` Russell King
2006-01-26 23:03 ` Russell King
2006-01-26 23:03 ` Russell King
2006-01-29 7:12 ` Stuart Brady
2006-01-29 7:12 ` Stuart Brady
2006-01-30 4:03 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of David S. Miller
2006-01-30 4:03 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h David S. Miller
2006-01-30 4:03 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of David S. Miller
2006-01-30 4:03 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h David S. Miller
2006-01-30 4:03 ` David S. Miller
2006-01-30 17:06 ` Ralf Baechle
2006-01-30 17:06 ` Ralf Baechle
2006-01-30 19:50 ` Stuart Brady
2006-01-30 19:50 ` Stuart Brady
2006-01-30 23:02 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of David S. Miller
2006-01-30 23:02 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h David S. Miller
2006-01-30 23:02 ` David S. Miller
2006-01-27 12:51 ` Hirokazu Takata
2006-01-27 12:51 ` Hirokazu Takata
2006-01-27 12:51 ` Hirokazu Takata
2006-01-27 12:51 ` Hirokazu Takata
2006-01-27 12:51 ` Hirokazu Takata
2006-01-30 3:29 ` Akinobu Mita
2006-01-30 3:29 ` Akinobu Mita
2006-01-30 3:29 ` Akinobu Mita
2006-01-30 3:29 ` Akinobu Mita
2006-01-30 3:29 ` Akinobu Mita
2006-01-25 11:33 ` [PATCH 4/6] use include/asm-generic/bitops for each architecture Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 2:37 ` Grant Grundler
2006-01-27 13:04 ` [PATCH 4/6] use include/asm-generic/bitops for each Hirokazu Takata
2006-01-27 13:04 ` [PATCH 4/6] use include/asm-generic/bitops for each architecture Hirokazu Takata
2006-01-27 13:04 ` [PATCH 4/6] use include/asm-generic/bitops for each Hirokazu Takata
2006-01-27 13:04 ` [PATCH 4/6] use include/asm-generic/bitops for each architecture Hirokazu Takata
2006-01-27 13:04 ` Hirokazu Takata
2006-01-30 3:15 ` Akinobu Mita
2006-01-30 3:15 ` Akinobu Mita
2006-01-30 3:15 ` Akinobu Mita
2006-01-30 3:15 ` Akinobu Mita
2006-01-30 3:15 ` Akinobu Mita
2006-01-25 11:34 ` [PATCH 5/6] fix warning on test_ti_thread_flag() Akinobu Mita
2006-01-25 11:34 ` Akinobu Mita
2006-01-25 11:34 ` Akinobu Mita
2006-01-25 11:34 ` Akinobu Mita
2006-01-25 11:34 ` Akinobu Mita
2006-01-25 12:28 ` Geert Uytterhoeven
2006-01-25 12:28 ` Geert Uytterhoeven
2006-01-25 12:28 ` Geert Uytterhoeven
2006-01-25 17:08 ` Chen, Kenneth W
2006-01-25 17:08 ` Chen, Kenneth W
2006-01-25 17:08 ` Chen, Kenneth W
2006-01-25 17:08 ` Chen, Kenneth W
2006-01-25 17:19 ` Geert Uytterhoeven
2006-01-25 17:19 ` Geert Uytterhoeven
2006-01-25 17:19 ` Geert Uytterhoeven
2006-01-25 20:02 ` Chen, Kenneth W
2006-01-25 20:02 ` Chen, Kenneth W
2006-01-25 20:02 ` Chen, Kenneth W
2006-01-25 20:02 ` Chen, Kenneth W
2006-01-26 3:50 ` Akinobu Mita
2006-01-26 3:50 ` Akinobu Mita
2006-01-26 3:50 ` Akinobu Mita
2006-01-26 3:50 ` Akinobu Mita
2006-01-26 4:12 ` Paul Mackerras
2006-01-26 4:12 ` Paul Mackerras
2006-01-26 4:12 ` Paul Mackerras
2006-01-26 4:12 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-26 0:04 ` David S. Miller
2006-01-26 0:04 ` David S. Miller
2006-01-26 0:04 ` David S. Miller
2006-01-26 0:04 ` David S. Miller
2006-01-26 0:04 ` David S. Miller
2006-01-25 11:35 ` [PATCH 6/6] remove unused generic bitops in include/linux/bitops.h Akinobu Mita
2006-01-25 11:35 ` Akinobu Mita
2006-01-25 11:35 ` Akinobu Mita
2006-01-25 11:35 ` Akinobu Mita
2006-01-25 11:35 ` 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=20060126032918.GB9984@miraclelinux.com \
--to=mita@miraclelinux.com \
--cc=iod00d@hp.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.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.