]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] M68k update (part 8)
authorGeert Uytterhoeven <geert@linux-m68k.org>
Tue, 23 Jul 2002 13:21:11 +0000 (06:21 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Tue, 23 Jul 2002 13:21:11 +0000 (06:21 -0700)
M68k bitops updates
  - use bitmap_member() for bitops data declaration
  - Make the m68k bitops really operate on unsigned long
  - Add fls()

drivers/zorro/zorro.c
include/asm-m68k/bitops.h
include/linux/generic_serial.h
include/linux/serial167.h
include/linux/zorro.h

index 365eafb12aee6b53497a42549f1c3bbf134112d1..9b793823655e609b22241c36c9262cb5a82e3ea0 100644 (file)
@@ -80,7 +80,7 @@ struct zorro_dev *zorro_find_device(zorro_id id, struct zorro_dev *from)
      *  FIXME: use the normal resource management
      */
 
-u32 zorro_unused_z2ram[4] = { 0, 0, 0, 0 };
+bitmap_member(zorro_unused_z2ram, 128);
 
 
 static void __init mark_region(unsigned long start, unsigned long end,
index e702403dd027505e829c7c45a020b722b6b03235..ce7544adffa74dde5309bc511ec7234c84351e33 100644 (file)
@@ -19,7 +19,7 @@
    __constant_test_and_set_bit(nr, vaddr) : \
    __generic_test_and_set_bit(nr, vaddr))
 
-extern __inline__ int __constant_test_and_set_bit(int nr,volatile void * vaddr)
+extern __inline__ int __constant_test_and_set_bit(int nr,volatile unsigned long * vaddr)
 {
        char retval;
 
@@ -30,7 +30,7 @@ extern __inline__ int __constant_test_and_set_bit(int nr,volatile void * vaddr)
        return retval;
 }
 
-extern __inline__ int __generic_test_and_set_bit(int nr,volatile void * vaddr)
+extern __inline__ int __generic_test_and_set_bit(int nr,volatile unsigned long * vaddr)
 {
        char retval;
 
@@ -47,13 +47,13 @@ extern __inline__ int __generic_test_and_set_bit(int nr,volatile void * vaddr)
 
 #define __set_bit(nr,vaddr) set_bit(nr,vaddr) 
 
-extern __inline__ void __constant_set_bit(int nr, volatile void * vaddr)
+extern __inline__ void __constant_set_bit(int nr, volatile unsigned long * vaddr)
 {
        __asm__ __volatile__ ("bset %1,%0"
             : "+m" (((volatile char *)vaddr)[(nr^31) >> 3]) : "di" (nr & 7));
 }
 
-extern __inline__ void __generic_set_bit(int nr, volatile void * vaddr)
+extern __inline__ void __generic_set_bit(int nr, volatile unsigned long * vaddr)
 {
        __asm__ __volatile__ ("bfset %1@{%0:#1}"
             : : "d" (nr^31), "a" (vaddr) : "memory");
@@ -66,7 +66,7 @@ extern __inline__ void __generic_set_bit(int nr, volatile void * vaddr)
 
 #define __test_and_clear_bit(nr,vaddr) test_and_clear_bit(nr,vaddr)
 
-extern __inline__ int __constant_test_and_clear_bit(int nr, volatile void * vaddr)
+extern __inline__ int __constant_test_and_clear_bit(int nr, volatile unsigned long * vaddr)
 {
        char retval;
 
@@ -77,7 +77,7 @@ extern __inline__ int __constant_test_and_clear_bit(int nr, volatile void * vadd
        return retval;
 }
 
-extern __inline__ int __generic_test_and_clear_bit(int nr, volatile void * vaddr)
+extern __inline__ int __generic_test_and_clear_bit(int nr, volatile unsigned long * vaddr)
 {
        char retval;
 
@@ -99,13 +99,13 @@ extern __inline__ int __generic_test_and_clear_bit(int nr, volatile void * vaddr
    __generic_clear_bit(nr, vaddr))
 #define __clear_bit(nr,vaddr) clear_bit(nr,vaddr)
 
-extern __inline__ void __constant_clear_bit(int nr, volatile void * vaddr)
+extern __inline__ void __constant_clear_bit(int nr, volatile unsigned long * vaddr)
 {
        __asm__ __volatile__ ("bclr %1,%0"
             : "+m" (((volatile char *)vaddr)[(nr^31) >> 3]) : "di" (nr & 7));
 }
 
-extern __inline__ void __generic_clear_bit(int nr, volatile void * vaddr)
+extern __inline__ void __generic_clear_bit(int nr, volatile unsigned long * vaddr)
 {
        __asm__ __volatile__ ("bfclr %1@{%0:#1}"
             : : "d" (nr^31), "a" (vaddr) : "memory");
@@ -119,7 +119,7 @@ extern __inline__ void __generic_clear_bit(int nr, volatile void * vaddr)
 #define __test_and_change_bit(nr,vaddr) test_and_change_bit(nr,vaddr)
 #define __change_bit(nr,vaddr) change_bit(nr,vaddr)
 
-extern __inline__ int __constant_test_and_change_bit(int nr, volatile void * vaddr)
+extern __inline__ int __constant_test_and_change_bit(int nr, volatile unsigned long * vaddr)
 {
        char retval;
 
@@ -130,7 +130,7 @@ extern __inline__ int __constant_test_and_change_bit(int nr, volatile void * vad
        return retval;
 }
 
-extern __inline__ int __generic_test_and_change_bit(int nr, volatile void * vaddr)
+extern __inline__ int __generic_test_and_change_bit(int nr, volatile unsigned long * vaddr)
 {
        char retval;
 
@@ -145,24 +145,24 @@ extern __inline__ int __generic_test_and_change_bit(int nr, volatile void * vadd
    __constant_change_bit(nr, vaddr) : \
    __generic_change_bit(nr, vaddr))
 
-extern __inline__ void __constant_change_bit(int nr, volatile void * vaddr)
+extern __inline__ void __constant_change_bit(int nr, volatile unsigned long * vaddr)
 {
        __asm__ __volatile__ ("bchg %1,%0"
             : "+m" (((volatile char *)vaddr)[(nr^31) >> 3]) : "di" (nr & 7));
 }
 
-extern __inline__ void __generic_change_bit(int nr, volatile void * vaddr)
+extern __inline__ void __generic_change_bit(int nr, volatile unsigned long * vaddr)
 {
        __asm__ __volatile__ ("bfchg %1@{%0:#1}"
             : : "d" (nr^31), "a" (vaddr) : "memory");
 }
 
-extern __inline__ int test_bit(int nr, const volatile void * vaddr)
+extern __inline__ int test_bit(int nr, const volatile unsigned long * vaddr)
 {
-       return ((1UL << (nr & 31)) & (((const volatile unsigned int *) vaddr)[nr >> 5])) != 0;
+       return ((1UL << (nr & 31)) & (((const volatile unsigned long *) vaddr)[nr >> 5])) != 0;
 }
 
-extern __inline__ int find_first_zero_bit(void * vaddr, unsigned size)
+extern __inline__ int find_first_zero_bit(unsigned long * vaddr, unsigned size)
 {
        unsigned long *p = vaddr, *addr = vaddr;
        unsigned long allones = ~0UL;
@@ -185,7 +185,7 @@ extern __inline__ int find_first_zero_bit(void * vaddr, unsigned size)
        return ((p - addr) << 5) + (res ^ 31);
 }
 
-extern __inline__ int find_next_zero_bit (void *vaddr, int size,
+extern __inline__ int find_next_zero_bit (unsigned long *vaddr, int size,
                                      int offset)
 {
        unsigned long *addr = vaddr;
@@ -232,16 +232,28 @@ extern __inline__ unsigned long ffz(unsigned long word)
  * differs in spirit from the above ffz (man ffs).
  */
 
-extern __inline__ int ffs(int x)
+static inline int ffs(int x)
 {
        int cnt;
 
-       __asm__ __volatile__("bfffo %1{#0:#0},%0" : "=d" (cnt) : "dm" (x & -x));
+       asm ("bfffo %1{#0:#0},%0" : "=d" (cnt) : "dm" (x & -x));
 
        return 32 - cnt;
 }
 #define __ffs(x) (ffs(x) - 1)
 
+/*
+ * fls: find last bit set.
+ */
+
+static inline int fls(int x)
+{
+       int cnt;
+
+       asm ("bfffo %1{#0,#0},%0" : "=d" (cnt) : "dm" (x));
+
+       return 32 - cnt;
+}
 
 /*
  * Every architecture must define this function. It's the fastest
index 5c30fc929cab4214451c4d31ded909229a686310..cc5441324f3cf529d0f409330fce788baa060b87 100644 (file)
@@ -45,7 +45,7 @@ struct gs_port {
   int                     count;
   int                     blocked_open;
   struct tty_struct       *tty;
-  int                     event;
+  unsigned long           event;
   unsigned short          closing_wait;
   int                     close_delay;
   struct real_driver      *rd;
index 8886c292fcc97dc20f47e7072ba6ab8cb66ce3bd..2c805a1791cf6bc4b6945465609732b158002779 100644 (file)
@@ -37,7 +37,7 @@ struct cyclades_port {
        int                     ignore_status_mask;
        int                     close_delay;
        int                     IER;    /* Interrupt Enable Register */
-       int                     event;
+       unsigned long           event;
        unsigned long           last_active;
        int                     count;  /* # of fd on device */
        int                     x_char; /* to be pushed out ASAP */
index f2a191cc5b365631cf52db1da0ca9f3c38664cf2..38d128833a765b1a8c7d86070fca5bfc98a61ace 100644 (file)
@@ -199,7 +199,7 @@ extern struct zorro_dev *zorro_find_device(zorro_id id,
      *  the corresponding bits.
      */
 
-extern __u32 zorro_unused_z2ram[4];
+extern bitmap_member(zorro_unused_z2ram, 128);
 
 #define Z2RAM_START            (0x00200000)
 #define Z2RAM_END              (0x00a00000)