bitops.h revision e01f9be336274e527cdb794cca2b0c1501e8b0d7
13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o * bitops.h --- Bitmap frobbing code.  The byte swapping routines are
350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o * 	also included here.
4efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o *
521c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.
621c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o *
721c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * %Begin-Header%
821c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * This file may be redistributed under the terms of the GNU Public
921c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * License.
1021c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * %End-Header%
11efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o *
1221c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * i386 bitops operations taken from <asm/bitops.h>, Copyright 1992,
1321c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * Linus Torvalds.
143839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
153839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
163839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
1780af12e180bdea9ed391a0aee58e31cee7641709Theodore Ts'oextern int ext2fs_set_bit(unsigned int nr,void * addr);
1880af12e180bdea9ed391a0aee58e31cee7641709Theodore Ts'oextern int ext2fs_clear_bit(unsigned int nr, void * addr);
1980af12e180bdea9ed391a0aee58e31cee7641709Theodore Ts'oextern int ext2fs_test_bit(unsigned int nr, const void * addr);
20f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'oextern void ext2fs_fast_set_bit(unsigned int nr,void * addr);
21f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'oextern void ext2fs_fast_clear_bit(unsigned int nr, void * addr);
2250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern __u16 ext2fs_swab16(__u16 val);
2350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern __u32 ext2fs_swab32(__u32 val);
24dec5cd13fff821d1d3f6a922fbd986b3a86abb77Theodore Ts'oextern __u64 ext2fs_swab64(__u64 val);
253839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
262cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#ifdef WORDS_BIGENDIAN
27a62e3f0378d2a9b861fc4809a810980c1c3bde35Andreas Dilger#define ext2fs_cpu_to_le64(x) ext2fs_swab64((x))
28a62e3f0378d2a9b861fc4809a810980c1c3bde35Andreas Dilger#define ext2fs_le64_to_cpu(x) ext2fs_swab64((x))
292cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_cpu_to_le32(x) ext2fs_swab32((x))
302cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_le32_to_cpu(x) ext2fs_swab32((x))
312cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_cpu_to_le16(x) ext2fs_swab16((x))
322cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_le16_to_cpu(x) ext2fs_swab16((x))
332cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_cpu_to_be32(x) ((__u32)(x))
342cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_be32_to_cpu(x) ((__u32)(x))
352cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_cpu_to_be16(x) ((__u16)(x))
362cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_be16_to_cpu(x) ((__u16)(x))
372cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#else
38a62e3f0378d2a9b861fc4809a810980c1c3bde35Andreas Dilger#define ext2fs_cpu_to_le64(x) ((__u64)(x))
39a62e3f0378d2a9b861fc4809a810980c1c3bde35Andreas Dilger#define ext2fs_le64_to_cpu(x) ((__u64)(x))
402cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_cpu_to_le32(x) ((__u32)(x))
412cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_le32_to_cpu(x) ((__u32)(x))
422cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_cpu_to_le16(x) ((__u16)(x))
432cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_le16_to_cpu(x) ((__u16)(x))
442cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_cpu_to_be32(x) ext2fs_swab32((x))
452cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_be32_to_cpu(x) ext2fs_swab32((x))
462cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_cpu_to_be16(x) ext2fs_swab16((x))
472cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#define ext2fs_be16_to_cpu(x) ext2fs_swab16((x))
482cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o#endif
492cb403b255f1254a29f26d2b356e7764c0f12506Theodore Ts'o
503839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
513839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * EXT2FS bitmap manipulation routines.
523839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
533839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
543839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/* Support for sending warning messages from the inline subroutines */
553839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oextern const char *ext2fs_block_string;
563839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oextern const char *ext2fs_inode_string;
573839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oextern const char *ext2fs_mark_string;
583839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oextern const char *ext2fs_unmark_string;
593839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oextern const char *ext2fs_test_string;
60f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'oextern void ext2fs_warn_bitmap(errcode_t errcode, unsigned long arg,
61f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o			       const char *description);
621e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'oextern void ext2fs_warn_bitmap2(ext2fs_generic_bitmap bitmap,
631e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o				int code, unsigned long arg);
64f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
6528ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'oextern int ext2fs_mark_block_bitmap(ext2fs_block_bitmap bitmap, blk_t block);
6628ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'oextern int ext2fs_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
67f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o				       blk_t block);
68f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'oextern int ext2fs_test_block_bitmap(ext2fs_block_bitmap bitmap, blk_t block);
69f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
7031dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'oextern int ext2fs_mark_inode_bitmap(ext2fs_inode_bitmap bitmap, ext2_ino_t inode);
7128ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'oextern int ext2fs_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
7231dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o				       ext2_ino_t inode);
7331dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'oextern int ext2fs_test_inode_bitmap(ext2fs_inode_bitmap bitmap, ext2_ino_t inode);
743839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
7550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern void ext2fs_fast_mark_block_bitmap(ext2fs_block_bitmap bitmap,
7650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o					  blk_t block);
7750e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern void ext2fs_fast_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
7850e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o					    blk_t block);
7950e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern int ext2fs_fast_test_block_bitmap(ext2fs_block_bitmap bitmap,
8050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o					 blk_t block);
8150e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
8250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern void ext2fs_fast_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
8331dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o					  ext2_ino_t inode);
8450e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern void ext2fs_fast_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
8531dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o					    ext2_ino_t inode);
8650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern int ext2fs_fast_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
8731dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o					 ext2_ino_t inode);
8850e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern blk_t ext2fs_get_block_bitmap_start(ext2fs_block_bitmap bitmap);
8931dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'oextern ext2_ino_t ext2fs_get_inode_bitmap_start(ext2fs_inode_bitmap bitmap);
9050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'oextern blk_t ext2fs_get_block_bitmap_end(ext2fs_block_bitmap bitmap);
9131dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'oextern ext2_ino_t ext2fs_get_inode_bitmap_end(ext2fs_inode_bitmap bitmap);
9221c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o
9321c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'oextern void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
9421c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o					   blk_t block, int num);
9521c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'oextern void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
9621c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o					     blk_t block, int num);
9721c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'oextern int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
9821c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o					  blk_t block, int num);
9921c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'oextern void ext2fs_fast_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
10021c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o						blk_t block, int num);
10121c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'oextern void ext2fs_fast_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
10221c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o						  blk_t block, int num);
10321c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'oextern int ext2fs_fast_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
10421c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o					       blk_t block, int num);
105fff876b7c7716d5eef713101e47bff15edb9d9a9Theodore Ts'oextern void ext2fs_set_bitmap_padding(ext2fs_generic_bitmap map);
10650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
107b15beaaf386a13d9fbaf716aac2df44748261af1Theodore Ts'o/* These routines moved to gen_bitmap.c */
1084ea7bd04390935e1f8b473c8b857e518df2e226bTheodore Ts'oextern int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap,
1094ea7bd04390935e1f8b473c8b857e518df2e226bTheodore Ts'o					 __u32 bitno);
1104ea7bd04390935e1f8b473c8b857e518df2e226bTheodore Ts'oextern int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap,
1114ea7bd04390935e1f8b473c8b857e518df2e226bTheodore Ts'o					   blk_t bitno);
112b15beaaf386a13d9fbaf716aac2df44748261af1Theodore Ts'oextern int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap,
113b15beaaf386a13d9fbaf716aac2df44748261af1Theodore Ts'o				      blk_t bitno);
1148df1827b55f11321bfe508c89b94591bdb97c3a6Theodore Ts'oextern int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
1158df1827b55f11321bfe508c89b94591bdb97c3a6Theodore Ts'o					  blk_t block, int num);
116271a375b596240866b4a2967e3b6f38ff7cecdf8Theodore Ts'oextern __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap);
117271a375b596240866b4a2967e3b6f38ff7cecdf8Theodore Ts'oextern __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap);
118b15beaaf386a13d9fbaf716aac2df44748261af1Theodore Ts'o
1193839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
1203839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * The inline routines themselves...
121efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o *
1223839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * If NO_INLINE_FUNCS is defined, then we won't try to do inline
12350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o * functions at all; they will be included as normal functions in
12450e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o * inline.c
1253839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
12650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#ifdef NO_INLINE_FUNCS
1275953b9de9ce59661640f851b217421d734bb0302Theodore Ts'o#if (defined(__GNUC__) && (defined(__i386__) || defined(__i486__) || \
128125e084cef02fe865a34181ccfa7f258ccf8ab34Theodore Ts'o			   defined(__i586__) || defined(__mc68000__)))
12950e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o	/* This prevents bitops.c from trying to include the C */
13050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o	/* function version of these functions */
13150e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#define _EXT2_HAVE_ASM_BITOPS_
13250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#endif
13350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#endif /* NO_INLINE_FUNCS */
13450e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
1353839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#if (defined(INCLUDE_INLINE_FUNCS) || !defined(NO_INLINE_FUNCS))
1363839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#ifdef INCLUDE_INLINE_FUNCS
1373839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define _INLINE_ extern
1383839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#else
13976f875daa1c9c2cdc72f0c6f0f7be4bbc7f0fc07Theodore Ts'o#ifdef __GNUC__
1403839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define _INLINE_ extern __inline__
14176f875daa1c9c2cdc72f0c6f0f7be4bbc7f0fc07Theodore Ts'o#else				/* For Watcom C */
14276f875daa1c9c2cdc72f0c6f0f7be4bbc7f0fc07Theodore Ts'o#define _INLINE_ extern inline
14376f875daa1c9c2cdc72f0c6f0f7be4bbc7f0fc07Theodore Ts'o#endif
1443839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#endif
1453839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
146f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o/*
147f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o * Fast bit set/clear functions that doesn't need to return the
148f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o * previous bit value.
149f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o */
150f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o
151f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o_INLINE_ void ext2fs_fast_set_bit(unsigned int nr,void * addr)
152f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o{
153f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o	unsigned char	*ADDR = (unsigned char *) addr;
154f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o
155f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o	ADDR += nr >> 3;
156f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o	*ADDR |= (1 << (nr & 0x07));
157f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o}
158f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o
159f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o_INLINE_ void ext2fs_fast_clear_bit(unsigned int nr, void * addr)
160f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o{
161f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o	unsigned char	*ADDR = (unsigned char *) addr;
162f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o
163f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o	ADDR += nr >> 3;
164f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o	*ADDR &= ~(1 << (nr & 0x07));
165f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o}
166f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o
167f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o
168ac493821ea0af9767a4c0f21a322133494bcdc48Theodore Ts'o#if ((defined __GNUC__) && !defined(_EXT2_USE_C_VERSIONS_) && \
169ac493821ea0af9767a4c0f21a322133494bcdc48Theodore Ts'o     (defined(__i386__) || defined(__i486__) || defined(__i586__)))
170f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
171f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#define _EXT2_HAVE_ASM_BITOPS_
1729ec53cf4f32cc65e91a9c71651f05a6d872a7088Theodore Ts'o#define _EXT2_HAVE_ASM_SWAB_
1739ec53cf4f32cc65e91a9c71651f05a6d872a7088Theodore Ts'o
1743839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
1753839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * These are done by inline assembly for speed reasons.....
1763839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o *
1773839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * All bitoperations return 0 if the bit was cleared before the
1783839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * operation and != 0 if it was not.  Bit 0 is the LSB of addr; bit 32
1793839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * is the LSB of (addr+1).
1803839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
1813839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
1823839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
1833839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Some hacks to defeat gcc over-optimizations..
1843839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
1853839e65723771b85975f4263102dd3ceec4523cTheodore Ts'ostruct __dummy_h { unsigned long a[100]; };
18674becf3c0a065f8d64e07ce4d31f9fe53be91d62Theodore Ts'o#define EXT2FS_ADDR (*(struct __dummy_h *) addr)
187efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o#define EXT2FS_CONST_ADDR (*(const struct __dummy_h *) addr)
1883839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
18980af12e180bdea9ed391a0aee58e31cee7641709Theodore Ts'o_INLINE_ int ext2fs_set_bit(unsigned int nr, void * addr)
1903839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
1913839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int oldbit;
1923839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
193f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o	addr = (void *) (((unsigned char *) addr) + (nr >> 3));
1943839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	__asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0"
1958ad26b08fac068f0c50d44a5072fb49ab7bedc78Theodore Ts'o		:"=r" (oldbit),"+m" (EXT2FS_ADDR)
196f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o		:"r" (nr & 7));
1973839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	return oldbit;
1983839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
1993839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
20080af12e180bdea9ed391a0aee58e31cee7641709Theodore Ts'o_INLINE_ int ext2fs_clear_bit(unsigned int nr, void * addr)
2013839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
2023839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int oldbit;
2033839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
204f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o	addr = (void *) (((unsigned char *) addr) + (nr >> 3));
2053839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	__asm__ __volatile__("btrl %2,%1\n\tsbbl %0,%0"
2068ad26b08fac068f0c50d44a5072fb49ab7bedc78Theodore Ts'o		:"=r" (oldbit),"+m" (EXT2FS_ADDR)
207f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o		:"r" (nr & 7));
2083839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	return oldbit;
2093839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
2103839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
21180af12e180bdea9ed391a0aee58e31cee7641709Theodore Ts'o_INLINE_ int ext2fs_test_bit(unsigned int nr, const void * addr)
2123839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
2133839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int oldbit;
2143839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
215dec5cd13fff821d1d3f6a922fbd986b3a86abb77Theodore Ts'o	addr = (const void *) (((const unsigned char *) addr) + (nr >> 3));
2163839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	__asm__ __volatile__("btl %2,%1\n\tsbbl %0,%0"
2173839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		:"=r" (oldbit)
218f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o		:"m" (EXT2FS_CONST_ADDR),"r" (nr & 7));
2193839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	return oldbit;
2203839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
2213839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
22269fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o_INLINE_ __u32 ext2fs_swab32(__u32 val)
22369fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o{
22469fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o#ifdef EXT2FS_REQUIRE_486
22569fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o	__asm__("bswap %0" : "=r" (val) : "0" (val));
22669fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o#else
22769fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o	__asm__("xchgb %b0,%h0\n\t"	/* swap lower bytes	*/
22869fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o		"rorl $16,%0\n\t"	/* swap words		*/
22969fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o		"xchgb %b0,%h0"		/* swap higher bytes	*/
23069fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o		:"=q" (val)
23169fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o		: "0" (val));
23269fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o#endif
23369fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o	return val;
23469fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o}
23569fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o
23669fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o_INLINE_ __u16 ext2fs_swab16(__u16 val)
23769fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o{
23869fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o	__asm__("xchgb %b0,%h0"		/* swap bytes		*/ \
23969fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o		: "=q" (val) \
24069fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o		:  "0" (val)); \
24169fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o		return val;
24269fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o}
24369fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o
24474becf3c0a065f8d64e07ce4d31f9fe53be91d62Theodore Ts'o#undef EXT2FS_ADDR
2453839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
2463839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#endif	/* i386 */
2473839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
248f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o#if ((defined __GNUC__) && !defined(_EXT2_USE_C_VERSIONS_) && \
249f9bcce3be04b554004a82d4fe10edaf6077241beTheodore Ts'o     (defined(__mc68000__)))
250f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
251f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#define _EXT2_HAVE_ASM_BITOPS_
252f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
25380af12e180bdea9ed391a0aee58e31cee7641709Theodore Ts'o_INLINE_ int ext2fs_set_bit(unsigned int nr,void * addr)
254f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o{
255f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o	char retval;
256f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
257f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o	__asm__ __volatile__ ("bfset %2@{%1:#1}; sne %0"
2587f88b04341d88c5df0360d930832c38040303b61Theodore Ts'o	     : "=d" (retval) : "d" (nr^7), "a" (addr));
259f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
260f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o	return retval;
261f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o}
262f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
26380af12e180bdea9ed391a0aee58e31cee7641709Theodore Ts'o_INLINE_ int ext2fs_clear_bit(unsigned int nr, void * addr)
264f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o{
265f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o	char retval;
266f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
267f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o	__asm__ __volatile__ ("bfclr %2@{%1:#1}; sne %0"
2687f88b04341d88c5df0360d930832c38040303b61Theodore Ts'o	     : "=d" (retval) : "d" (nr^7), "a" (addr));
269f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
270f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o	return retval;
271f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o}
272f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
27380af12e180bdea9ed391a0aee58e31cee7641709Theodore Ts'o_INLINE_ int ext2fs_test_bit(unsigned int nr, const void * addr)
274f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o{
275f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o	char retval;
276f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
277f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o	__asm__ __volatile__ ("bftst %2@{%1:#1}; sne %0"
2787f88b04341d88c5df0360d930832c38040303b61Theodore Ts'o	     : "=d" (retval) : "d" (nr^7), "a" (addr));
279f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
280f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o	return retval;
281f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o}
282f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
283f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#endif /* __mc68000__ */
284f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o
28550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
28669fbde418b1a197bf793e51b12e23f528b967093Theodore Ts'o#if !defined(_EXT2_HAVE_ASM_SWAB_)
28750e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
28850e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ __u16 ext2fs_swab16(__u16 val)
28950e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
29050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o	return (val >> 8) | (val << 8);
29150e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
29250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
29350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ __u32 ext2fs_swab32(__u32 val)
29450e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
29550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o	return ((val>>24) | ((val>>8)&0xFF00) |
29650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o		((val<<8)&0xFF0000) | (val<<24));
29750e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
29850e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
29950e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#endif /* !_EXT2_HAVE_ASM_SWAB */
30050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
301e01f9be336274e527cdb794cca2b0c1501e8b0d7Theodore Ts'o_INLINE_ __u64 ext2fs_swab64(__u64 val)
302e01f9be336274e527cdb794cca2b0c1501e8b0d7Theodore Ts'o{
303e01f9be336274e527cdb794cca2b0c1501e8b0d7Theodore Ts'o	return (ext2fs_swab32(val >> 32) |
304e01f9be336274e527cdb794cca2b0c1501e8b0d7Theodore Ts'o		(((__u64)ext2fs_swab32(val & 0xFFFFFFFFUL)) << 32));
305e01f9be336274e527cdb794cca2b0c1501e8b0d7Theodore Ts'o}
306e01f9be336274e527cdb794cca2b0c1501e8b0d7Theodore Ts'o
30728ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'o_INLINE_ int ext2fs_mark_block_bitmap(ext2fs_block_bitmap bitmap,
3081e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o				       blk_t block)
3091e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o{
310b15beaaf386a13d9fbaf716aac2df44748261af1Theodore Ts'o	return ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
31128ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'o					  block);
3121e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o}
3131e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o
31428ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'o_INLINE_ int ext2fs_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
3151e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o					 blk_t block)
3161e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o{
317efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o	return ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
31828ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'o					    block);
3191e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o}
3201e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o
3211e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o_INLINE_ int ext2fs_test_block_bitmap(ext2fs_block_bitmap bitmap,
3221e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o				       blk_t block)
3231e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o{
324efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o	return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
3251e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o					  block);
3263839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
3273839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
32828ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'o_INLINE_ int ext2fs_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
32931dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o				       ext2_ino_t inode)
3303839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
331efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o	return ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
33228ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'o					  inode);
3333839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
3343839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
33528ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'o_INLINE_ int ext2fs_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
33631dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o					 ext2_ino_t inode)
3373839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
338efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o	return ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
33928ffafb09c6fd8a9ebe716c06b02143771a9b17fTheodore Ts'o				     inode);
3403839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
3413839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
342f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o_INLINE_ int ext2fs_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
34331dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o				       ext2_ino_t inode)
3443839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
345efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o	return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
3461e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o					  inode);
3473839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
3483839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
34950e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ void ext2fs_fast_mark_block_bitmap(ext2fs_block_bitmap bitmap,
35050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o					    blk_t block)
35150e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
3527bf257a9a07d6067fba43ba05f25b3de0436d59cTheodore Ts'o	ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap, block);
35350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
35450e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
35550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ void ext2fs_fast_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
35650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o					      blk_t block)
35750e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
3587bf257a9a07d6067fba43ba05f25b3de0436d59cTheodore Ts'o	ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap, block);
35950e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
36050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
36150e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ int ext2fs_fast_test_block_bitmap(ext2fs_block_bitmap bitmap,
36250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o					    blk_t block)
36350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
364efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o	return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
3657bf257a9a07d6067fba43ba05f25b3de0436d59cTheodore Ts'o					  block);
36650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
36750e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
36850e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ void ext2fs_fast_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
36931dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o					    ext2_ino_t inode)
37050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
3717bf257a9a07d6067fba43ba05f25b3de0436d59cTheodore Ts'o	ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap, inode);
37250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
37350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
37450e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ void ext2fs_fast_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
37531dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o					      ext2_ino_t inode)
37650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
3777bf257a9a07d6067fba43ba05f25b3de0436d59cTheodore Ts'o	ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap, inode);
37850e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
37950e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
38050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ int ext2fs_fast_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
38131dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o					   ext2_ino_t inode)
38250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
383efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o	return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
3847bf257a9a07d6067fba43ba05f25b3de0436d59cTheodore Ts'o					  inode);
38550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
38650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
38750e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ blk_t ext2fs_get_block_bitmap_start(ext2fs_block_bitmap bitmap)
38850e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
389271a375b596240866b4a2967e3b6f38ff7cecdf8Theodore Ts'o	return ext2fs_get_generic_bitmap_start((ext2fs_generic_bitmap) bitmap);
39050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
39150e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
39231dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o_INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_start(ext2fs_inode_bitmap bitmap)
39350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
394271a375b596240866b4a2967e3b6f38ff7cecdf8Theodore Ts'o	return ext2fs_get_generic_bitmap_start((ext2fs_generic_bitmap) bitmap);
39550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
39650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
39750e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o_INLINE_ blk_t ext2fs_get_block_bitmap_end(ext2fs_block_bitmap bitmap)
39850e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
399271a375b596240866b4a2967e3b6f38ff7cecdf8Theodore Ts'o	return ext2fs_get_generic_bitmap_end((ext2fs_generic_bitmap) bitmap);
40050e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
40150e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
40231dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o_INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_end(ext2fs_inode_bitmap bitmap)
40350e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o{
404271a375b596240866b4a2967e3b6f38ff7cecdf8Theodore Ts'o	return ext2fs_get_generic_bitmap_end((ext2fs_generic_bitmap) bitmap);
40550e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o}
40650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
40721c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o_INLINE_ int ext2fs_fast_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
40821c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o						 blk_t block, int num)
40921c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o{
4108df1827b55f11321bfe508c89b94591bdb97c3a6Theodore Ts'o	return ext2fs_test_block_bitmap_range(bitmap, block, num);
41121c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o}
41221c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o
41321c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o_INLINE_ void ext2fs_fast_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
41421c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o						  blk_t block, int num)
41521c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o{
4168df1827b55f11321bfe508c89b94591bdb97c3a6Theodore Ts'o	ext2fs_mark_block_bitmap_range(bitmap, block, num);
41721c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o}
41821c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o
41921c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o_INLINE_ void ext2fs_fast_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
42021c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o						    blk_t block, int num)
42121c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o{
4228df1827b55f11321bfe508c89b94591bdb97c3a6Theodore Ts'o	ext2fs_unmark_block_bitmap_range(bitmap, block, num);
42321c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o}
4243839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#undef _INLINE_
4253839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#endif
42650e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o
427