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 hostprogs-y := 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 KBUILD_HOSTCFLAGS := -Wall -I$(objtree)/usr/include >> 18 BOOTCFLAGS += -I$(objtree)/$(obj) -I$(srctree)/$(obj) >> 19 >> 20 # SRM bootable image. Copy to offset 512 of a partition. >> 21 $(obj)/bootimage: $(addprefix $(obj)/tools/,mkbb lxboot bootlx) $(obj)/vmlinux.nh >> 22 ( cat $(obj)/tools/lxboot $(obj)/tools/bootlx $(obj)/vmlinux.nh ) > $@ >> 23 $(obj)/tools/mkbb $@ $(obj)/tools/lxboot >> 24 @echo ' Bootimage $@ is ready' >> 25 >> 26 # BOOTP bootable image. Define INITRD during make to append initrd image. >> 27 $(obj)/bootpfile: $(obj)/tools/bootph $(obj)/vmlinux.nh >> 28 cat $(obj)/tools/bootph $(obj)/vmlinux.nh > $@ >> 29 ifdef INITRD >> 30 cat $(INITRD) >> $@ >> 31 endif 13 32 14 KBUILD_AFLAGS := $(KBUILD_AFLAGS_DECOMPRESSOR) !! 33 # Compressed kernel BOOTP bootable image. 15 KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR) !! 34 # Define INITRD during make to append initrd image. >> 35 $(obj)/bootpzfile: $(obj)/tools/bootpzh $(obj)/vmlinux.nh.gz >> 36 cat $(obj)/tools/bootpzh $(obj)/vmlinux.nh.gz > $@ >> 37 ifdef INITRD >> 38 cat $(INITRD) >> $@ >> 39 endif 16 40 17 # !! 41 # Compressed kernel image 18 # Use minimum architecture for als.c to be abl !! 42 $(obj)/vmlinux.gz: $(obj)/vmlinux FORCE 19 # message if the kernel is started on a machin !! 43 $(call if_changed,gzip) 20 # !! 44 @echo ' Kernel $@ is ready' 21 ifndef CONFIG_CC_IS_CLANG !! 45 22 CC_FLAGS_MARCH_MINIMUM := -march=z900 !! 46 $(obj)/main.o: $(obj)/ksize.h 23 else !! 47 $(obj)/bootp.o: $(obj)/ksize.h 24 CC_FLAGS_MARCH_MINIMUM := -march=z10 !! 48 $(obj)/bootpz.o: $(obj)/kzsize.h >> 49 >> 50 $(obj)/ksize.h: $(obj)/vmlinux.nh FORCE >> 51 echo "#define KERNEL_SIZE `ls -l $(obj)/vmlinux.nh | awk '{print $$5}'`" > $@T >> 52 ifdef INITRD >> 53 [ -f $(INITRD) ] || exit 1 >> 54 echo "#define INITRD_IMAGE_SIZE `ls -l $(INITRD) | awk '{print $$5}'`" >> $@T 25 endif 55 endif >> 56 cmp -s $@T $@ || mv -f $@T $@ >> 57 rm -f $@T 26 58 27 ifneq ($(CC_FLAGS_MARCH),$(CC_FLAGS_MARCH_MINI !! 59 $(obj)/kzsize.h: $(obj)/vmlinux.nh.gz FORCE 28 AFLAGS_REMOVE_head.o += $(CC_FLAGS_ !! 60 echo "#define KERNEL_SIZE `ls -l $(obj)/vmlinux.nh | awk '{print $$5}'`" > $@T 29 AFLAGS_head.o += $(CC_FLAGS_ !! 61 echo "#define KERNEL_Z_SIZE `ls -l $(obj)/vmlinux.nh.gz | awk '{print $$5}'`" >> $@T 30 AFLAGS_REMOVE_mem.o += $(CC_FLAGS_ !! 62 ifdef INITRD 31 AFLAGS_mem.o += $(CC_FLAGS_ !! 63 [ -f $(INITRD) ] || exit 1 32 CFLAGS_REMOVE_als.o += $(CC_FLAGS_ !! 64 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 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)) $< $@ 37 77 38 CFLAGS_sclp_early_core.o += -I$(srctree)/drive !! 78 OSFLAGS_vmlinux.nh := -v >> 79 OSFLAGS_lxboot := -p >> 80 OSFLAGS_bootlx := -vb >> 81 OSFLAGS_bootph := -vb >> 82 OSFLAGS_bootpzh := -vb 39 83 40 obj-y := head.o als.o startup.o physmem_info !! 84 $(obj)/vmlinux.nh: vmlinux $(OBJSTRIP) FORCE 41 obj-y += string.o ebcdic.o sclp_early_core.o !! 85 $(call if_changed,objstrip) 42 obj-y += version.o pgm_check_info.o ctype.o !! 86 43 obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o !! 87 $(obj)/vmlinux.nh.gz: $(obj)/vmlinux.nh FORCE 44 obj-y += $(if $(CONFIG_KERNEL_UNCOMPRESSED), !! 88 $(call if_changed,gzip) 45 obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o !! 89 46 obj-$(CONFIG_KMSAN) += kmsan.o !! 90 $(obj)/tools/lxboot: $(obj)/bootloader $(OBJSTRIP) FORCE 47 obj-all := $(obj-y) piggy.o syms.o !! 91 $(call if_changed,objstrip) 48 !! 92 49 targets := bzImage section_cmp.boot.data secti !! 93 $(obj)/tools/bootlx: $(obj)/bootloader $(OBJSTRIP) FORCE 50 targets += vmlinux.lds vmlinux vmlinux.bin vml !! 94 $(call if_changed,objstrip) 51 targets += vmlinux.bin.xz vmlinux.bin.lzma vml !! 95 52 targets += vmlinux.bin.zst info.bin syms.bin v !! 96 $(obj)/tools/bootph: $(obj)/bootpheader $(OBJSTRIP) FORCE 53 targets += relocs.S !! 97 $(call if_changed,objstrip) 54 !! 98 55 OBJECTS := $(addprefix $(obj)/,$(obj-y)) !! 99 $(obj)/tools/bootpzh: $(obj)/bootpzheader $(OBJSTRIP) FORCE 56 OBJECTS_ALL := $(addprefix $(obj)/,$(obj-all)) !! 100 $(call if_changed,objstrip) 57 !! 101 58 clean-files += vmlinux.map !! 102 LDFLAGS_bootloader := -static -T # -N -relax 59 !! 103 LDFLAGS_bootloader := -static -T # -N -relax 60 quiet_cmd_section_cmp = SECTCMP $* !! 104 LDFLAGS_bootpheader := -static -T # -N -relax 61 define cmd_section_cmp !! 105 LDFLAGS_bootpzheader := -static -T # -N -relax 62 s1=`$(OBJDUMP) -t "$<" | grep "\s$*\s\ !! 106 63 sed -n "/0000000000000000/! s/ !! 107 OBJ_bootlx := $(obj)/head.o $(obj)/stdio.o $(obj)/main.o 64 s2=`$(OBJDUMP) -t "$(word 2,$^)" | gre !! 108 OBJ_bootph := $(obj)/head.o $(obj)/stdio.o $(obj)/bootp.o 65 sed -n "/0000000000000000/! s/ !! 109 OBJ_bootpzh := $(obj)/head.o $(obj)/stdio.o $(obj)/bootpz.o $(obj)/misc.o 66 if [ "$$s1" != "$$s2" ]; then \ !! 110 67 echo "error: section $* differ !! 111 $(obj)/bootloader: $(obj)/bootloader.lds $(OBJ_bootlx) $(LIBS_Y) FORCE 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) 112 $(call if_changed,ld) 83 113 84 LDFLAGS_vmlinux.syms := $(LDFLAGS_vmlinux-y) - !! 114 $(obj)/bootpheader: $(obj)/bootloader.lds $(OBJ_bootph) $(LIBS_Y) FORCE 85 $(obj)/vmlinux.syms: $(obj)/vmlinux.lds $(OBJE << 86 $(call if_changed,ld) 115 $(call if_changed,ld) 87 116 88 quiet_cmd_dumpsyms = DUMPSYMS $< !! 117 $(obj)/bootpzheader: $(obj)/bootloader.lds $(OBJ_bootpzh) $(LIBS_Y) FORCE 89 define cmd_dumpsyms !! 118 $(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 119 126 $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORC !! 120 $(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.