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

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
...@@ -10,6 +10,7 @@ piggy.xzkern ...@@ -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
......
...@@ -114,7 +114,7 @@ targets := vmlinux vmlinux.lds \ ...@@ -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= ...@@ -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
......
...@@ -125,9 +125,10 @@ start: ...@@ -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
......
...@@ -7,6 +7,16 @@ ...@@ -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 ...@@ -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) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment