sparse warnings
Uwe Kleine-König
u.kleine-koenig at pengutronix.de
Thu Nov 18 05:22:06 EST 2010
On Thu, Nov 18, 2010 at 11:01:33AM +0100, Sascha Hauer wrote:
> On Thu, Nov 18, 2010 at 10:36:51AM +0100, Belisko Marek wrote:
> > Hi,
> >
> > On Wed, Nov 17, 2010 at 10:11 AM, Sascha Hauer <s.hauer at pengutronix.de> wrote:
> > > Hi Marek,
> > >
> > > On Mon, Nov 15, 2010 at 03:20:47PM +0100, Belisko Marek wrote:
> > >> Hi,
> > >>
> > >> barebox compilation with C=1 produce a lot of sparse warnings.
> > >> Mainly concerning __iomem problems with readb() and similar functions.
> > >>
> > >> Make it sense to take care or just could be omitted?
> > >
> > > I think it makes sense to work on this. Then we can see the useful
> > > warnings buried under the __iomem warnings.
> > >
> > > I had the idea of adding a
> > >
> > > #define IOMEM(addr) ((void __force __iomem *)(addr))
> > >
> > > and use it where appropriate.
> > Maybe stupid question but couldn't be __iomem mechanism removed completely?
> > Do we need to check for different address_space? In my opinion it
> > makes no sense in
> > barebox.
>
> I have a better feeling letting it in. There may be no different address
> spaces on Arm, but there are for exmample on x86.
> You can simply do a #define __iomem in include/linux/compiler.h to
> silence these kinds of warnings temporarily if you are not interested.
> I agree that at least on Arm these warnings will not reveal any real
> bugs.
I can imagine you to get hard to find bugs if you interpret a pointer to
registers as normal pointer without volatile. Something like:
unsigned long *register = 0xabcdef04;
while (*register & SOME_FLAG)
/* nothing */
This might generate code that corresponds to
if (*register & SOME_FLAG)
while(1);
So I feel for letting it in, too.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
More information about the barebox
mailing list