Dear Alexander Holler,

In message <4d3ad19b.6030...@ahsoftware.de> you wrote:
> 
> because I've recently seen some other places where volatile is used to 
> access registers without using read?() or write?() and many people seem 
> to start using 4.5.1, I want to post this warning using a descriptive 
> subject.
> 
> The keyword volatile might not have any effect when reading when gcc 
> 4.5.0 or 4.5.1 is used.

Actuelly this warning should eventually be extended to carefully check
results when using any of the currently available 4.5.x versions of
GCC.

> The appropriate bug seems to be that one:
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45052

This is probably only one part of the problem.  Thereare a number of
other bugs in thes ecompiler versions, for example this one:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44392

Unfortunately there appears to be little interest within the GCC folks
to fix porolems that affect only such lunatic fringe groups as the
embedded folks, so I don't expect to see fixes any time soon.  Even
bigger projects like the Linux Foundation driven Poky (resp. Yocto
project) capitulated and stopped using -Os, see for example here:
http://thread.gmane.org/gmane.linux.embedded.poky/2311/focus=2565

Yes, "-Os" is default setting for U-Boot - changing it to (for example)
-O2 will generate significantly larger code and even break a number of
boards.


It appears there are a number of other issues with GCC 4.5.x that
affect us.  If you are using any such tool chain, and see strange
results or unexpected breakages, it is probably a very good idea to
try another (older, working) tool chain first, before spending any tme
on debugging.


> You might either change such code to use readb(), readw() or readl(), or 
> you have to use either an older version of gcc or a version >= 4.5.2 (it 
> is fixed in 4.5.2).

We will take care to provide working (at least with most of the
compiler versions) I/O accessors (including sufficient memory
barriers), and all code that uses the old volatile pointer approach
to access device registers should be converted to use proper I/O
acessors.

> A patch for write?() and read?() is currently in the 
> u-boot-arm-repository (but not in the master and not in 2010.12):
> 
> http://lists.denx.de/pipermail/u-boot/2011-January/084885.html


Thanks for raising this issue again.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
The ideal situation is to have massive computing power right at home.
Something that dims the streetlights and shrinks the picture  on  the
neighbours' TVs when you boot it up.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to