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 # >> 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 >> 9 # >> 10 # Creating a compressed kernel image (arch/alpha/boot/vmlinux.gz) >> 11 # is done via: >> 12 # >> 13 # make boot >> 14 # >> 15 # Creating a BOOTP image (arch/alpha/boot/bootpfile or bootpzfile) >> 16 # is done via: >> 17 # >> 18 # make bootpfile # using an uncompressed kernel >> 19 # make bootpzfile # using a compressed kernel >> 20 # >> 21 # Adding an INITRD image to a BOOTP file (arch/alpha/boot/bootpzfile) >> 22 # can be done, e.g, via: >> 23 # >> 24 # INITRD=`pwd`/initrd.img make bootpzfile >> 25 >> 26 LINKFLAGS = -static -T bootloader.lds #-N -relax 5 27 6 # Tooling runtimes are unavailable and cannot !! 28 .S.s: 7 KCOV_INSTRUMENT := n !! 29 $(CPP) $(AFLAGS) -traditional -o $*.o $< 8 GCOV_PROFILE := n !! 30 .S.o: 9 UBSAN_SANITIZE := n !! 31 $(CC) $(AFLAGS) -traditional -c -o $*.o $< 10 KASAN_SANITIZE := n !! 32 11 KCSAN_SANITIZE := n !! 33 OBJECTS = head.o main.o 12 KMSAN_SANITIZE := n !! 34 BPOBJECTS = head.o bootp.o >> 35 BPZOBJECTS = head.o bootpz.o misc.o >> 36 TARGETS = vmlinux.gz tools/objstrip # also needed by aboot & milo >> 37 VMLINUX = $(TOPDIR)/vmlinux >> 38 OBJSTRIP = tools/objstrip >> 39 >> 40 all: $(TARGETS) >> 41 @echo Ready to install kernel in $(shell pwd)/vmlinux.gz >> 42 >> 43 # normally no need to build these: >> 44 rawboot: vmlinux.nh tools/lxboot tools/bootlx >> 45 >> 46 msb: tools/lxboot tools/bootlx vmlinux.nh >> 47 ( cat tools/lxboot tools/bootlx vmlinux.nh ) > /dev/rz0a >> 48 disklabel -rw rz0 'linux' tools/lxboot tools/bootlx >> 49 >> 50 bootimage: tools/mkbb tools/lxboot tools/bootlx vmlinux.nh >> 51 ( cat tools/lxboot tools/bootlx vmlinux.nh ) > bootimage >> 52 tools/mkbb bootimage tools/lxboot >> 53 >> 54 bootpfile: tools/bootph vmlinux.nh >> 55 cat tools/bootph vmlinux.nh > bootpfile >> 56 ifdef INITRD >> 57 cat $(INITRD) >> bootpfile >> 58 endif 13 59 14 KBUILD_AFLAGS := $(KBUILD_AFLAGS_DECOMPRESSOR) !! 60 bootpzfile: tools/bootpzh vmlinux.nh.gz 15 KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR) !! 61 cat tools/bootpzh vmlinux.nh.gz > bootpzfile >> 62 ifdef INITRD >> 63 cat $(INITRD) >> bootpzfile >> 64 endif 16 65 17 # !! 66 srmboot: bootdevice bootimage 18 # Use minimum architecture for als.c to be abl !! 67 dd if=bootimage of=$(BOOTDEV) bs=512 seek=1 skip=1 19 # message if the kernel is started on a machin !! 68 tools/mkbb $(BOOTDEV) tools/lxboot 20 # !! 69 21 ifndef CONFIG_CC_IS_CLANG !! 70 bootdevice: 22 CC_FLAGS_MARCH_MINIMUM := -march=z900 !! 71 @test "$(BOOTDEV)" != "" || (echo You must specify BOOTDEV ; exit -1) 23 else !! 72 24 CC_FLAGS_MARCH_MINIMUM := -march=z10 !! 73 vmlinux.gz: $(TOPDIR)/vmlinux >> 74 gzip -fv9c $(TOPDIR)/vmlinux > vmlinux.gz >> 75 >> 76 vmlinux.nh.gz: vmlinux.nh >> 77 gzip -fv9c vmlinux.nh > vmlinux.nh.gz >> 78 >> 79 main.o: ksize.h >> 80 >> 81 bootp.o: ksize.h >> 82 >> 83 bootpz.o: kzsize.h >> 84 >> 85 ksize.h: vmlinux.nh dummy >> 86 echo "#define KERNEL_SIZE `ls -l vmlinux.nh | awk '{print $$5}'`" > $@T >> 87 ifdef INITRD >> 88 [ ! \( -f $(INITRD) \) ] || exit 1 >> 89 echo "#define INITRD_IMAGE_SIZE `ls -l $(INITRD) | awk '{print $$5}'`" >> $@T 25 endif 90 endif >> 91 cmp -s $@T $@ || mv -f $@T $@ >> 92 rm -f $@T 26 93 27 ifneq ($(CC_FLAGS_MARCH),$(CC_FLAGS_MARCH_MINI !! 94 kzsize.h: vmlinux.nh.gz dummy 28 AFLAGS_REMOVE_head.o += $(CC_FLAGS_ !! 95 echo "#define KERNEL_SIZE `ls -l vmlinux.nh | awk '{print $$5}'`" > $@T 29 AFLAGS_head.o += $(CC_FLAGS_ !! 96 echo "#define KERNEL_Z_SIZE `ls -l vmlinux.nh.gz | awk '{print $$5}'`" >> $@T 30 AFLAGS_REMOVE_mem.o += $(CC_FLAGS_ !! 97 ifdef INITRD 31 AFLAGS_mem.o += $(CC_FLAGS_ !! 98 [ -f $(INITRD) ] || exit 1 32 CFLAGS_REMOVE_als.o += $(CC_FLAGS_ !! 99 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 100 endif >> 101 cmp -s $@T $@ || mv -f $@T $@ >> 102 rm -f $@T >> 103 >> 104 vmlinux.nh: $(VMLINUX) $(OBJSTRIP) >> 105 $(OBJSTRIP) -v $(VMLINUX) vmlinux.nh >> 106 >> 107 vmlinux: $(VMLINUX) >> 108 $(STRIP) -o vmlinux $(VMLINUX) >> 109 >> 110 tools/lxboot: $(OBJSTRIP) bootloader >> 111 $(OBJSTRIP) -p bootloader tools/lxboot >> 112 >> 113 tools/bootlx: bootloader $(OBJSTRIP) >> 114 $(OBJSTRIP) -vb bootloader tools/bootlx >> 115 >> 116 tools/bootph: bootpheader $(OBJSTRIP) >> 117 $(OBJSTRIP) -vb bootpheader tools/bootph >> 118 >> 119 tools/bootpzh: bootpzheader $(OBJSTRIP) >> 120 $(OBJSTRIP) -vb bootpzheader tools/bootpzh >> 121 >> 122 $(OBJSTRIP): $(OBJSTRIP).c >> 123 $(HOSTCC) $(HOSTCFLAGS) -I$(HPATH) $(OBJSTRIP).c -o $(OBJSTRIP) >> 124 >> 125 tools/mkbb: tools/mkbb.c >> 126 $(HOSTCC) tools/mkbb.c -o tools/mkbb >> 127 >> 128 bootloader: $(OBJECTS) >> 129 $(LD) $(LINKFLAGS) $(OBJECTS) $(LIBS) -o bootloader >> 130 >> 131 bootpheader: $(BPOBJECTS) >> 132 $(LD) $(LINKFLAGS) $(BPOBJECTS) $(LIBS) -o bootpheader >> 133 >> 134 bootpzheader: $(BPZOBJECTS) >> 135 $(LD) $(LINKFLAGS) $(BPZOBJECTS) $(LIBS) -o bootpzheader >> 136 >> 137 misc.o: misc.c $(TOPDIR)/lib/inflate.c >> 138 >> 139 clean: >> 140 rm -f $(TARGETS) bootloader bootimage bootpfile bootpheader >> 141 rm -f tools/mkbb tools/bootlx tools/lxboot tools/bootph >> 142 rm -f vmlinux.nh ksize.h 37 143 38 CFLAGS_sclp_early_core.o += -I$(srctree)/drive !! 144 dep: 39 145 40 obj-y := head.o als.o startup.o physmem_info !! 146 dummy: 41 obj-y += string.o ebcdic.o sclp_early_core.o << 42 obj-y += version.o pgm_check_info.o ctype.o << 43 obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o << 44 obj-y += $(if $(CONFIG_KERNEL_UNCOMPRESSED), << 45 obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o << 46 obj-$(CONFIG_KMSAN) += kmsan.o << 47 obj-all := $(obj-y) piggy.o syms.o << 48 << 49 targets := bzImage section_cmp.boot.data secti << 50 targets += vmlinux.lds vmlinux vmlinux.bin vml << 51 targets += vmlinux.bin.xz vmlinux.bin.lzma vml << 52 targets += vmlinux.bin.zst info.bin syms.bin v << 53 targets += relocs.S << 54 << 55 OBJECTS := $(addprefix $(obj)/,$(obj-y)) << 56 OBJECTS_ALL := $(addprefix $(obj)/,$(obj-all)) << 57 << 58 clean-files += vmlinux.map << 59 << 60 quiet_cmd_section_cmp = SECTCMP $* << 61 define cmd_section_cmp << 62 s1=`$(OBJDUMP) -t "$<" | grep "\s$*\s\ << 63 sed -n "/0000000000000000/! s/ << 64 s2=`$(OBJDUMP) -t "$(word 2,$^)" | gre << 65 sed -n "/0000000000000000/! s/ << 66 if [ "$$s1" != "$$s2" ]; then \ << 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) << 83 << 84 LDFLAGS_vmlinux.syms := $(LDFLAGS_vmlinux-y) - << 85 $(obj)/vmlinux.syms: $(obj)/vmlinux.lds $(OBJE << 86 $(call if_changed,ld) << 87 << 88 quiet_cmd_dumpsyms = DUMPSYMS $< << 89 define cmd_dumpsyms << 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 << 126 $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORC << 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.