[U-Boot] Data Abort with gcc 7.1

Jörg Krause joerg.krause at embedded.rocks
Sun Jul 23 10:55:26 UTC 2017


Hi,

On Thu, 2017-07-13 at 01:43 +0100, Måns Rullgård wrote:
> Maxime Ripard <maxime.ripard at free-electrons.com> writes:
> 
> > Hi,
> > 
> > I recently got a gcc 7.1 based toolchain, and it seems like it
> > generates unaligned code, specifically in the net_set_ip_header
> > function in my case.
> > 
> > Whenever some packet is sent, this data abort is triggered:
> > 
> > => setenv ipaddr 10.42.0.1; ping 10.42.0.254
> > using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
> > MAC de:ad:be:ef:00:01
> > HOST MAC de:ad:be:af:00:00
> > RNDIS ready
> > musb-hdrc: peripheral reset irq lost!
> > high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
> > USB RNDIS network up!
> > Using usb_ether device
> > data abort
> > pc : [<7ff9db10>]	   lr : [<7ff9f00c>]
> > reloc pc : [<4a043b10>]	   lr : [<4a04500c>]
> > sp : 7bf37cc8  ip : 00000000	 fp : 7ff6236c
> > r10: 7ffed2b8  r9 : 7bf39ee8	 r8 : 7ffed2b8
> > r7 : 00000001  r6 : 00000000	 r5 : 0000002a  r4 : 7ffed30e
> > r3 : 14000045  r2 : 01002a0a	 r1 : fe002a0a  r0 : 7ffed30e
> > Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
> > Resetting CPU ...

I'm running into the same issue using a Buildroot GCC 7 toolchain.

[snip]

> What hardware did this happen on?  If it was on ARMv5, adding the packed
> attribute is probably the correct fix.  If it was ARMv6 or later,
> something else is broken as well.
> 

FWIW, the board I'm using is ARMv5 (an i.MX28).

Jörg Krause


More information about the U-Boot mailing list