1 # SPDX-License-Identifier: GPL-2.0-only << 2 # 1 # 3 # linux/arch/parisc/boot/compressed/Makefile !! 2 # This file is subject to the terms and conditions of the GNU General Public >> 3 # License. 4 # 4 # 5 # create a compressed self-extracting vmlinux !! 5 # Adapted for MIPS Pete Popov, Dan Malek 6 # 6 # >> 7 # Copyright (C) 1994 by Linus Torvalds >> 8 # Adapted for PowerPC by Gary Thomas >> 9 # modified by Cort (cort@cs.nmt.edu) >> 10 # >> 11 # Copyright (C) 2009 Lemote Inc. & DSLab, Lanzhou University >> 12 # Author: Wu Zhangjin <wuzhangjin@gmail.com> >> 13 # >> 14 >> 15 include $(srctree)/arch/mips/Kbuild.platforms >> 16 >> 17 # set the default size of the mallocing area for decompressing >> 18 BOOT_HEAP_SIZE := 0x400000 >> 19 >> 20 # Disable Function Tracer >> 21 KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE), $(KBUILD_CFLAGS)) >> 22 >> 23 KBUILD_CFLAGS := $(filter-out -fstack-protector, $(KBUILD_CFLAGS)) >> 24 >> 25 # Disable lq/sq in zboot >> 26 ifdef CONFIG_CPU_LOONGSON64 >> 27 KBUILD_CFLAGS := $(filter-out -march=loongson3a, $(KBUILD_CFLAGS)) -march=mips64r2 >> 28 endif 7 29 8 OBJECTS := head.o real2.o firmware.o misc.o pi !! 30 KBUILD_CFLAGS := $(KBUILD_CFLAGS) -D__KERNEL__ -D__DISABLE_EXPORTS \ 9 targets := vmlinux.lds vmlinux vmlinux.bin vml !! 31 -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) -D"VMLINUX_LOAD_ADDRESS_ULL=$(VMLINUX_LOAD_ADDRESS)ull" 10 targets += vmlinux.bin.xz vmlinux.bin.lzma vml << 11 targets += $(OBJECTS) sizes.h << 12 32 13 KBUILD_CFLAGS := -D__KERNEL__ -O2 -DBOOTLOADER !! 33 KBUILD_AFLAGS := $(KBUILD_AFLAGS) -D__ASSEMBLY__ \ 14 KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING !! 34 -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \ 15 KBUILD_CFLAGS += -fno-strict-aliasing !! 35 -DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS) 16 KBUILD_CFLAGS += $(cflags-y) -fno-delete-null- !! 36 17 KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdi !! 37 # decompressor objects (linked with vmlinuz) 18 ifndef CONFIG_64BIT !! 38 vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/bswapsi.o 19 KBUILD_CFLAGS += -mfast-indirect-calls !! 39 >> 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 20 endif 46 endif 21 47 22 LDFLAGS_vmlinux := -X -e startup --as-needed - !! 48 vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o 23 $(obj)/vmlinux: $(obj)/vmlinux.lds $(addprefix !! 49 24 $(call if_changed,ld) !! 50 vmlinuzobjs-$(CONFIG_KERNEL_ZSTD) += $(obj)/bswapdi.o $(obj)/ashldi3.o $(obj)/clz_ctz.o 25 51 26 sed-sizes := -e 's/^\([0-9a-fA-F]*\) . \(__bss !! 52 targets := $(notdir $(vmlinuzobjs-y)) 27 53 28 quiet_cmd_sizes = GEN $@ !! 54 targets += vmlinux.bin 29 cmd_sizes = $(NM) $< | sed -n $(sed-size << 30 55 31 $(obj)/sizes.h: vmlinux FORCE !! 56 OBJCOPYFLAGS_vmlinux.bin := $(OBJCOPYFLAGS) -O binary -R .comment -S 32 $(call if_changed,sizes) !! 57 >> 58 $(obj)/vmlinux.bin: $(KBUILD_IMAGE) FORCE >> 59 $(call if_changed,objcopy) 33 60 34 AFLAGS_head.o += -I$(objtree)/$(obj) -DBOOTLOA !! 61 tool_$(CONFIG_KERNEL_GZIP) = gzip 35 $(obj)/head.o: $(obj)/sizes.h !! 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 36 68 37 CFLAGS_misc.o += -I$(objtree)/$(obj) !! 69 targets += vmlinux.bin.z 38 $(obj)/misc.o: $(obj)/sizes.h << 39 70 40 AFLAGS_real2.o += -DBOOTLOADER !! 71 $(obj)/vmlinux.bin.z: $(obj)/vmlinux.bin FORCE >> 72 $(call if_changed,$(tool_y)) 41 73 42 CPPFLAGS_vmlinux.lds += -I$(objtree)/$(obj) -D !! 74 targets += piggy.o dummy.o 43 $(obj)/vmlinux.lds: $(obj)/sizes.h << 44 75 45 OBJCOPYFLAGS_vmlinux.bin := -R .comment -R .no !! 76 OBJCOPYFLAGS_piggy.o := --add-section=.image=$(obj)/vmlinux.bin.z \ 46 $(obj)/vmlinux.bin: vmlinux FORCE !! 77 --set-section-flags=.image=contents,alloc,load,readonly,data >> 78 >> 79 $(obj)/piggy.o: $(obj)/dummy.o $(obj)/vmlinux.bin.z FORCE 47 $(call if_changed,objcopy) 80 $(call if_changed,objcopy) 48 81 49 suffix-$(CONFIG_KERNEL_GZIP) := gz !! 82 HOSTCFLAGS_calc_vmlinuz_load_addr.o += $(LINUXINCLUDE) 50 suffix-$(CONFIG_KERNEL_BZIP2) := bz2 !! 83 51 suffix-$(CONFIG_KERNEL_LZ4) := lz4 !! 84 # Calculate the load address of the compressed kernel image 52 suffix-$(CONFIG_KERNEL_LZMA) := lzma !! 85 hostprogs := calc_vmlinuz_load_addr 53 suffix-$(CONFIG_KERNEL_LZO) := lzo !! 86 54 suffix-$(CONFIG_KERNEL_XZ) := xz !! 87 ifneq (0x0,$(CONFIG_ZBOOT_LOAD_ADDRESS)) 55 !! 88 zload-y = $(CONFIG_ZBOOT_LOAD_ADDRESS) 56 $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORC !! 89 endif 57 $(call if_changed,gzip) !! 90 58 $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FOR !! 91 ifneq ($(zload-y),) 59 $(call if_changed,bzip2_with_size) !! 92 VMLINUZ_LOAD_ADDRESS := $(zload-y) 60 $(obj)/vmlinux.bin.lz4: $(obj)/vmlinux.bin FOR !! 93 else 61 $(call if_changed,lz4_with_size) !! 94 VMLINUZ_LOAD_ADDRESS = $(shell $(obj)/calc_vmlinuz_load_addr \ 62 $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FO !! 95 $(obj)/vmlinux.bin $(LINKER_LOAD_ADDRESS)) 63 $(call if_changed,lzma_with_size) !! 96 endif 64 $(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FOR !! 97 UIMAGE_LOADADDR = $(VMLINUZ_LOAD_ADDRESS) 65 $(call if_changed,lzo_with_size) !! 98 66 $(obj)/vmlinux.bin.xz: $(obj)/vmlinux.bin FORC !! 99 vmlinuzobjs-y += $(obj)/piggy.o 67 $(call if_changed,xzkern_with_size) !! 100 68 !! 101 targets += ../../../../vmlinuz 69 LDFLAGS_piggy.o := -r --format binary --oforma !! 102 70 $(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmli !! 103 quiet_cmd_zld = LD $@ 71 $(call if_changed,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 $@ >> 107 >> 108 $(objtree)/vmlinuz: $(src)/ld.script $(vmlinuzobjs-y) $(obj)/calc_vmlinuz_load_addr >> 109 $(call cmd,zld) >> 110 $(call cmd,strip) >> 111 >> 112 objboot := $(objtree)/arch/mips/boot >> 113 >> 114 $(objboot)/vmlinuz: $(objtree)/vmlinuz FORCE >> 115 >> 116 # >> 117 # Some DECstations need all possible sections of an ECOFF executable >> 118 # >> 119 ifdef CONFIG_MACH_DECSTATION >> 120 e2eflag := -a >> 121 endif >> 122 >> 123 # elf2ecoff can only handle 32bit image >> 124 hostprogs += ../elf2ecoff >> 125 >> 126 ifdef CONFIG_32BIT >> 127 VMLINUZ = $(objtree)/vmlinuz >> 128 else >> 129 VMLINUZ = $(objboot)/vmlinuz.32 >> 130 endif >> 131 >> 132 targets += ../vmlinuz.32 >> 133 >> 134 quiet_cmd_32 = OBJCOPY $@ >> 135 cmd_32 = $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@ >> 136 >> 137 $(objboot)/vmlinuz.32: $(objtree)/vmlinuz >> 138 $(call cmd,32) >> 139 >> 140 targets += ../vmlinuz.ecoff >> 141 >> 142 quiet_cmd_ecoff = ECOFF $@ >> 143 cmd_ecoff = $< $(VMLINUZ) $@ $(e2eflag) >> 144 >> 145 $(objboot)/vmlinuz.ecoff: $(objboot)/elf2ecoff $(VMLINUZ) >> 146 $(call cmd,ecoff) >> 147 >> 148 targets += ../vmlinuz.bin >> 149 >> 150 OBJCOPYFLAGS_vmlinuz.bin := $(OBJCOPYFLAGS) -O binary >> 151 >> 152 $(objboot)/vmlinuz.bin: $(objtree)/vmlinuz >> 153 $(call cmd,objcopy) >> 154 >> 155 targets += ../vmlinuz.srec >> 156 >> 157 OBJCOPYFLAGS_vmlinuz.srec := $(OBJCOPYFLAGS) -S -O srec >> 158 >> 159 $(objboot)/vmlinuz.srec: $(objtree)/vmlinuz >> 160 $(call cmd,objcopy) >> 161 >> 162 targets += ../uzImage.bin >> 163 >> 164 $(objboot)/uzImage.bin: $(objboot)/vmlinuz.bin FORCE >> 165 $(call if_changed,uimage,none) >> 166 >> 167 # >> 168 # Flattened Image Tree (.itb) image >> 169 # >> 170 >> 171 ifeq ($(ADDR_BITS),32) >> 172 itb_addr_cells = 1 >> 173 endif >> 174 ifeq ($(ADDR_BITS),64) >> 175 itb_addr_cells = 2 >> 176 endif >> 177 >> 178 targets += ../vmlinuz.its.S >> 179 >> 180 quiet_cmd_its_cat = CAT $@ >> 181 cmd_its_cat = cat $(real-prereqs) >$@ >> 182 >> 183 $(objboot)/vmlinuz.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS)) FORCE >> 184 $(call if_changed,its_cat) >> 185 >> 186 targets += ../vmlinuz.its >> 187 >> 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) >> 197 >> 198 $(objboot)/vmlinuz.its: $(objboot)/vmlinuz.its.S FORCE >> 199 $(call if_changed,cpp_its_S,vmlinuz.bin) >> 200 >> 201 targets += ../vmlinuz.itb >> 202 >> 203 quiet_cmd_itb-image = ITB $@ >> 204 cmd_itb-image = \ >> 205 env PATH="$(objtree)/scripts/dtc:$(PATH)" \ >> 206 $(BASH) $(MKIMAGE) \ >> 207 -D "-I dts -O dtb -p 500 \ >> 208 --include $(objtree)/arch/mips \ >> 209 --warning no-unit_address_vs_reg" \ >> 210 -f $(2) $@ >> 211 >> 212 $(objboot)/vmlinuz.itb: $(objboot)/vmlinuz.its $(objboot)/vmlinuz.bin FORCE >> 213 $(call if_changed,itb-image,$<)
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.