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