Le 24/10/2011 21:30, Sascha Hauer a écrit :
On Mon, Oct 24, 2011 at 09:02:53PM +0200, Eric Bénard wrote:
Hi,
Le 24/10/2011 20:37, Fabian van der Werf a écrit :
Okay, I think it may be a compiler problem. The latest code sourcery
compiler builds a barebox that breaks on usb. 2009q1-203 builds fine,
however.
In the usb code the compiler should be able to figure out that the
access is unaligned from the packed structure. So I guess it should
split up the access in multiple loads/stores. I will look into the
binaries to confirm this. The latest compiler may be broken or maybe
the default behaviour has changed because armv7 actually supports
unaligned access.
can't this be the same problem described here with gcc 4.6 :
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/791552
solved by this patch :
https://launchpadlibrarian.net/73908303/0001-USB-ehci-remove-structure-packing-from-ehci_def.patch
with the following explanation :
The kernel source marks ehci_regs as packed. gcc 4.6 treats all
accesses to packed structures as unaligned and ends up reading the
status register multiple times.
If Fabians compiler would treat every access to packed structure members
as unaligned everything would be fine. The problem seems to be that it
doesn't treat it as unaligned. Let's wait for Fabians binary analysis.
maybe the complete explanation will explain better the problem as barebox
seems to have the same readl as linux :
http://gcc.gnu.org/ml/gcc/2011-02/msg00035.html
Eric
_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox