Big endian working?

Nicolas Pitre
2014-04-09T03:44:31Z

On Tue, 8 Apr 2014, Arnd Bergmann wrote:

> On Tuesday 08 April 2014 12:14:22 Taras Kondratiuk wrote:
> > On 04/08/2014 10:54 AM, Thomas Petazzoni wrote:
> > > Hello Taras,
> > >
> > > I'm currently trying to get ARM BE to work on Armada XP. I'm pretty
> > > sure it used to work on 3.13, but now I'm testing 3.13 and 3.14 and it
> > > doesn't boot here (it hangs even before "Uncompressing kernel...",
> > > apparently while relocating the kernel image before decompression).
> > >
> > > Ben Dooks told me that the ARM BE kernel works for you. Can you confirm
> > > which kernel version you're using, and if you've applied any patch?
> > > Also, can you confirm which toolchain and toolchain version you're
> > > using?
> >
> > Hi Tom
> >
> > To boot BE kernel from LE u-boot I'm using a few patches on top of
> > upstream kernel.
> >
> > git://git.linaro.org/people/taras.kondratiuk/linux.git arm-be-boot-le
> >
> > ----------------------------------------------------------------
> > Ben Dooks (1):
> > ARM: add CPU_BE8_BOOT_LE configuration
> >
> > Nico Pitre (1):
> > ARM: ensure loader information in LE format for BE kernels
>
> Sorry for lacking the history on this patch set, but why would
> you ever want to have this as a compile-time conditional?
>
> Did anyone really put a u-boot on shipping hardware that expects
> the headers in big-endian format?

If I remember correctly, those are for booting a BE kernel on hardware
that initializes in LE mode and expects a LE kernel. Since the zImage
header values are defined to be words, those must be swapped so they
read as LE even if the kernel is BE. Of course the kernel is then
responsible for switching the endian mode when entered.

Nicolas