Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 33656d56 authored by Nicolas Pitre's avatar Nicolas Pitre Committed by Russell King
Browse files

ARM: 8067/1: zImage: ensure header in LE format for BE8 kernels



All known BE8-capable systems have LE bootloaders, so we need to ensure
that the magic number and image start/end values are in little endian
format.

[ben.dooks@codethink.co.uk: from nico's original email on this subject]
[taras.kondratiuk@linaro.org: removed lds.S->lds rule, added target to extra-y]

Signed-off-by: default avatarNicolas Pitre <nico@fluxnic.net>
Signed-off-by: default avatarBen Dooks <ben.dooks@codethink.co.uk>
Signed-off-by: default avatarTaras Kondratiuk <taras.kondratiuk@linaro.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 5c65c360
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ piggy.xzkern
piggy.lz4
piggy.lz4
vmlinux
vmlinux
vmlinux.lds
vmlinux.lds
vmlinux.lds.S


# borrowed libfdt files
# borrowed libfdt files
fdt.c
fdt.c
+2 −2
Original line number Original line Diff line number Diff line
@@ -114,7 +114,7 @@ targets := vmlinux vmlinux.lds \
# Make sure files are removed during clean
# Make sure files are removed during clean
extra-y       += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern piggy.lz4 \
extra-y       += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern piggy.lz4 \
		 lib1funcs.S ashldi3.S bswapsdi2.S $(libfdt) $(libfdt_hdrs) \
		 lib1funcs.S ashldi3.S bswapsdi2.S $(libfdt) $(libfdt_hdrs) \
		 hyp-stub.S
		 hyp-stub.S vmlinux.lds.S


ifeq ($(CONFIG_FUNCTION_TRACER),y)
ifeq ($(CONFIG_FUNCTION_TRACER),y)
ORIG_CFLAGS := $(KBUILD_CFLAGS)
ORIG_CFLAGS := $(KBUILD_CFLAGS)
@@ -199,7 +199,7 @@ CFLAGS_font.o := -Dstatic=
$(obj)/font.c: $(FONTC)
$(obj)/font.c: $(FONTC)
	$(call cmd,shipped)
	$(call cmd,shipped)


$(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile $(KCONFIG_CONFIG)
$(obj)/vmlinux.lds.S: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile $(KCONFIG_CONFIG)
	@sed "$(SEDFLAGS)" < $< > $@
	@sed "$(SEDFLAGS)" < $< > $@


$(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S
$(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S
+4 −3
Original line number Original line Diff line number Diff line
@@ -125,9 +125,10 @@ start:
 THUMB(		adr	r12, BSYM(1f)	)
 THUMB(		adr	r12, BSYM(1f)	)
 THUMB(		bx	r12		)
 THUMB(		bx	r12		)


		.word	0x016f2818		@ Magic numbers to help the loader
		.word	_magic_sig	@ Magic numbers to help the loader
		.word	start			@ absolute load/run zImage address
		.word	_magic_start	@ absolute load/run zImage address
		.word	_edata			@ zImage end address
		.word	_magic_end	@ zImage end address

 THUMB(		.thumb			)
 THUMB(		.thumb			)
1:
1:
 ARM_BE8(	setend	be )			@ go BE8 if compiled for BE8
 ARM_BE8(	setend	be )			@ go BE8 if compiled for BE8
+14 −0
Original line number Original line Diff line number Diff line
@@ -7,6 +7,16 @@
 * it under the terms of the GNU General Public License version 2 as
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 * published by the Free Software Foundation.
 */
 */

#ifdef CONFIG_CPU_ENDIAN_BE8
#define ZIMAGE_MAGIC(x) ( (((x) >> 24) & 0x000000ff) | \
			  (((x) >>  8) & 0x0000ff00) | \
			  (((x) <<  8) & 0x00ff0000) | \
			  (((x) << 24) & 0xff000000) )
#else
#define ZIMAGE_MAGIC(x) (x)
#endif

OUTPUT_ARCH(arm)
OUTPUT_ARCH(arm)
ENTRY(_start)
ENTRY(_start)
SECTIONS
SECTIONS
@@ -57,6 +67,10 @@ SECTIONS
  .pad			: { BYTE(0); . = ALIGN(8); }
  .pad			: { BYTE(0); . = ALIGN(8); }
  _edata = .;
  _edata = .;


  _magic_sig = ZIMAGE_MAGIC(0x016f2818);
  _magic_start = ZIMAGE_MAGIC(_start);
  _magic_end = ZIMAGE_MAGIC(_edata);

  . = BSS_START;
  . = BSS_START;
  __bss_start = .;
  __bss_start = .;
  .bss			: { *(.bss) }
  .bss			: { *(.bss) }