[PATCH 10/17] ARM: update atag-to-fdt code to be endian agnostic
Nicolas Pitre
nico at fluxnic.net
Tue Feb 12 16:53:26 EST 2013
On Mon, 11 Feb 2013, Ben Dooks wrote:
> On 09/02/13 12:05, Russell King - ARM Linux wrote:
> > On Fri, Feb 08, 2013 at 11:17:40PM +0000, Ben Dooks wrote:
> > > - if (atag->hdr.tag != ATAG_CORE ||
> > > - (atag->hdr.size != tag_size(tag_core)&&
> > > - atag->hdr.size != 2))
> > > + if (atag->hdr.tag != atag32_to_cpu(ATAG_CORE) ||
> > > + (atag->hdr.size != atag32_to_cpu(tag_size(tag_core))&&
> > > + atag->hdr.size != atag32_to_cpu(2)))
> >
> > This is wrong. You're saying that "ATAG_CORE" is in LE32 format. It
> > isn't. It's in CPU endian format. If you want to do this kind of thing,
> > you also need to define cpu_to_atag32() macros as well, otherwise this
> > will cause sparse warnings.
> >
> > > - initrd_start = atag->u.initrd.start;
> > > - initrd_size = atag->u.initrd.size;
> > > + initrd_start = atag32_to_cpu(atag->u.initrd.start);
> > > + initrd_size = atag32_to_cpu(____atag->u.initrd.size);
> >
> > Where did those four underscores come from? Has this been built?
>
> I probably missed building this one. I've been mostly testing with DT
> based systems.
Is this BE8 mode available on old systems? Or, will those BE8
capable old systems have BE userland compiled for them?
Where I want to get to is: do we need to support BE8 mode for ATAG based
systems at all, given that most if not all the modern ones should be DT
based now? Making the ATAG code BE8 aware is looking to be quite
invasive for potentially no users at all.
Nicolas
More information about the linux-arm-kernel
mailing list