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 | |
ee89bd6b | 30 | FONTC = $(srctree)/lib/fonts/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 | ||
1da177e4 LT |
47 | ifeq ($(CONFIG_ARCH_SA1100),y) |
48 | OBJS += head-sa1100.o | |
49 | endif | |
50 | ||
51 | ifeq ($(CONFIG_CPU_XSCALE),y) | |
52 | OBJS += head-xscale.o | |
53 | endif | |
54 | ||
9c3fca2e | 55 | ifeq ($(CONFIG_PXA_SHARPSL_DETECT_MACH_ID),y) |
1da177e4 LT |
56 | OBJS += head-sharpsl.o |
57 | endif | |
58 | ||
26584853 | 59 | ifeq ($(CONFIG_CPU_ENDIAN_BE32),y) |
f12d0d7c | 60 | ifeq ($(CONFIG_CPU_CP15),y) |
1da177e4 | 61 | OBJS += big-endian.o |
f12d0d7c HC |
62 | else |
63 | # The endian should be set by h/w design. | |
64 | endif | |
1da177e4 LT |
65 | endif |
66 | ||
bf98c1ea | 67 | ifeq ($(CONFIG_ARCH_SHMOBILE_LEGACY),y) |
9a4af112 KM |
68 | OBJS += head-shmobile.o |
69 | endif | |
70 | ||
1da177e4 LT |
71 | # |
72 | # We now have a PIC decompressor implementation. Decompressors running | |
73 | # from RAM should not define ZTEXTADDR. Decompressors running directly | |
74 | # from ROM or Flash must define ZTEXTADDR (preferably via the config) | |
75 | # FIXME: Previous assignment to ztextaddr-y is lost here. See SHARK | |
76 | ifeq ($(CONFIG_ZBOOT_ROM),y) | |
77 | ZTEXTADDR := $(CONFIG_ZBOOT_ROM_TEXT) | |
78 | ZBSSADDR := $(CONFIG_ZBOOT_ROM_BSS) | |
79 | else | |
80 | ZTEXTADDR := 0 | |
3bd2cbb9 | 81 | ZBSSADDR := ALIGN(8) |
1da177e4 LT |
82 | endif |
83 | ||
c79bf928 | 84 | CPPFLAGS_vmlinux.lds := -DTEXT_START="$(ZTEXTADDR)" -DBSS_START="$(ZBSSADDR)" |
1da177e4 | 85 | |
e7db7b42 AT |
86 | suffix_$(CONFIG_KERNEL_GZIP) = gzip |
87 | suffix_$(CONFIG_KERNEL_LZO) = lzo | |
6e8699f7 | 88 | suffix_$(CONFIG_KERNEL_LZMA) = lzma |
a7f464f3 | 89 | suffix_$(CONFIG_KERNEL_XZ) = xzkern |
f9b493ac | 90 | suffix_$(CONFIG_KERNEL_LZ4) = lz4 |
e7db7b42 | 91 | |
b90b9a38 NP |
92 | # Borrowed libfdt files for the ATAG compatibility mode |
93 | ||
94 | libfdt := fdt_rw.c fdt_ro.c fdt_wip.c fdt.c | |
95 | libfdt_hdrs := fdt.h libfdt.h libfdt_internal.h | |
96 | ||
97 | libfdt_objs := $(addsuffix .o, $(basename $(libfdt))) | |
98 | ||
99 | $(addprefix $(obj)/,$(libfdt) $(libfdt_hdrs)): $(obj)/%: $(srctree)/scripts/dtc/libfdt/% | |
100 | $(call cmd,shipped) | |
101 | ||
102 | $(addprefix $(obj)/,$(libfdt_objs) atags_to_fdt.o): \ | |
103 | $(addprefix $(obj)/,$(libfdt_hdrs)) | |
104 | ||
105 | ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y) | |
106 | OBJS += $(libfdt_objs) atags_to_fdt.o | |
107 | endif | |
108 | ||
e7db7b42 AT |
109 | targets := vmlinux vmlinux.lds \ |
110 | piggy.$(suffix_y) piggy.$(suffix_y).o \ | |
017f161a KP |
111 | lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S bswapsdi2.o \ |
112 | bswapsdi2.S font.o font.c head.o misc.o $(OBJS) | |
014c257c | 113 | |
f1b957d3 | 114 | # Make sure files are removed during clean |
f9b493ac | 115 | extra-y += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern piggy.lz4 \ |
017f161a | 116 | lib1funcs.S ashldi3.S bswapsdi2.S $(libfdt) $(libfdt_hdrs) \ |
c79bf928 | 117 | hyp-stub.S |
f1b957d3 | 118 | |
606576ce | 119 | ifeq ($(CONFIG_FUNCTION_TRACER),y) |
014c257c AS |
120 | ORIG_CFLAGS := $(KBUILD_CFLAGS) |
121 | KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) | |
122 | endif | |
123 | ||
b8083f86 | 124 | ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj) |
da94a829 | 125 | asflags-y := -DZIMAGE |
1da177e4 | 126 | |
5ffb04f6 | 127 | # Supply kernel BSS size to the decompressor via a linker symbol. |
1ec332a3 JK |
128 | KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \ |
129 | awk 'END{print $$3}') | |
5ffb04f6 | 130 | LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ) |
9e84ed63 RK |
131 | # Supply ZRELADDR to the decompressor via a linker symbol. |
132 | ifneq ($(CONFIG_AUTO_ZRELADDR),y) | |
d239b1dc | 133 | LDFLAGS_vmlinux += --defsym zreladdr=$(ZRELADDR) |
9e84ed63 | 134 | endif |
26584853 CM |
135 | ifeq ($(CONFIG_CPU_ENDIAN_BE8),y) |
136 | LDFLAGS_vmlinux += --be8 | |
137 | endif | |
e7db7b42 AT |
138 | # ? |
139 | LDFLAGS_vmlinux += -p | |
140 | # Report unresolved symbol references | |
141 | LDFLAGS_vmlinux += --no-undefined | |
142 | # Delete all temporary local symbols | |
143 | LDFLAGS_vmlinux += -X | |
144 | # Next argument is a linker script | |
145 | LDFLAGS_vmlinux += -T | |
146 | ||
147 | # For __aeabi_uidivmod | |
148 | lib1funcs = $(obj)/lib1funcs.o | |
149 | ||
63d15148 | 150 | $(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S |
e7db7b42 | 151 | $(call cmd,shipped) |
1da177e4 | 152 | |
a7f464f3 IK |
153 | # For __aeabi_llsl |
154 | ashldi3 = $(obj)/ashldi3.o | |
155 | ||
156 | $(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S | |
157 | $(call cmd,shipped) | |
158 | ||
017f161a KP |
159 | # For __bswapsi2, __bswapdi2 |
160 | bswapsdi2 = $(obj)/bswapsdi2.o | |
161 | ||
162 | $(obj)/bswapsdi2.S: $(srctree)/arch/$(SRCARCH)/lib/bswapsdi2.S | |
163 | $(call cmd,shipped) | |
164 | ||
8d7e4cc2 NP |
165 | # We need to prevent any GOTOFF relocs being used with references |
166 | # to symbols in the .bss section since we cannot relocate them | |
167 | # independently from the rest at run time. This can be achieved by | |
168 | # ensuring that no private .bss symbols exist, as global symbols | |
169 | # always have a GOT entry which is what we need. | |
170 | # The .data section is already discarded by the linker script so no need | |
171 | # to bother about it here. | |
172 | check_for_bad_syms = \ | |
173 | bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \ | |
174 | [ -z "$$bad_syms" ] || \ | |
175 | ( echo "following symbols must have non local/private scope:" >&2; \ | |
176 | echo "$$bad_syms" >&2; rm -f $@; false ) | |
177 | ||
60aac932 | 178 | check_for_multiple_zreladdr = \ |
4bdad983 | 179 | if [ $(words $(ZRELADDR)) -gt 1 -a "$(CONFIG_AUTO_ZRELADDR)" = "" ]; then \ |
60aac932 SH |
180 | echo 'multiple zreladdrs: $(ZRELADDR)'; \ |
181 | echo 'This needs CONFIG_AUTO_ZRELADDR to be set'; \ | |
182 | false; \ | |
183 | fi | |
184 | ||
e7db7b42 | 185 | $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \ |
017f161a KP |
186 | $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) \ |
187 | $(bswapsdi2) FORCE | |
60aac932 | 188 | @$(check_for_multiple_zreladdr) |
1da177e4 | 189 | $(call if_changed,ld) |
8d7e4cc2 | 190 | @$(check_for_bad_syms) |
1da177e4 | 191 | |
e7db7b42 AT |
192 | $(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE |
193 | $(call if_changed,$(suffix_y)) | |
1da177e4 | 194 | |
e7db7b42 | 195 | $(obj)/piggy.$(suffix_y).o: $(obj)/piggy.$(suffix_y) FORCE |
1da177e4 | 196 | |
4486b863 RK |
197 | CFLAGS_font.o := -Dstatic= |
198 | ||
199 | $(obj)/font.c: $(FONTC) | |
200 | $(call cmd,shipped) | |
1da177e4 | 201 | |
424e5994 DM |
202 | $(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S |
203 | $(call cmd,shipped) |