Fix up 64-bit byte swaps for most 32-bit architectures
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Jan 2009 05:17:57 +0000 (21:17 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Jan 2009 05:17:57 +0000 (21:17 -0800)
The __SWAB_64_THRU_32__ case of a 64-bit byte swap was depending on the
no-longer-existant ___swab32() method (three underscores).  We got rid
of some of the worst indirection and complexity, and now it should just
use the 32-bit swab function that was defined right above it.

Reported-and-tested-by: Nicolas Pitre <nico@cam.org>
Reported-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/swab.h

index 9a2d33e0a98abeb5f8550e4d960549c8dd21ce57..be5284d4a0531509659097bf98a1da1bc2035e39 100644 (file)
@@ -68,7 +68,7 @@ static inline __attribute_const__ __u64 __fswab64(__u64 val)
 #elif defined(__SWAB_64_THRU_32__)
        __u32 h = val >> 32;
        __u32 l = val & ((1ULL << 32) - 1);
-       return (((__u64)___swab32(l)) << 32) | ((__u64)(___swab32(h)));
+       return (((__u64)__fswab32(l)) << 32) | ((__u64)(__fswab32(h)));
 #else
        return ___constant_swab64(val);
 #endif