Messages in this thread | | | Date | Wed, 22 Jun 2011 08:40:22 -0700 | From | Greg KH <> | Subject | Re: brcm80211 build busted on big-endian |
| |
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
| |