]> www.infradead.org Git - mtd-utils.git/commitdiff
Added 64-bit swapping functions
authorJosh Boyer <jwboyer@gmail.com>
Wed, 21 Jun 2006 13:29:56 +0000 (08:29 -0500)
committerJosh Boyer <jwboyer@gmail.com>
Wed, 21 Jun 2006 13:29:56 +0000 (08:29 -0500)
Signed-off-by: Josh Boyer <jwboyer@gmail.com>
include/mtd_swab.h

index 5c76ed5dcb2434434a7ae74e323ef9496c814a65..c3340a6438fff9f09a55a22ae1769ac3e1c80599 100644 (file)
                 (((uint32_t)(x) & (uint32_t)0x00ff0000UL) >>  8) | \
                 (((uint32_t)(x) & (uint32_t)0xff000000UL) >> 24) ))
 
+#define swab64(x) \
+               ((uint64_t)( \
+                               (((uint64_t)(x) & (uint64_t)0x00000000000000ffULL) << 56) | \
+                               (((uint64_t)(x) & (uint64_t)0x000000000000ff00ULL) << 40) | \
+                               (((uint64_t)(x) & (uint64_t)0x0000000000ff0000ULL) << 24) | \
+                               (((uint64_t)(x) & (uint64_t)0x00000000ff000000ULL) << 8) | \
+                               (((uint64_t)(x) & (uint64_t)0x000000ff00000000ULL) >> 8) | \
+                               (((uint64_t)(x) & (uint64_t)0x0000ff0000000000ULL) >> 24) | \
+                               (((uint64_t)(x) & (uint64_t)0x00ff000000000000ULL) >> 40) | \
+                               (((uint64_t)(x) & (uint64_t)0xff00000000000000ULL) >> 56) ))
+
+
 #if __BYTE_ORDER == __BIG_ENDIAN
 #define cpu_to_le16(x) ({ uint16_t _x = x; swab16(_x); })
 #define cpu_to_le32(x) ({ uint32_t _x = x; swab32(_x); })
+#define cpu_to_le64(x) ({ uint64_t _x = x; swab64(_x); })
 #define cpu_to_be16(x) (x)
 #define cpu_to_be32(x) (x)
+#define cpu_to_be64(x) (x)
 #else
 #define cpu_to_le16(x) (x)
 #define cpu_to_le32(x) (x)
+#define cpu_to_le64(x) (x)
 #define cpu_to_be16(x) ({ uint16_t _x = x; swab16(_x); })
 #define cpu_to_be32(x) ({ uint32_t _x = x; swab32(_x); })
+#define cpu_to_be64(x) ({ uint64_t _x = x; swab64(_x); })
 #endif
 #define le16_to_cpu(x) cpu_to_le16(x)
 #define be16_to_cpu(x) cpu_to_be16(x)
 #define le32_to_cpu(x) cpu_to_le32(x)
 #define be32_to_cpu(x) cpu_to_be32(x)
+#define le64_to_cpu(x) cpu_to_le64(x)
+#define be64_to_cpu(x) cpu_to_be64(x)
 
 #endif