prepare the amd64 kernel build, ext2_bitops.h merged in from FreeBSD
authorYonghong Yan <yanyh@dragonflybsd.org>
Sun, 23 Sep 2007 04:09:55 +0000 (04:09 +0000)
committerYonghong Yan <yanyh@dragonflybsd.org>
Sun, 23 Sep 2007 04:09:55 +0000 (04:09 +0000)
sys/dev/disk/sym/sym_hipd.c
sys/dev/netif/sbni/if_sbni.c
sys/vfs/gnu/ext2fs/ext2_bitops.h [new file with mode: 0644]
sys/vfs/gnu/ext2fs/ext2_linux_balloc.c
sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c

index 58ab9d6..79c315c 100644 (file)
@@ -56,7 +56,7 @@
  */
 
 /* $FreeBSD: src/sys/dev/sym/sym_hipd.c,v 1.6.2.12 2001/12/02 19:01:10 groudier Exp $ */
-/* $DragonFly: src/sys/dev/disk/sym/sym_hipd.c,v 1.21 2007/02/03 23:13:19 swildner Exp $ */
+/* $DragonFly: src/sys/dev/disk/sym/sym_hipd.c,v 1.22 2007/09/23 04:09:55 yanyh Exp $ */
 
 #define SYM_DRIVER_NAME        "sym-1.6.5-20000902"
 
@@ -149,7 +149,7 @@ typedef     u_int32_t u32;
  *  make sense) to be used.
  */
 
-#if    defined __i386__
+#if    defined __i386__ || defined __amd64__
 #define MEMORY_BARRIER()       do { ; } while(0)
 #elif  defined __powerpc__
 #define MEMORY_BARRIER()       __asm__ volatile("eieio; sync" : : : "memory")
index 93f5306..56fd70a 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/sbni/if_sbni.c,v 1.1.2.4 2002/08/11 09:32:00 fjoe Exp $
- * $DragonFly: src/sys/dev/netif/sbni/if_sbni.c,v 1.25 2006/12/22 23:26:21 swildner Exp $
+ * $DragonFly: src/sys/dev/netif/sbni/if_sbni.c,v 1.26 2007/09/23 04:09:55 yanyh Exp $
  */
 
 /*
@@ -83,7 +83,9 @@
 #include "if_sbnireg.h"
 #include "if_sbnivar.h"
 
+#ifdef __i386__
 #define ASM_CRC 1
+#endif
 
 static void    sbni_init(void *);
 static void    sbni_start(struct ifnet *);
diff --git a/sys/vfs/gnu/ext2fs/ext2_bitops.h b/sys/vfs/gnu/ext2fs/ext2_bitops.h
new file mode 100644 (file)
index 0000000..a11ab6e
--- /dev/null
@@ -0,0 +1,115 @@
+/*-
+ * Copyright (c) 2003 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD: src/sys/gnu/fs/ext2fs/ext2_bitops.h,v 1.3 2006/04/13 19:37:32 cracauer Exp $
+ * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_bitops.h,v 1.1 2007/09/23 04:09:55 yanyh Exp $
+ */
+
+#ifndef _SYS_GNU_EXT2FS_EXT2_BITOPS_H_
+#define _SYS_GNU_EXT2FS_EXT2_BITOPS_H_
+
+#define        find_first_zero_bit(data, sz)           find_next_zero_bit(data, sz, 0)
+
+static __inline int
+clear_bit(int no, void *data)
+{
+       uint32_t *p;
+       uint32_t mask, new, old;
+
+       p = (uint32_t*)data + (no >> 5);
+       mask = (1U << (no & 31));
+       do {
+               old = *p;
+               new = old & ~mask;
+       } while (!atomic_cmpset_32(p, old, new));
+       return (old & mask);
+}
+
+static __inline int
+set_bit(int no, void *data)
+{
+       uint32_t *p;
+       uint32_t mask, new, old;
+
+       p = (uint32_t*)data + (no >> 5);
+       mask = (1U << (no & 31));
+       do {
+               old = *p;
+               new = old | mask;
+       } while (!atomic_cmpset_32(p, old, new));
+       return (old & mask);
+}
+
+static __inline int
+test_bit(int no, void *data)
+{
+       uint32_t *p;
+       uint32_t mask;
+
+       p = (uint32_t*)data + (no >> 5);
+       mask = (1U << (no & 31));
+       return (*p & mask);
+}
+
+static __inline size_t
+find_next_zero_bit(void *data, size_t sz, size_t ofs)
+{
+       uint32_t *p;
+       uint32_t mask;
+       int bit;
+
+       p = (uint32_t*)data + (ofs >> 5);
+       if (ofs & 31) {
+               mask = ~0U << (ofs & 31);
+               bit = *p | ~mask;
+               if (bit != ~0U)
+                       return (ffs(~bit) + ofs - 1);
+               p++;
+               ofs = (ofs + 31U) & ~31U;
+       }
+       while(ofs < sz && *p == ~0U) {
+               p++;
+               ofs += 32;
+       }
+       if (ofs == sz)
+               return (ofs);
+       bit = *p;
+       return (ffs(~bit) + ofs - 1);
+}
+
+static __inline void *
+memscan(void *data, int c, size_t sz)
+{
+       uint8_t *p;
+
+       p = data;
+       while (sz && *p != c) {
+               p++;
+               sz--;
+       }
+       return (p);
+}
+
+#endif /* _SYS_GNU_EXT2FS_EXT2_BITOPS_H_ */
index 2c3956d..c5274ff 100644 (file)
@@ -5,7 +5,7 @@
  *  University of Utah, Department of Computer Science
  *
  * $FreeBSD: src/sys/gnu/ext2fs/ext2_linux_balloc.c,v 1.11.2.3 2001/08/14 18:03:19 gallatin Exp $
- * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_linux_balloc.c,v 1.10 2006/12/23 00:41:29 swildner Exp $
+ * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_linux_balloc.c,v 1.11 2007/09/23 04:09:55 yanyh Exp $
  */
 /*
  *  linux/fs/ext2/balloc.c
@@ -50,7 +50,7 @@
 #ifdef __i386__
 #include "i386-bitops.h"
 #else
-#error Provide an bitops.h file, please !
+#include "ext2_bitops.h"
 #endif
 
 #define in_range(b, first, len)                ((b) >= (first) && (b) <= (first) + (len) - 1)
index b73a964..9333652 100644 (file)
@@ -5,7 +5,7 @@
  *  University of Utah, Department of Computer Science
  *
  * $FreeBSD: src/sys/gnu/ext2fs/ext2_linux_ialloc.c,v 1.13.2.2 2001/08/14 18:03:19 gallatin Exp $
- * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c,v 1.11 2006/12/23 00:41:29 swildner Exp $
+ * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_linux_ialloc.c,v 1.12 2007/09/23 04:09:55 yanyh Exp $
  */
 /*
  *  linux/fs/ext2/ialloc.c
@@ -51,7 +51,7 @@
 #ifdef __i386__
 #include "i386-bitops.h"
 #else
-#error please provide bit operation functions
+#include "ext2_bitops.h"
 #endif
 
 /* this is supposed to mark a buffer dirty on ready for delayed writing