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