[U-Boot] [PATCH v5] bitops: introduce BIT() definition

Tom Rini trini at konsulko.com
Wed Sep 9 18:37:00 CEST 2015


On Wed, Sep 09, 2015 at 11:22:25AM -0500, Scott Wood wrote:
> On Tue, 2015-09-08 at 21:01 +0300, ivan.khoronzhuk wrote:
> > Hi, Andreas
> > 
> > On 07.09.15 14:43, Andreas Bießmann wrote:
> > > From: Heiko Schocher <hs at denx.de>
> > > 
> > > introduce BIT() definition, used in at91_udc gadget
> > > driver.
> > > 
> > > Signed-off-by: Heiko Schocher <hs at denx.de>
> > > [remove all other occurrences of BIT(x) definition]
> > > Signed-off-by: Andreas Bießmann <andreas.devel at googlemail.com>
> > > ---
> > > Full buildman is running
> > > 
> > 
> > ....
> > 
> > > 
> > > +#define BIT(nr)            (1UL << (nr))
> > 
> > Why UL? Why not simply 1 << (nr)?
> 
> That would give the wrong result for nr == 31 if used as a 64-bit number, and 
> would produce undefined behavior for nr >= 32 (though even with 1UL that 
> would be undefined on 32-bit builds).
> 
> > What if I need set ULL bit on 32-bit system?
> > Thanks for explanation.
> 
> Yes, ULL would be better.

That would be BIT_ULL(nr) ?  I want to assume that there was some care
given upstream here.  It was about 2 years ago now the kernel added a
specific BIT_ULL and family in addition to BIT(nr) from back in 2007.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150909/b338817f/attachment.sig>


More information about the U-Boot mailing list