Whamcloud - gitweb
Add 64-bit byte swapping functions
authorAndreas Dilger <adilger@clusterfs.com>
Sun, 6 Aug 2006 05:39:30 +0000 (01:39 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 6 Aug 2006 05:39:30 +0000 (01:39 -0400)
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
lib/ext2fs/ChangeLog
lib/ext2fs/bitops.h

index 0bd5a21..abd188f 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-06  Andreas Dilger <adilger@clusterfs.com>
+
+       * bitops.h (ext2fs_cpu_to_le32, ext2fs_le64_to_cpu,
+               ext2fs_swab64): Add 64-bit byte swapping functions
+
 2006-08-05  Theodore Tso  <tytso@mit.edu>
 
        * ext2_fs.h (EXT4_EXTENTS_FL): Rename EXT3_EXTENTS_FL to
index 5d01838..6583a3a 100644 (file)
@@ -23,6 +23,8 @@ extern __u16 ext2fs_swab16(__u16 val);
 extern __u32 ext2fs_swab32(__u32 val);
 
 #ifdef WORDS_BIGENDIAN
+#define ext2fs_cpu_to_le64(x) ext2fs_swab64((x))
+#define ext2fs_le64_to_cpu(x) ext2fs_swab64((x))
 #define ext2fs_cpu_to_le32(x) ext2fs_swab32((x))
 #define ext2fs_le32_to_cpu(x) ext2fs_swab32((x))
 #define ext2fs_cpu_to_le16(x) ext2fs_swab16((x))
@@ -32,6 +34,8 @@ extern __u32 ext2fs_swab32(__u32 val);
 #define ext2fs_cpu_to_be16(x) ((__u16)(x))
 #define ext2fs_be16_to_cpu(x) ((__u16)(x))
 #else
+#define ext2fs_cpu_to_le64(x) ((__u64)(x))
+#define ext2fs_le64_to_cpu(x) ((__u64)(x))
 #define ext2fs_cpu_to_le32(x) ((__u32)(x))
 #define ext2fs_le32_to_cpu(x) ((__u32)(x))
 #define ext2fs_cpu_to_le16(x) ((__u16)(x))
@@ -286,6 +290,12 @@ _INLINE_ __u16 ext2fs_swab16(__u16 val)
 }
 #endif
 
+_INLINE_ __u64 ext2fs_swab64(__u64 val)
+{
+       return (ext2fs_swab32(val >> 32) |
+               (((__u64)ext2fs_swab32(val & 0xFFFFFFFFUL)) << 32));
+}
+
 #undef EXT2FS_ADDR
 
 #endif /* i386 */