Re: [PATCH] Big-endian reading/writing cramfs (vs 2.4.10)

Brad Bozarth (
Fri, 28 Sep 2001 15:54:03 -0700 (PDT)

> On Sep 28, 2001 14:58 -0700, Brad wrote:
> > +#define CRAM_SWAB_16(x) ( ( (0x0000FF00 & (x)) >> 8 ) | \
> > + ( (0x000000FF & (x)) << 8 ) )
> Why not just use the well-defined le16_to_cpu() and le32_to_cpu() macros?

I did, originally... And it worked in inode.c, but I couldn't get mkcramfs
to compile using those macros. It's outside of __KERNEL__ so I tried
using __cpu_to_le32. The following error occurred:

/tmp/ccoK4KS0.o: In function `write_superblock':
mkcramfs.c(.text+0xefc): undefined reference to `__fswab32'
collect2: ld returned 1 exit status

__fswab32 is defined in include/linux/byteorder/swab.h as:

extern __inline__ __const__ __u32 __fswab32(__u32 x)
return __arch__swab32(x);

Can you shed some light on the error? I used my own macros to get around
this issue and it worked, but the defined ones would be cleaner...

Brad Bozarth

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at