18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci# 38c2ecf20Sopenharmony_ci# Author: Huacai Chen <chenhuacai@loongson.cn> 48c2ecf20Sopenharmony_ci# Copyright (C) 2020 Loongson Technology Corporation Limited 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ciOBJECT_FILES_NON_STANDARD := y 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciinclude $(srctree)/arch/loongarch/Kbuild.platforms 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci# set the default size of the mallocing area for decompressing 118c2ecf20Sopenharmony_ciBOOT_HEAP_SIZE := 0x400000 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ciifdef CONFIG_KASAN 148c2ecf20Sopenharmony_ciKASAN_SANITIZE := n 158c2ecf20Sopenharmony_ciendif 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci# Disable Function Tracer 188c2ecf20Sopenharmony_ciKBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE), $(KBUILD_CFLAGS)) 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciKBUILD_CFLAGS := $(filter-out -fstack-protector, $(KBUILD_CFLAGS)) 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ciKBUILD_CFLAGS += -fpie -include $(srctree)/include/linux/hidden.h 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ciKBUILD_CFLAGS := $(KBUILD_CFLAGS) -D__KERNEL__ \ 258c2ecf20Sopenharmony_ci -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \ 268c2ecf20Sopenharmony_ci -D"VMLINUX_LOAD_ADDRESS_ULL=$(VMLINUX_LOAD_ADDRESS)ull" \ 278c2ecf20Sopenharmony_ci -D"KERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS)ull" \ 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ciKBUILD_AFLAGS := $(KBUILD_AFLAGS) -D__ASSEMBLY__ \ 308c2ecf20Sopenharmony_ci -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \ 318c2ecf20Sopenharmony_ci -DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS) 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci# decompressor objects (linked with vmlinuz) 348c2ecf20Sopenharmony_civmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciifdef CONFIG_DEBUG_ZBOOT 378c2ecf20Sopenharmony_civmlinuzobjs-$(CONFIG_DEBUG_ZBOOT) += $(obj)/dbg.o 388c2ecf20Sopenharmony_civmlinuzobjs-$(CONFIG_DEBUG_ZBOOT) += $(obj)/uart-16550.o 398c2ecf20Sopenharmony_ciendif 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_civmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ciextra-y += ashldi3.c 448c2ecf20Sopenharmony_ci$(obj)/ashldi3.c: $(obj)/%.c: $(srctree)/lib/%.c FORCE 458c2ecf20Sopenharmony_ci $(call if_changed,shipped) 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_citargets := $(notdir $(vmlinuzobjs-y)) 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_citargets += vmlinux.bin 508c2ecf20Sopenharmony_ciOBJCOPYFLAGS_vmlinux.bin := $(OBJCOPYFLAGS) -O binary -R .comment -S 518c2ecf20Sopenharmony_ci$(obj)/vmlinux.bin: vmlinux FORCE 528c2ecf20Sopenharmony_ci $(call if_changed,objcopy) 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_citool_$(CONFIG_KERNEL_GZIP) = gzip 558c2ecf20Sopenharmony_citool_$(CONFIG_KERNEL_BZIP2) = bzip2 568c2ecf20Sopenharmony_citool_$(CONFIG_KERNEL_LZ4) = lz4 578c2ecf20Sopenharmony_citool_$(CONFIG_KERNEL_LZMA) = lzma 588c2ecf20Sopenharmony_citool_$(CONFIG_KERNEL_LZO) = lzo 598c2ecf20Sopenharmony_citool_$(CONFIG_KERNEL_XZ) = xzkern 608c2ecf20Sopenharmony_citool_$(CONFIG_KERNEL_ZSTD) = zstd22 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_citargets += vmlinux.bin.z 638c2ecf20Sopenharmony_ci$(obj)/vmlinux.bin.z: $(obj)/vmlinux.bin FORCE 648c2ecf20Sopenharmony_ci $(call if_changed,$(tool_y)) 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_citargets += piggy.o dummy.o 678c2ecf20Sopenharmony_ciOBJCOPYFLAGS_piggy.o := --add-section=.image=$(obj)/vmlinux.bin.z \ 688c2ecf20Sopenharmony_ci --set-section-flags=.image=contents,alloc,load,readonly,data 698c2ecf20Sopenharmony_ci$(obj)/piggy.o: $(obj)/dummy.o $(obj)/vmlinux.bin.z FORCE 708c2ecf20Sopenharmony_ci $(call if_changed,objcopy) 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ciHOSTCFLAGS_calc_vmlinuz_load_addr.o += $(LINUXINCLUDE) 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci# Calculate the load address of the compressed kernel image 758c2ecf20Sopenharmony_cihostprogs := calc_vmlinuz_load_addr 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ciifneq ($(zload-y),) 788c2ecf20Sopenharmony_ciVMLINUZ_LOAD_ADDRESS := $(zload-y) 798c2ecf20Sopenharmony_cielse 808c2ecf20Sopenharmony_ciVMLINUZ_LOAD_ADDRESS = $(shell $(obj)/calc_vmlinuz_load_addr \ 818c2ecf20Sopenharmony_ci $(obj)/vmlinux.bin $(VMLINUX_LOAD_ADDRESS)) 828c2ecf20Sopenharmony_ciendif 838c2ecf20Sopenharmony_ciUIMAGE_LOADADDR = $(VMLINUZ_LOAD_ADDRESS) 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_civmlinuzobjs-y += $(obj)/piggy.o 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ciquiet_cmd_zld = LD $@ 888c2ecf20Sopenharmony_ci cmd_zld = $(LD) $(KBUILD_LDFLAGS) -Ttext $(VMLINUZ_LOAD_ADDRESS) -T $< $(vmlinuzobjs-y) -o $@ 898c2ecf20Sopenharmony_ciquiet_cmd_strip = STRIP $@ 908c2ecf20Sopenharmony_ci cmd_strip = $(STRIP) -s $@ 918c2ecf20Sopenharmony_civmlinuz: $(src)/ld.script $(vmlinuzobjs-y) $(obj)/calc_vmlinuz_load_addr 928c2ecf20Sopenharmony_ci $(call cmd,zld) 938c2ecf20Sopenharmony_ci $(call cmd,strip) 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ciefiobjs-y := $(obj)/efi-header.o $(obj)/decompress.o $(obj)/piggy.o \ 968c2ecf20Sopenharmony_ci $(obj)/string.o $(objtree)/drivers/firmware/efi/libstub/lib.a 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ciefiobjs-$(CONFIG_DEBUG_ZBOOT) += $(obj)/dbg.o 998c2ecf20Sopenharmony_ciefiobjs-$(CONFIG_DEBUG_ZBOOT) += $(obj)/uart-16550.o 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_citargets += $(notdir $(efiobjs-y)) 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ciquiet_cmd_efild = LD $@ 1048c2ecf20Sopenharmony_ci cmd_efild = $(LD) $(KBUILD_LDFLAGS) -T $< $(efiobjs-y) -o $@ 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ciquiet_cmd_eficopy = OBJCOPY $@ 1078c2ecf20Sopenharmony_cicmd_eficopy = $(OBJCOPY) $(OBJCOPYFLAGS) -O binary -R .comment -S $@ $@ 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_civmlinuz.efi: $(src)/ld.script $(efiobjs-y) 1108c2ecf20Sopenharmony_ci $(call cmd,efild) 1118c2ecf20Sopenharmony_ci $(call cmd,eficopy) 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ciclean-files += $(objtree)/vmlinuz 1148c2ecf20Sopenharmony_ciclean-files += $(objtree)/vmlinuz.bin 1158c2ecf20Sopenharmony_ciclean-files += $(objtree)/vmlinuz.efi 116