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

Brad Bozarth
2001-09-28T22:55:56Z

> 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...

Thanks,
Brad Bozarth