1 # SPDX-License-Identifier: GPL-2.0 << 2 # 1 # 3 # Makefile for the linux s390-specific parts o !! 2 # arch/alpha/boot/Makefile 4 # 3 # 5 !! 4 # This file is subject to the terms and conditions of the GNU General Public 6 # Tooling runtimes are unavailable and cannot !! 5 # License. See the file "COPYING" in the main directory of this archive 7 KCOV_INSTRUMENT := n !! 6 # for more details. 8 GCOV_PROFILE := n << 9 UBSAN_SANITIZE := n << 10 KASAN_SANITIZE := n << 11 KCSAN_SANITIZE := n << 12 KMSAN_SANITIZE := n << 13 << 14 # 7 # 15 # Use minimum architecture level so it is poss !! 8 # Copyright (C) 1994 by Linus Torvalds 16 # message if the kernel is started on a machin << 17 # 9 # 18 CC_FLAGS_MARCH_MINIMUM := -march=z10 << 19 10 20 KBUILD_AFLAGS := $(filter-out $(CC_FLAGS_MARCH !! 11 hostprogs := tools/mkbb tools/objstrip 21 KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_MARCH !! 12 targets := vmlinux.gz vmlinux \ 22 KBUILD_AFLAGS += $(CC_FLAGS_MARCH_MINIMUM) !! 13 vmlinux.nh tools/lxboot tools/bootlx tools/bootph \ 23 KBUILD_CFLAGS += $(CC_FLAGS_MARCH_MINIMUM) !! 14 tools/bootpzh bootloader bootpheader bootpzheader 24 !! 15 OBJSTRIP := $(obj)/tools/objstrip 25 CFLAGS_sclp_early_core.o += -I$(srctree)/drive !! 16 26 !! 17 KBUILD_HOSTCFLAGS := -Wall -I$(objtree)/usr/include 27 obj-y := head.o als.o startup.o physmem_info !! 18 BOOTCFLAGS += -I$(objtree)/$(obj) -I$(srctree)/$(obj) 28 obj-y += string.o ebcdic.o sclp_early_core.o !! 19 29 obj-y += version.o pgm_check_info.o ctype.o !! 20 # SRM bootable image. Copy to offset 512 of a partition. 30 obj-y += uv.o printk.o !! 21 $(obj)/bootimage: $(addprefix $(obj)/tools/,mkbb lxboot bootlx) $(obj)/vmlinux.nh 31 obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o !! 22 ( cat $(obj)/tools/lxboot $(obj)/tools/bootlx $(obj)/vmlinux.nh ) > $@ 32 obj-y += $(if $(CONFIG_KERNEL_UNCOMPRESSED), !! 23 $(obj)/tools/mkbb $@ $(obj)/tools/lxboot 33 obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o !! 24 @echo ' Bootimage $@ is ready' 34 obj-$(CONFIG_KMSAN) += kmsan.o !! 25 35 obj-all := $(obj-y) piggy.o syms.o !! 26 # BOOTP bootable image. Define INITRD during make to append initrd image. 36 !! 27 $(obj)/bootpfile: $(obj)/tools/bootph $(obj)/vmlinux.nh 37 targets := bzImage section_cmp.boot.data secti !! 28 cat $(obj)/tools/bootph $(obj)/vmlinux.nh > $@ 38 targets += vmlinux.lds vmlinux vmlinux.bin vml !! 29 ifdef INITRD 39 targets += vmlinux.bin.xz vmlinux.bin.lzma vml !! 30 cat $(INITRD) >> $@ 40 targets += vmlinux.bin.zst info.bin syms.bin v !! 31 endif 41 targets += relocs.S !! 32 42 !! 33 # Compressed kernel BOOTP bootable image. 43 OBJECTS := $(addprefix $(obj)/,$(obj-y)) !! 34 # Define INITRD during make to append initrd image. 44 OBJECTS_ALL := $(addprefix $(obj)/,$(obj-all)) !! 35 $(obj)/bootpzfile: $(obj)/tools/bootpzh $(obj)/vmlinux.nh.gz 45 !! 36 cat $(obj)/tools/bootpzh $(obj)/vmlinux.nh.gz > $@ 46 clean-files += vmlinux.map !! 37 ifdef INITRD 47 !! 38 cat $(INITRD) >> $@ 48 quiet_cmd_section_cmp = SECTCMP $* !! 39 endif 49 define cmd_section_cmp !! 40 50 s1=`$(OBJDUMP) -t "$<" | grep "\s$*\s\ !! 41 # Compressed kernel image 51 sed -n "/0000000000000000/! s/ !! 42 $(obj)/vmlinux.gz: $(obj)/vmlinux FORCE 52 s2=`$(OBJDUMP) -t "$(word 2,$^)" | gre !! 43 $(call if_changed,gzip) 53 sed -n "/0000000000000000/! s/ !! 44 @echo ' Kernel $@ is ready' 54 if [ "$$s1" != "$$s2" ]; then \ !! 45 55 echo "error: section $* differ !! 46 $(obj)/main.o: $(obj)/ksize.h 56 exit 1; \ !! 47 $(obj)/bootp.o: $(obj)/ksize.h 57 fi; \ !! 48 $(obj)/bootpz.o: $(obj)/kzsize.h 58 touch $@ !! 49 59 endef !! 50 $(obj)/ksize.h: $(obj)/vmlinux.nh FORCE 60 !! 51 echo "#define KERNEL_SIZE `ls -l $(obj)/vmlinux.nh | awk '{print $$5}'`" > $@T 61 $(obj)/bzImage: $(obj)/vmlinux $(obj)/section_ !! 52 ifdef INITRD 62 $(call if_changed,objcopy) !! 53 [ -f $(INITRD) ] || exit 1 63 !! 54 echo "#define INITRD_IMAGE_SIZE `ls -l $(INITRD) | awk '{print $$5}'`" >> $@T 64 $(obj)/section_cmp%: vmlinux $(obj)/vmlinux FO !! 55 endif 65 $(call if_changed,section_cmp) !! 56 cmp -s $@T $@ || mv -f $@T $@ 66 !! 57 rm -f $@T 67 LDFLAGS_vmlinux-$(CONFIG_LD_ORPHAN_WARN) := -- !! 58 68 LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y) --ofor !! 59 $(obj)/kzsize.h: $(obj)/vmlinux.nh.gz FORCE 69 $(obj)/vmlinux: $(obj)/vmlinux.lds $(OBJECTS_A !! 60 echo "#define KERNEL_SIZE `ls -l $(obj)/vmlinux.nh | awk '{print $$5}'`" > $@T >> 61 echo "#define KERNEL_Z_SIZE `ls -l $(obj)/vmlinux.nh.gz | awk '{print $$5}'`" >> $@T >> 62 ifdef INITRD >> 63 [ -f $(INITRD) ] || exit 1 >> 64 echo "#define INITRD_IMAGE_SIZE `ls -l $(INITRD) | awk '{print $$5}'`" >> $@T >> 65 endif >> 66 cmp -s $@T $@ || mv -f $@T $@ >> 67 rm -f $@T >> 68 >> 69 quiet_cmd_strip = STRIP $@ >> 70 cmd_strip = $(STRIP) -o $@ $< >> 71 >> 72 $(obj)/vmlinux: vmlinux FORCE >> 73 $(call if_changed,strip) >> 74 >> 75 quiet_cmd_objstrip = OBJSTRIP $@ >> 76 cmd_objstrip = $(OBJSTRIP) $(OSFLAGS_$(@F)) $< $@ >> 77 >> 78 OSFLAGS_vmlinux.nh := -v >> 79 OSFLAGS_lxboot := -p >> 80 OSFLAGS_bootlx := -vb >> 81 OSFLAGS_bootph := -vb >> 82 OSFLAGS_bootpzh := -vb >> 83 >> 84 $(obj)/vmlinux.nh: vmlinux $(OBJSTRIP) FORCE >> 85 $(call if_changed,objstrip) >> 86 >> 87 $(obj)/vmlinux.nh.gz: $(obj)/vmlinux.nh FORCE >> 88 $(call if_changed,gzip) >> 89 >> 90 $(obj)/tools/lxboot: $(obj)/bootloader $(OBJSTRIP) FORCE >> 91 $(call if_changed,objstrip) >> 92 >> 93 $(obj)/tools/bootlx: $(obj)/bootloader $(OBJSTRIP) FORCE >> 94 $(call if_changed,objstrip) >> 95 >> 96 $(obj)/tools/bootph: $(obj)/bootpheader $(OBJSTRIP) FORCE >> 97 $(call if_changed,objstrip) >> 98 >> 99 $(obj)/tools/bootpzh: $(obj)/bootpzheader $(OBJSTRIP) FORCE >> 100 $(call if_changed,objstrip) >> 101 >> 102 LDFLAGS_bootloader := -static -T # -N -relax >> 103 LDFLAGS_bootloader := -static -T # -N -relax >> 104 LDFLAGS_bootpheader := -static -T # -N -relax >> 105 LDFLAGS_bootpzheader := -static -T # -N -relax >> 106 >> 107 OBJ_bootlx := $(obj)/head.o $(obj)/stdio.o $(obj)/main.o >> 108 OBJ_bootph := $(obj)/head.o $(obj)/stdio.o $(obj)/bootp.o >> 109 OBJ_bootpzh := $(obj)/head.o $(obj)/stdio.o $(obj)/bootpz.o $(obj)/misc.o >> 110 >> 111 $(obj)/bootloader: $(obj)/bootloader.lds $(OBJ_bootlx) $(LIBS_Y) FORCE 70 $(call if_changed,ld) 112 $(call if_changed,ld) 71 113 72 LDFLAGS_vmlinux.syms := $(LDFLAGS_vmlinux-y) - !! 114 $(obj)/bootpheader: $(obj)/bootloader.lds $(OBJ_bootph) $(LIBS_Y) FORCE 73 $(obj)/vmlinux.syms: $(obj)/vmlinux.lds $(OBJE << 74 $(call if_changed,ld) 115 $(call if_changed,ld) 75 116 76 quiet_cmd_dumpsyms = DUMPSYMS $< !! 117 $(obj)/bootpzheader: $(obj)/bootloader.lds $(OBJ_bootpzh) $(LIBS_Y) FORCE 77 define cmd_dumpsyms !! 118 $(call if_changed,ld) 78 $(NM) -n -S --format=bsd "$<" | sed -n << 79 endef << 80 << 81 $(obj)/syms.bin: $(obj)/vmlinux.syms FORCE << 82 $(call if_changed,dumpsyms) << 83 << 84 OBJCOPYFLAGS_syms.o := -I binary -O elf64-s390 << 85 $(obj)/syms.o: $(obj)/syms.bin FORCE << 86 $(call if_changed,objcopy) << 87 << 88 OBJCOPYFLAGS_info.bin := -O binary --only-sect << 89 $(obj)/info.bin: vmlinux FORCE << 90 $(call if_changed,objcopy) << 91 << 92 OBJCOPYFLAGS_info.o := -I binary -O elf64-s390 << 93 $(obj)/info.o: $(obj)/info.bin FORCE << 94 $(call if_changed,objcopy) << 95 << 96 OBJCOPYFLAGS_vmlinux.bin := -O binary --remove << 97 $(obj)/vmlinux.bin: vmlinux FORCE << 98 $(call if_changed,objcopy) << 99 << 100 # relocs.S is created by the vmlinux postlink << 101 $(obj)/relocs.S: vmlinux << 102 @true << 103 << 104 suffix-$(CONFIG_KERNEL_GZIP) := .gz << 105 suffix-$(CONFIG_KERNEL_BZIP2) := .bz2 << 106 suffix-$(CONFIG_KERNEL_LZ4) := .lz4 << 107 suffix-$(CONFIG_KERNEL_LZMA) := .lzma << 108 suffix-$(CONFIG_KERNEL_LZO) := .lzo << 109 suffix-$(CONFIG_KERNEL_XZ) := .xz << 110 suffix-$(CONFIG_KERNEL_ZSTD) := .zst << 111 119 112 $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORC !! 120 $(obj)/misc.o: lib/inflate.c 113 $(call if_changed,gzip) << 114 $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FOR << 115 $(call if_changed,bzip2_with_size) << 116 $(obj)/vmlinux.bin.lz4: $(obj)/vmlinux.bin FOR << 117 $(call if_changed,lz4_with_size) << 118 $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FO << 119 $(call if_changed,lzma_with_size) << 120 $(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FOR << 121 $(call if_changed,lzo_with_size) << 122 $(obj)/vmlinux.bin.xz: $(obj)/vmlinux.bin FORC << 123 $(call if_changed,xzkern_with_size) << 124 $(obj)/vmlinux.bin.zst: $(obj)/vmlinux.bin FOR << 125 $(call if_changed,zstd22_with_size) << 126 << 127 OBJCOPYFLAGS_piggy.o := -I binary -O elf64-s39 << 128 $(obj)/piggy.o: $(obj)/vmlinux.bin$(suffix-y) << 129 $(call if_changed,objcopy) <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.