Re: brcm80211 build busted on big-endian

From: Greg KH
Date: Wed Jun 22 2011 - 11:41:39 EST


On Tue, Jun 21, 2011 at 07:36:41PM -0700, David Miller wrote:
>
> It tries to do "xor" operations on pointers because of how the
> R_REG() and W_REG() macros are defined.
>
> ====================
> #define R_REG(r) (\
> SELECT_BUS_READ( \
> ({ \
> __typeof(*(r)) __osl_v; \
> switch (sizeof(*(r))) { \
> case sizeof(u8): \
> __osl_v = \
> readb((volatile u8*)((r)^3)); \
> break; \
> case sizeof(u16): \
> __osl_v = \
> readw((volatile u16*)((r)^2)); \
> break; \
> case sizeof(u32): \
> __osl_v = readl((volatile u32*)(r)); \
> break; \
> } \
> __osl_v; \
> }), \
> OSL_READ_REG(r)) \
> )
> ====================
>
> This driver is a crap fest of volatile pointers and not-compile-tested
> code.

For big endian, I agree, which is why I thought I fixed this up so it
wouldn't build on other arches than MIPS for the moment.

Is this blowing up in -next or in Linus's tree right now?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/