On Fri, 2009-08-14 at 17:29 -0400, Pavel Roskin wrote: > On Fri, 2009-08-14 at 23:00 +0200, Michael Buesch wrote: > > On Friday 14 August 2009 22:52:13 Pavel Roskin wrote: > > > On Fri, 2009-08-14 at 22:15 +0200, Michael Buesch wrote: > > > > > > > > - b43_phy_mask(dev, 0x048A, (u16)~0x8000); > > > > > + b43_phy_mask(dev, 0x048A, (u16)(~0x8000 & 0xFFFF)); > > > > > > > > > I would just use 0x7fff here. > > > > That does not work if 0x8000 is a #defined bit. > > One approach would be to use a macro and tell sparse to ignore it > > #define NEGATE(x) (__force typeof(x))(~x) Scratch that. It has no change to work for constants unless we hardcode the size, e.g. by having NEGATE16, NEGATE32 etc. The best I could do is: #define NEGATE16(x) (0xFFFF & ~x) b43_phy_mask(dev, 0x048A, NEGATE16(0x8000)); > Another approach would be to have b43_phy_mask() and similar functions > accept int and do the bit cutting in one place. I tend to think that it would be the best approach. > It should also be possible to have separate functions e.g. > b43_phy_unmask() that would do the negation, so that the caller won't > need to do it. This could make the code hard to read. -- Regards, Pavel Roskin -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html