summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordumbbell <dumbbell@FreeBSD.org>2005-06-21 10:11:13 +0000
committerdumbbell <dumbbell@FreeBSD.org>2005-06-21 10:11:13 +0000
commit06b923a8e4e96419536fc0c82504cba6f28a1479 (patch)
tree03993119df47625c60f6ef384170c1e5b472b977
parent570bbf677fe0cd60e76bbb14d7fbf209efbef365 (diff)
downloadFreeBSD-src-06b923a8e4e96419536fc0c82504cba6f28a1479.zip
FreeBSD-src-06b923a8e4e96419536fc0c82504cba6f28a1479.tar.gz
Replace the use if ext2fs' bitops by bitstring.h macros. This fixes
portability issues. Also note that for amd64, a hack is used to work around gcc optimization (thanks to cognet@). Reviewed by: mux (mentor) Approved by: re (dougb)
-rw-r--r--sys/gnu/fs/reiserfs/reiserfs_fs.h43
-rw-r--r--sys/gnu/fs/reiserfs/reiserfs_mount.h2
2 files changed, 16 insertions, 29 deletions
diff --git a/sys/gnu/fs/reiserfs/reiserfs_fs.h b/sys/gnu/fs/reiserfs/reiserfs_fs.h
index d1b9233..e32ae23 100644
--- a/sys/gnu/fs/reiserfs/reiserfs_fs.h
+++ b/sys/gnu/fs/reiserfs/reiserfs_fs.h
@@ -39,12 +39,6 @@
#include <geom/geom.h>
#include <geom/geom_vfs.h>
-#ifdef __i386__
-# include <gnu/fs/ext2fs/i386-bitops.h>
-#else
-# include <gnu/fs/ext2fs/ext2_bitops.h>
-#endif
-
#include <gnu/fs/reiserfs/reiserfs_mount.h>
#include <gnu/fs/reiserfs/reiserfs_fs_sb.h>
#include <gnu/fs/reiserfs/reiserfs_fs_i.h>
@@ -858,28 +852,14 @@ struct reiserfs_de_head {
#define DEH_Statdata 0 /* Not used now */
#define DEH_Visible 2
-/* 64 bit systems (and the S/390) need to be aligned explicitly -jdm */
-#if BITS_PER_LONG == 64 || defined(__sparc64__)
-#define ADDR_UNALIGNED_BITS (3)
-#endif
+/* Macro to map Linux' *_bit function to bitstring.h macros */
+#define set_bit(bit, name) bit_set((bitstr_t *)name, bit)
+#define clear_bit(bit, name) bit_clear((bitstr_t *)name, bit)
+#define test_bit(bit, name) bit_test((bitstr_t *)name, bit)
-#ifdef ADDR_UNALIGNED_BITS
-#define aligned_address(addr) \
- ((void *)((long)(addr) & ~((1UL << ADDR_UNALIGNED_BITS) - 1)))
-#define unaligned_offset(addr) \
- (((int)((long)(addr) & ((1 << ADDR_UNALIGNED_BITS) - 1))) << 3)
-
-#define set_bit_unaligned(nr, addr) \
- set_bit((nr) + unaligned_offset(addr), aligned_address(addr))
-#define clear_bit_unaligned(nr, addr) \
- clear_bit((nr) + unaligned_offset(addr), aligned_address(addr))
-#define test_bit_unaligned(nr, addr) \
- test_bit((nr) + unaligned_offset(addr), aligned_address(addr))
-#else /* !defined ADDR_UNALIGNED_BITS */
-#define set_bit_unaligned(nr, addr) set_bit(nr, addr)
-#define clear_bit_unaligned(nr, addr) clear_bit(nr, addr)
-#define test_bit_unaligned(nr, addr) test_bit(nr, addr)
-#endif /* defined ADDR_UNALIGNED_BITS */
+#define set_bit_unaligned(bit, name) set_bit(bit, name)
+#define clear_bit_unaligned(bit, name) clear_bit(bit, name)
+#define test_bit_unaligned(bit, name) test_bit(bit, name)
#define mark_de_with_sd(deh) \
set_bit_unaligned(DEH_Statdata, &((deh)->deh_state))
@@ -1035,8 +1015,17 @@ struct path {
#define pos_in_item(path) ((path)->pos_in_item)
+#if (_MACHINE_ARCH == amd64)
+/* To workaround a bug in gcc. He generates a call to memset() which
+ * is a inline function; this causes a compile time error. */
+#define INITIALIZE_PATH(var) \
+ struct path var; \
+ bzero(&var, sizeof(var)); \
+ var.path_length = ILLEGAL_PATH_ELEMENT_OFFSET;
+#else
#define INITIALIZE_PATH(var) \
struct path var = { ILLEGAL_PATH_ELEMENT_OFFSET, }
+#endif
/* Get path element by path and path position. */
#define PATH_OFFSET_PELEMENT(p_s_path, n_offset) \
diff --git a/sys/gnu/fs/reiserfs/reiserfs_mount.h b/sys/gnu/fs/reiserfs/reiserfs_mount.h
index 0db218b..f47c976 100644
--- a/sys/gnu/fs/reiserfs/reiserfs_mount.h
+++ b/sys/gnu/fs/reiserfs/reiserfs_mount.h
@@ -10,8 +10,6 @@
#ifndef _GNU_REISERFS_REISERFS_MOUNT_H
#define _GNU_REISERFS_REISERFS_MOUNT_H
-#define REISERFS_FOR_FREEBSD_VERSION "0.1.6"
-
#if defined(_KERNEL)
#ifdef MALLOC_DECLARE
OpenPOWER on IntegriCloud