1 # SPDX-License-Identifier: GPL-2.0 << 2 # 1 # 3 # linux/arch/sh/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 vmlinux image from the o !! 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 >> 29 >> 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" >> 32 >> 33 KBUILD_AFLAGS := $(KBUILD_AFLAGS) -D__ASSEMBLY__ \ >> 34 -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \ >> 35 -DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS) >> 36 >> 37 # decompressor objects (linked with vmlinuz) >> 38 vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/bswapsi.o >> 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 >> 46 endif >> 47 >> 48 vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o >> 49 >> 50 vmlinuzobjs-$(CONFIG_KERNEL_ZSTD) += $(obj)/bswapdi.o $(obj)/ashldi3.o $(obj)/clz_ctz.o >> 51 >> 52 targets := $(notdir $(vmlinuzobjs-y)) >> 53 >> 54 targets += vmlinux.bin >> 55 >> 56 OBJCOPYFLAGS_vmlinux.bin := $(OBJCOPYFLAGS) -O binary -R .comment -S >> 57 >> 58 $(obj)/vmlinux.bin: $(KBUILD_IMAGE) FORCE >> 59 $(call if_changed,objcopy) >> 60 >> 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 >> 68 >> 69 targets += vmlinux.bin.z >> 70 >> 71 $(obj)/vmlinux.bin.z: $(obj)/vmlinux.bin FORCE >> 72 $(call if_changed,$(tool_y)) >> 73 >> 74 targets += piggy.o dummy.o >> 75 >> 76 OBJCOPYFLAGS_piggy.o := --add-section=.image=$(obj)/vmlinux.bin.z \ >> 77 --set-section-flags=.image=contents,alloc,load,readonly,data >> 78 >> 79 $(obj)/piggy.o: $(obj)/dummy.o $(obj)/vmlinux.bin.z FORCE >> 80 $(call if_changed,objcopy) >> 81 >> 82 HOSTCFLAGS_calc_vmlinuz_load_addr.o += $(LINUXINCLUDE) >> 83 >> 84 # Calculate the load address of the compressed kernel image >> 85 hostprogs := calc_vmlinuz_load_addr >> 86 >> 87 ifneq (0x0,$(CONFIG_ZBOOT_LOAD_ADDRESS)) >> 88 zload-y = $(CONFIG_ZBOOT_LOAD_ADDRESS) >> 89 endif >> 90 >> 91 ifneq ($(zload-y),) >> 92 VMLINUZ_LOAD_ADDRESS := $(zload-y) >> 93 else >> 94 VMLINUZ_LOAD_ADDRESS = $(shell $(obj)/calc_vmlinuz_load_addr \ >> 95 $(obj)/vmlinux.bin $(LINKER_LOAD_ADDRESS)) >> 96 endif >> 97 UIMAGE_LOADADDR = $(VMLINUZ_LOAD_ADDRESS) >> 98 >> 99 vmlinuzobjs-y += $(obj)/piggy.o >> 100 >> 101 targets += ../../../../vmlinuz >> 102 >> 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 $@ 7 107 8 OBJECTS := head_32.o misc.o piggy.o \ !! 108 $(objtree)/vmlinuz: $(src)/ld.script $(vmlinuzobjs-y) $(obj)/calc_vmlinuz_load_addr 9 ashiftrt.o ashldi3.o ashrsi3.o ashl !! 109 $(call cmd,zld) >> 110 $(call cmd,strip) 10 111 11 targets := vmlinux vmlinux.bin vmlinux.bin.gz !! 112 objboot := $(objtree)/arch/mips/boot 12 vmlinux.bin.lzma vmlinux.bin.xz vml !! 113 >> 114 $(objboot)/vmlinuz: $(objtree)/vmlinuz FORCE 13 115 14 # 116 # 15 # IMAGE_OFFSET is the load offset of the compr !! 117 # Some DECstations need all possible sections of an ECOFF executable 16 # 118 # 17 ifeq ($(CONFIG_32BIT),y) !! 119 ifdef CONFIG_MACH_DECSTATION 18 IMAGE_OFFSET := $(shell /bin/bash -c 'print !! 120 e2eflag := -a 19 $$[$(CONFIG_MEMORY_START) !! 121 endif 20 $(CONFIG_BOOT_LINK_OFF !! 122 >> 123 # elf2ecoff can only handle 32bit image >> 124 hostprogs += ../elf2ecoff >> 125 >> 126 ifdef CONFIG_32BIT >> 127 VMLINUZ = $(objtree)/vmlinuz 21 else 128 else 22 IMAGE_OFFSET := $(shell /bin/bash -c 'print !! 129 VMLINUZ = $(objboot)/vmlinuz.32 23 $$[$(CONFIG_PAGE_OFFSET) << 24 $(KERNEL_MEMORY) + \ << 25 $(CONFIG_BOOT_LINK_OFF << 26 endif 130 endif 27 131 28 ccflags-remove-$(CONFIG_MCOUNT) += -pg !! 132 targets += ../vmlinuz.32 29 133 30 LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext !! 134 quiet_cmd_32 = OBJCOPY $@ 31 -T $(obj)/../../kernel/vmli !! 135 cmd_32 = $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@ 32 136 33 KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING !! 137 $(objboot)/vmlinuz.32: $(objtree)/vmlinuz >> 138 $(call cmd,32) 34 139 35 $(obj)/vmlinux: $(addprefix $(obj)/, $(OBJECTS !! 140 targets += ../vmlinuz.ecoff 36 $(call if_changed,ld) << 37 141 38 $(obj)/vmlinux.bin: vmlinux FORCE !! 142 quiet_cmd_ecoff = ECOFF $@ 39 $(call if_changed,objcopy) !! 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 40 179 41 $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORC !! 180 quiet_cmd_its_cat = CAT $@ 42 $(call if_changed,gzip) !! 181 cmd_its_cat = cat $(real-prereqs) >$@ 43 $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FOR << 44 $(call if_changed,bzip2_with_size) << 45 $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FO << 46 $(call if_changed,lzma_with_size) << 47 $(obj)/vmlinux.bin.xz: $(obj)/vmlinux.bin FORC << 48 $(call if_changed,xzkern_with_size) << 49 $(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FOR << 50 $(call if_changed,lzo_with_size) << 51 182 52 OBJCOPYFLAGS += -R .empty_zero_page !! 183 $(objboot)/vmlinuz.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS)) FORCE >> 184 $(call if_changed,its_cat) 53 185 54 LDFLAGS_piggy.o := -r --format binary --oforma !! 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) $@ 55 211 56 $(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmli !! 212 $(objboot)/vmlinuz.itb: $(objboot)/vmlinuz.its $(objboot)/vmlinuz.bin FORCE 57 $(call if_changed,ld) !! 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.