Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | # |
2 | # linux/arch/arm/boot/compressed/Makefile | |
3 | # | |
4 | # create a compressed vmlinuz image from the original vmlinux | |
5 | # | |
6 | ||
f45b1149 SH |
7 | OBJS = |
8 | ||
090ab3ff | 9 | # Ensure that MMCIF loader code appears early in the image |
f45b1149 SH |
10 | # to minimise that number of bocks that have to be read in |
11 | # order to load it. | |
12 | ifeq ($(CONFIG_ZBOOT_ROM_MMCIF),y) | |
f45b1149 SH |
13 | OBJS += mmcif-sh7372.o |
14 | endif | |
090ab3ff SH |
15 | |
16 | # Ensure that SDHI loader code appears early in the image | |
17 | # to minimise that number of bocks that have to be read in | |
18 | # order to load it. | |
19 | ifeq ($(CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI),y) | |
20 | OBJS += sdhi-shmobile.o | |
21 | OBJS += sdhi-sh7372.o | |
f45b1149 SH |
22 | endif |
23 | ||
e69edc79 | 24 | AFLAGS_head.o += -DTEXT_OFFSET=$(TEXT_OFFSET) |
1da177e4 | 25 | HEAD = head.o |
f45b1149 | 26 | OBJS += misc.o decompress.o |
3b4af9bc SG |
27 | ifeq ($(CONFIG_DEBUG_UNCOMPRESS),y) |
28 | OBJS += debug.o | |
29 | endif | |
4486b863 | 30 | FONTC = $(srctree)/drivers/video/console/font_acorn_8x8.c |
1da177e4 | 31 | |
df4879fa NP |
32 | # string library code (-Os is enforced to keep it much smaller) |
33 | OBJS += string.o | |
34 | CFLAGS_string.o := -Os | |
35 | ||
424e5994 DM |
36 | ifeq ($(CONFIG_ARM_VIRT_EXT),y) |
37 | OBJS += hyp-stub.o | |
38 | endif | |
39 | ||
1da177e4 LT |
40 | # |
41 | # Architecture dependencies | |
42 | # | |
43 | ifeq ($(CONFIG_ARCH_ACORN),y) | |
4486b863 | 44 | OBJS += ll_char_wr.o font.o |
1da177e4 LT |
45 | endif |
46 | ||
47 | ifeq ($(CONFIG_ARCH_SHARK),y) | |
48 | OBJS += head-shark.o ofw-shark.o | |
49 | endif | |
50 | ||
1da177e4 LT |
51 | ifeq ($(CONFIG_ARCH_SA1100),y) |
52 | OBJS += head-sa1100.o | |
53 | endif | |
54 | ||
55 | ifeq ($(CONFIG_CPU_XSCALE),y) | |
56 | OBJS += head-xscale.o | |
57 | endif | |
58 | ||
9c3fca2e | 59 | ifeq ($(CONFIG_PXA_SHARPSL_DETECT_MACH_ID),y) |
1da177e4 LT |
60 | OBJS += head-sharpsl.o |
61 | endif | |
62 | ||
26584853 | 63 | ifeq ($(CONFIG_CPU_ENDIAN_BE32),y) |
f12d0d7c | 64 | ifeq ($(CONFIG_CPU_CP15),y) |
1da177e4 | 65 | OBJS += big-endian.o |
f12d0d7c HC |
66 | else |
67 | # The endian should be set by h/w design. | |
68 | endif | |
1da177e4 LT |
69 | endif |
70 | ||
9a4af112 KM |
71 | ifeq ($(CONFIG_ARCH_SHMOBILE),y) |
72 | OBJS += head-shmobile.o | |
73 | endif | |
74 | ||
1da177e4 LT |
75 | # |
76 | # We now have a PIC decompressor implementation. Decompressors running | |
77 | # from RAM should not define ZTEXTADDR. Decompressors running directly | |
78 | # from ROM or Flash must define ZTEXTADDR (preferably via the config) | |
79 | # FIXME: Previous assignment to ztextaddr-y is lost here. See SHARK | |
80 | ifeq ($(CONFIG_ZBOOT_ROM),y) | |
81 | ZTEXTADDR := $(CONFIG_ZBOOT_ROM_TEXT) | |
82 | ZBSSADDR := $(CONFIG_ZBOOT_ROM_BSS) | |
83 | else | |
84 | ZTEXTADDR := 0 | |
3bd2cbb9 | 85 | ZBSSADDR := ALIGN(8) |
1da177e4 LT |
86 | endif |
87 | ||
88 | SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/ | |
89 | ||
e7db7b42 AT |
90 | suffix_$(CONFIG_KERNEL_GZIP) = gzip |
91 | suffix_$(CONFIG_KERNEL_LZO) = lzo | |
6e8699f7 | 92 | suffix_$(CONFIG_KERNEL_LZMA) = lzma |
a7f464f3 | 93 | suffix_$(CONFIG_KERNEL_XZ) = xzkern |
e7db7b42 | 94 | |
b90b9a38 NP |
95 | # Borrowed libfdt files for the ATAG compatibility mode |
96 | ||
97 | libfdt := fdt_rw.c fdt_ro.c fdt_wip.c fdt.c | |
98 | libfdt_hdrs := fdt.h libfdt.h libfdt_internal.h | |
99 | ||
100 | libfdt_objs := $(addsuffix .o, $(basename $(libfdt))) | |
101 | ||
102 | $(addprefix $(obj)/,$(libfdt) $(libfdt_hdrs)): $(obj)/%: $(srctree)/scripts/dtc/libfdt/% | |
103 | $(call cmd,shipped) | |
104 | ||
105 | $(addprefix $(obj)/,$(libfdt_objs) atags_to_fdt.o): \ | |
106 | $(addprefix $(obj)/,$(libfdt_hdrs)) | |
107 | ||
108 | ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y) | |
109 | OBJS += $(libfdt_objs) atags_to_fdt.o | |
110 | endif | |
111 | ||
e7db7b42 AT |
112 | targets := vmlinux vmlinux.lds \ |
113 | piggy.$(suffix_y) piggy.$(suffix_y).o \ | |
a7f464f3 IK |
114 | lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S \ |
115 | font.o font.c head.o misc.o $(OBJS) | |
014c257c | 116 | |
f1b957d3 | 117 | # Make sure files are removed during clean |
a7f464f3 | 118 | extra-y += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern \ |
69f91ff8 MD |
119 | lib1funcs.S ashldi3.S $(libfdt) $(libfdt_hdrs) \ |
120 | hyp-stub.S | |
f1b957d3 | 121 | |
606576ce | 122 | ifeq ($(CONFIG_FUNCTION_TRACER),y) |
014c257c AS |
123 | ORIG_CFLAGS := $(KBUILD_CFLAGS) |
124 | KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) | |
125 | endif | |
126 | ||
b8083f86 | 127 | ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj) |
da94a829 | 128 | asflags-y := -DZIMAGE |
1da177e4 | 129 | |
5ffb04f6 | 130 | # Supply kernel BSS size to the decompressor via a linker symbol. |
1ec332a3 JK |
131 | KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \ |
132 | awk 'END{print $$3}') | |
5ffb04f6 | 133 | LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ) |
9e84ed63 RK |
134 | # Supply ZRELADDR to the decompressor via a linker symbol. |
135 | ifneq ($(CONFIG_AUTO_ZRELADDR),y) | |
d239b1dc | 136 | LDFLAGS_vmlinux += --defsym zreladdr=$(ZRELADDR) |
9e84ed63 | 137 | endif |
26584853 CM |
138 | ifeq ($(CONFIG_CPU_ENDIAN_BE8),y) |
139 | LDFLAGS_vmlinux += --be8 | |
140 | endif | |
e7db7b42 AT |
141 | # ? |
142 | LDFLAGS_vmlinux += -p | |
143 | # Report unresolved symbol references | |
144 | LDFLAGS_vmlinux += --no-undefined | |
145 | # Delete all temporary local symbols | |
146 | LDFLAGS_vmlinux += -X | |
147 | # Next argument is a linker script | |
148 | LDFLAGS_vmlinux += -T | |
149 | ||
150 | # For __aeabi_uidivmod | |
151 | lib1funcs = $(obj)/lib1funcs.o | |
152 | ||
63d15148 | 153 | $(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S |
e7db7b42 | 154 | $(call cmd,shipped) |
1da177e4 | 155 | |
a7f464f3 IK |
156 | # For __aeabi_llsl |
157 | ashldi3 = $(obj)/ashldi3.o | |
158 | ||
159 | $(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S | |
160 | $(call cmd,shipped) | |
161 | ||
8d7e4cc2 NP |
162 | # We need to prevent any GOTOFF relocs being used with references |
163 | # to symbols in the .bss section since we cannot relocate them | |
164 | # independently from the rest at run time. This can be achieved by | |
165 | # ensuring that no private .bss symbols exist, as global symbols | |
166 | # always have a GOT entry which is what we need. | |
167 | # The .data section is already discarded by the linker script so no need | |
168 | # to bother about it here. | |
169 | check_for_bad_syms = \ | |
170 | bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \ | |
171 | [ -z "$$bad_syms" ] || \ | |
172 | ( echo "following symbols must have non local/private scope:" >&2; \ | |
173 | echo "$$bad_syms" >&2; rm -f $@; false ) | |
174 | ||
60aac932 | 175 | check_for_multiple_zreladdr = \ |
4bdad983 | 176 | if [ $(words $(ZRELADDR)) -gt 1 -a "$(CONFIG_AUTO_ZRELADDR)" = "" ]; then \ |
60aac932 SH |
177 | echo 'multiple zreladdrs: $(ZRELADDR)'; \ |
178 | echo 'This needs CONFIG_AUTO_ZRELADDR to be set'; \ | |
179 | false; \ | |
180 | fi | |
181 | ||
e7db7b42 | 182 | $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \ |
a7f464f3 | 183 | $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) FORCE |
60aac932 | 184 | @$(check_for_multiple_zreladdr) |
1da177e4 | 185 | $(call if_changed,ld) |
8d7e4cc2 | 186 | @$(check_for_bad_syms) |
1da177e4 | 187 | |
e7db7b42 AT |
188 | $(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE |
189 | $(call if_changed,$(suffix_y)) | |
1da177e4 | 190 | |
e7db7b42 | 191 | $(obj)/piggy.$(suffix_y).o: $(obj)/piggy.$(suffix_y) FORCE |
1da177e4 | 192 | |
4486b863 RK |
193 | CFLAGS_font.o := -Dstatic= |
194 | ||
195 | $(obj)/font.c: $(FONTC) | |
196 | $(call cmd,shipped) | |
1da177e4 | 197 | |
d93c333d | 198 | $(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile $(KCONFIG_CONFIG) |
1da177e4 | 199 | @sed "$(SEDFLAGS)" < $< > $@ |
424e5994 DM |
200 | |
201 | $(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S | |
202 | $(call cmd,shipped) |