[PATCH] usb: fix unaligned access

Eric Bénard eric at eukrea.com
Mon Oct 24 15:42:43 EDT 2011


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



More information about the barebox mailing list