From 06b923a8e4e96419536fc0c82504cba6f28a1479 Mon Sep 17 00:00:00 2001 From: dumbbell Date: Tue, 21 Jun 2005 10:11:13 +0000 Subject: 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) --- sys/gnu/fs/reiserfs/reiserfs_fs.h | 43 ++++++++++++++---------------------- sys/gnu/fs/reiserfs/reiserfs_mount.h | 2 -- 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 #include -#ifdef __i386__ -# include -#else -# include -#endif - #include #include #include @@ -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 -- cgit v1.1