aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Pitre <nico@fluxnic.net>2014-06-02 12:32:25 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2014-07-01 10:00:28 -0400
commit33656d565da51bd01779600352ec28385ab806c8 (patch)
tree47b1dfdc7c2716c0553d41572d3775c410c50425
parent5c65c360da06635f985684fa0ab41027660d0804 (diff)
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: Nicolas Pitre <nico@fluxnic.net> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/boot/compressed/.gitignore1
-rw-r--r--arch/arm/boot/compressed/Makefile4
-rw-r--r--arch/arm/boot/compressed/head.S7
-rw-r--r--arch/arm/boot/compressed/vmlinux.lds.in14
4 files changed, 21 insertions, 5 deletions
diff --git a/arch/arm/boot/compressed/.gitignore b/arch/arm/boot/compressed/.gitignore
index 0714e0334e33..6a26e7bcb714 100644
--- a/arch/arm/boot/compressed/.gitignore
+++ b/arch/arm/boot/compressed/.gitignore
@@ -10,6 +10,7 @@ piggy.xzkern
10piggy.lz4 10piggy.lz4
11vmlinux 11vmlinux
12vmlinux.lds 12vmlinux.lds
13vmlinux.lds.S
13 14
14# borrowed libfdt files 15# borrowed libfdt files
15fdt.c 16fdt.c
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 68c918362b79..8a8090694d89 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -114,7 +114,7 @@ targets := vmlinux vmlinux.lds \
114# Make sure files are removed during clean 114# Make sure files are removed during clean
115extra-y += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern piggy.lz4 \ 115extra-y += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern piggy.lz4 \
116 lib1funcs.S ashldi3.S bswapsdi2.S $(libfdt) $(libfdt_hdrs) \ 116 lib1funcs.S ashldi3.S bswapsdi2.S $(libfdt) $(libfdt_hdrs) \
117 hyp-stub.S 117 hyp-stub.S vmlinux.lds.S
118 118
119ifeq ($(CONFIG_FUNCTION_TRACER),y) 119ifeq ($(CONFIG_FUNCTION_TRACER),y)
120ORIG_CFLAGS := $(KBUILD_CFLAGS) 120ORIG_CFLAGS := $(KBUILD_CFLAGS)
@@ -199,7 +199,7 @@ CFLAGS_font.o := -Dstatic=
199$(obj)/font.c: $(FONTC) 199$(obj)/font.c: $(FONTC)
200 $(call cmd,shipped) 200 $(call cmd,shipped)
201 201
202$(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile $(KCONFIG_CONFIG) 202$(obj)/vmlinux.lds.S: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile $(KCONFIG_CONFIG)
203 @sed "$(SEDFLAGS)" < $< > $@ 203 @sed "$(SEDFLAGS)" < $< > $@
204 204
205$(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S 205$(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 3a8b32df6b31..c95feab6ce7f 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -125,9 +125,10 @@ start:
125 THUMB( adr r12, BSYM(1f) ) 125 THUMB( adr r12, BSYM(1f) )
126 THUMB( bx r12 ) 126 THUMB( bx r12 )
127 127
128 .word 0x016f2818 @ Magic numbers to help the loader 128 .word _magic_sig @ Magic numbers to help the loader
129 .word start @ absolute load/run zImage address 129 .word _magic_start @ absolute load/run zImage address
130 .word _edata @ zImage end address 130 .word _magic_end @ zImage end address
131
131 THUMB( .thumb ) 132 THUMB( .thumb )
1321: 1331:
133 ARM_BE8( setend be ) @ go BE8 if compiled for BE8 134 ARM_BE8( setend be ) @ go BE8 if compiled for BE8
diff --git a/arch/arm/boot/compressed/vmlinux.lds.in b/arch/arm/boot/compressed/vmlinux.lds.in
index 4919f2ac8b89..60162231c7ea 100644
--- a/arch/arm/boot/compressed/vmlinux.lds.in
+++ b/arch/arm/boot/compressed/vmlinux.lds.in
@@ -7,6 +7,16 @@
7 * it under the terms of the GNU General Public License version 2 as 7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
9 */ 9 */
10
11#ifdef CONFIG_CPU_ENDIAN_BE8
12#define ZIMAGE_MAGIC(x) ( (((x) >> 24) & 0x000000ff) | \
13 (((x) >> 8) & 0x0000ff00) | \
14 (((x) << 8) & 0x00ff0000) | \
15 (((x) << 24) & 0xff000000) )
16#else
17#define ZIMAGE_MAGIC(x) (x)
18#endif
19
10OUTPUT_ARCH(arm) 20OUTPUT_ARCH(arm)
11ENTRY(_start) 21ENTRY(_start)
12SECTIONS 22SECTIONS
@@ -57,6 +67,10 @@ SECTIONS
57 .pad : { BYTE(0); . = ALIGN(8); } 67 .pad : { BYTE(0); . = ALIGN(8); }
58 _edata = .; 68 _edata = .;
59 69
70 _magic_sig = ZIMAGE_MAGIC(0x016f2818);
71 _magic_start = ZIMAGE_MAGIC(_start);
72 _magic_end = ZIMAGE_MAGIC(_edata);
73
60 . = BSS_START; 74 . = BSS_START;
61 __bss_start = .; 75 __bss_start = .;
62 .bss : { *(.bss) } 76 .bss : { *(.bss) }