2 # This file is subject to the terms and conditions of the GNU General Public
5 # Adapted for MIPS Pete Popov, Dan Malek
7 # Copyright (C) 1994 by Linus Torvalds
8 # Adapted for PowerPC by Gary Thomas
9 # modified by Cort (cort@cs.nmt.edu)
11 # Copyright (C) 2009 Lemote Inc. & DSLab, Lanzhou University
12 # Author: Wu Zhangjin <wuzhangjin@gmail.com>
15 include $(srctree
)/arch
/mips
/Kbuild.platforms
17 # set the default size of the mallocing area for decompressing
18 BOOT_HEAP_SIZE
:= 0x400000
20 # Disable Function Tracer
21 KBUILD_CFLAGS
:= $(filter-out $(CC_FLAGS_FTRACE
), $(KBUILD_CFLAGS
))
23 KBUILD_CFLAGS
:= $(filter-out -fstack-protector
, $(KBUILD_CFLAGS
))
25 # Disable lq/sq in zboot
26 ifdef CONFIG_CPU_LOONGSON64
27 KBUILD_CFLAGS
:= $(filter-out -march
=loongson3a
, $(KBUILD_CFLAGS
)) -march
=mips64r2
30 KBUILD_CFLAGS
:= $(KBUILD_CFLAGS
) -D__KERNEL__
-D__DISABLE_EXPORTS \
31 -DBOOT_HEAP_SIZE
=$(BOOT_HEAP_SIZE
) -D
"VMLINUX_LOAD_ADDRESS_ULL=$(VMLINUX_LOAD_ADDRESS)ull"
33 KBUILD_AFLAGS
:= $(KBUILD_AFLAGS
) -D__ASSEMBLY__ \
34 -DBOOT_HEAP_SIZE
=$(BOOT_HEAP_SIZE
) \
35 -DKERNEL_ENTRY
=$(VMLINUX_ENTRY_ADDRESS
)
37 # decompressor objects (linked with vmlinuz)
38 vmlinuzobjs-y
:= $(obj
)/head.o
$(obj
)/decompress.o
$(obj
)/string.o
$(obj
)/bswapsi.o
40 ifdef CONFIG_DEBUG_ZBOOT
41 vmlinuzobjs-
$(CONFIG_DEBUG_ZBOOT
) += $(obj
)/dbg.o
42 vmlinuzobjs-
$(CONFIG_SYS_SUPPORTS_ZBOOT_UART16550
) += $(obj
)/uart-16550.o
43 vmlinuzobjs-
$(CONFIG_SYS_SUPPORTS_ZBOOT_UART_PROM
) += $(obj
)/uart-prom.o
44 vmlinuzobjs-
$(CONFIG_MIPS_ALCHEMY
) += $(obj
)/uart-alchemy.o
45 vmlinuzobjs-
$(CONFIG_ATH79
) += $(obj
)/uart-ath79.o
48 vmlinuzobjs-
$(CONFIG_KERNEL_XZ
) += $(obj
)/ashldi3.o
50 vmlinuzobjs-
$(CONFIG_KERNEL_ZSTD
) += $(obj
)/bswapdi.o
$(obj
)/ashldi3.o
$(obj
)/clz_ctz.o
52 targets
:= $(notdir $(vmlinuzobjs-y
))
54 targets
+= vmlinux.bin
56 OBJCOPYFLAGS_vmlinux.bin
:= $(OBJCOPYFLAGS
) -O binary
-R .comment
-S
58 $(obj
)/vmlinux.bin
: $(KBUILD_IMAGE
) FORCE
59 $(call if_changed
,objcopy
)
61 tool_
$(CONFIG_KERNEL_GZIP
) = gzip
62 tool_
$(CONFIG_KERNEL_BZIP2
) = bzip2_with_size
63 tool_
$(CONFIG_KERNEL_LZ4
) = lz4_with_size
64 tool_
$(CONFIG_KERNEL_LZMA
) = lzma_with_size
65 tool_
$(CONFIG_KERNEL_LZO
) = lzo_with_size
66 tool_
$(CONFIG_KERNEL_XZ
) = xzkern_with_size
67 tool_
$(CONFIG_KERNEL_ZSTD
) = zstd22_with_size
69 targets
+= vmlinux.bin.z
71 $(obj
)/vmlinux.bin.z
: $(obj
)/vmlinux.bin FORCE
72 $(call if_changed
,$(tool_y
))
74 targets
+= piggy.o dummy.o
76 OBJCOPYFLAGS_piggy.o
:= --add-section
=.image
=$(obj
)/vmlinux.bin.z \
77 --set-section-flags
=.image
=contents
,alloc
,load
,readonly
,data
79 $(obj
)/piggy.o
: $(obj
)/dummy.o
$(obj
)/vmlinux.bin.z FORCE
80 $(call if_changed
,objcopy
)
82 HOSTCFLAGS_calc_vmlinuz_load_addr.o
+= $(LINUXINCLUDE
)
84 # Calculate the load address of the compressed kernel image
85 hostprogs
:= calc_vmlinuz_load_addr
87 ifneq (0x0,$(CONFIG_ZBOOT_LOAD_ADDRESS
))
88 zload-y
= $(CONFIG_ZBOOT_LOAD_ADDRESS
)
92 VMLINUZ_LOAD_ADDRESS
:= $(zload-y
)
94 VMLINUZ_LOAD_ADDRESS
= $(shell $(obj
)/calc_vmlinuz_load_addr \
95 $(obj
)/vmlinux.bin
$(LINKER_LOAD_ADDRESS
))
97 UIMAGE_LOADADDR
= $(VMLINUZ_LOAD_ADDRESS
)
99 vmlinuzobjs-y
+= $(obj
)/piggy.o
101 targets
+= ..
/..
/..
/..
/vmlinuz
103 quiet_cmd_zld
= LD
$@
104 cmd_zld
= $(LD
) $(KBUILD_LDFLAGS
) -Ttext
$(VMLINUZ_LOAD_ADDRESS
) -T
$< $(vmlinuzobjs-y
) -o
$@
105 quiet_cmd_strip
= STRIP
$@
106 cmd_strip
= $(STRIP
) -s
$@
108 $(objtree
)/vmlinuz
: $(src
)/ld.script
$(vmlinuzobjs-y
) $(obj
)/calc_vmlinuz_load_addr
112 objboot
:= $(objtree
)/arch
/mips
/boot
114 $(objboot
)/vmlinuz
: $(objtree
)/vmlinuz FORCE
117 # Some DECstations need all possible sections of an ECOFF executable
119 ifdef CONFIG_MACH_DECSTATION
123 # elf2ecoff can only handle 32bit image
124 hostprogs
+= ..
/elf2ecoff
127 VMLINUZ
= $(objtree
)/vmlinuz
129 VMLINUZ
= $(objboot
)/vmlinuz
.32
132 targets
+= ..
/vmlinuz
.32
134 quiet_cmd_32
= OBJCOPY
$@
135 cmd_32
= $(OBJCOPY
) -O
$(32bit-bfd
) $(OBJCOPYFLAGS
) $< $@
137 $(objboot
)/vmlinuz
.32: $(objtree
)/vmlinuz
140 targets
+= ..
/vmlinuz.ecoff
142 quiet_cmd_ecoff
= ECOFF
$@
143 cmd_ecoff
= $< $(VMLINUZ
) $@
$(e2eflag
)
145 $(objboot
)/vmlinuz.ecoff
: $(objboot
)/elf2ecoff
$(VMLINUZ
)
148 targets
+= ..
/vmlinuz.bin
150 OBJCOPYFLAGS_vmlinuz.bin
:= $(OBJCOPYFLAGS
) -O binary
152 $(objboot
)/vmlinuz.bin
: $(objtree
)/vmlinuz
155 targets
+= ..
/vmlinuz.srec
157 OBJCOPYFLAGS_vmlinuz.srec
:= $(OBJCOPYFLAGS
) -S
-O srec
159 $(objboot
)/vmlinuz.srec
: $(objtree
)/vmlinuz
162 targets
+= ..
/uzImage.bin
164 $(objboot
)/uzImage.bin
: $(objboot
)/vmlinuz.bin FORCE
165 $(call if_changed
,uimage
,none
)
168 # Flattened Image Tree (.itb) image
171 ifeq ($(ADDR_BITS
),32)
174 ifeq ($(ADDR_BITS
),64)
178 targets
+= ..
/vmlinuz.its.S
180 quiet_cmd_its_cat
= CAT
$@
181 cmd_its_cat
= cat
$(real-prereqs
) >$@
183 $(objboot
)/vmlinuz.its.S
: $(addprefix $(srctree
)/arch
/mips
/$(PLATFORM
)/,$(ITS_INPUTS
)) FORCE
184 $(call if_changed
,its_cat
)
186 targets
+= ..
/vmlinuz.its
188 quiet_cmd_cpp_its_S
= ITS
$@
189 cmd_cpp_its_S
= $(CPP
) -P
-C
-o
$@
$< \
190 -DKERNEL_NAME
="\"Linux $(KERNELRELEASE)\"" \
191 -DVMLINUX_BINARY
="\"$(2)\"" \
192 -DVMLINUX_COMPRESSION
="\"none\"" \
193 -DVMLINUX_LOAD_ADDRESS
=$(VMLINUZ_LOAD_ADDRESS
) \
194 -DVMLINUX_ENTRY_ADDRESS
=$(VMLINUZ_LOAD_ADDRESS
) \
195 -DADDR_BITS
=$(ADDR_BITS
) \
196 -DADDR_CELLS
=$(itb_addr_cells
)
198 $(objboot
)/vmlinuz.its
: $(objboot
)/vmlinuz.its.S FORCE
199 $(call if_changed
,cpp_its_S
,vmlinuz.bin
)
201 targets
+= ..
/vmlinuz.itb
203 quiet_cmd_itb-image
= ITB
$@
205 env PATH
="$(objtree)/scripts/dtc:$(PATH)" \
207 -D
"-I dts -O dtb -p 500 \
208 --include $(objtree)/arch/mips \
209 --warning no-unit_address_vs_reg" \
212 $(objboot
)/vmlinuz.itb
: $(objboot
)/vmlinuz.its
$(objboot
)/vmlinuz.bin FORCE
213 $(call if_changed
,itb-image
,$<)