^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # s390/Makefile
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) # This file is included by the global makefile so that you can add your own
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) # architecture-specific flags and dependencies. Remember to do have actions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) # for "archclean" and "archdep" for cleaning up and making dependencies for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) # this architecture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) # Copyright (C) 1994 by Linus Torvalds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) LD_BFD := elf64-s390
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) KBUILD_LDFLAGS := -m elf64_s390
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) KBUILD_AFLAGS_MODULE += -fPIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) KBUILD_CFLAGS_MODULE += -fPIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) KBUILD_AFLAGS += -m64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) KBUILD_CFLAGS += -m64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) ifeq ($(CONFIG_RELOCATABLE),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) KBUILD_CFLAGS += -fPIE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) LDFLAGS_vmlinux := -pie
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) aflags_dwarf := -Wa,-gdwarf-2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) KBUILD_AFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),$(aflags_dwarf))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) KBUILD_CFLAGS_DECOMPRESSOR += -fno-delete-null-pointer-checks -msoft-float
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) KBUILD_CFLAGS_DECOMPRESSOR += -fno-asynchronous-unwind-tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) KBUILD_CFLAGS_DECOMPRESSOR += -ffreestanding
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) KBUILD_CFLAGS_DECOMPRESSOR += -fno-stack-protector
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-member)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) UTS_MACHINE := s390x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) STACK_SIZE := $(if $(CONFIG_KASAN),65536,16384)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) CHECKFLAGS += -D__s390__ -D__s390x__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) export LD_BFD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) mflags-$(CONFIG_MARCH_Z900) := -march=z900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) mflags-$(CONFIG_MARCH_Z990) := -march=z990
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) mflags-$(CONFIG_MARCH_Z9_109) := -march=z9-109
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) mflags-$(CONFIG_MARCH_Z10) := -march=z10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) mflags-$(CONFIG_MARCH_Z196) := -march=z196
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) mflags-$(CONFIG_MARCH_ZEC12) := -march=zEC12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) mflags-$(CONFIG_MARCH_Z13) := -march=z13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) mflags-$(CONFIG_MARCH_Z14) := -march=z14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) mflags-$(CONFIG_MARCH_Z15) := -march=z15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) export CC_FLAGS_MARCH := $(mflags-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) aflags-y += $(mflags-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) cflags-y += $(mflags-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) cflags-$(CONFIG_MARCH_Z900_TUNE) += -mtune=z900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) cflags-$(CONFIG_MARCH_Z990_TUNE) += -mtune=z990
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) cflags-$(CONFIG_MARCH_Z9_109_TUNE) += -mtune=z9-109
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) cflags-$(CONFIG_MARCH_Z10_TUNE) += -mtune=z10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) cflags-$(CONFIG_MARCH_Z196_TUNE) += -mtune=z196
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) cflags-$(CONFIG_MARCH_ZEC12_TUNE) += -mtune=zEC12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) cflags-$(CONFIG_MARCH_Z13_TUNE) += -mtune=z13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) cflags-$(CONFIG_MARCH_Z14_TUNE) += -mtune=z14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) cflags-$(CONFIG_MARCH_Z15_TUNE) += -mtune=z15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) cflags-y += -Wa,-I$(srctree)/arch/$(ARCH)/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) # Prevent tail-call optimizations, to get clearer backtraces:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) cflags-$(CONFIG_FRAME_POINTER) += -fno-optimize-sibling-calls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) ifeq ($(call cc-option-yn,-mpacked-stack -mbackchain -msoft-float),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) cflags-$(CONFIG_PACK_STACK) += -mpacked-stack -D__PACK_STACK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) aflags-$(CONFIG_PACK_STACK) += -D__PACK_STACK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) KBUILD_AFLAGS_DECOMPRESSOR += $(aflags-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) KBUILD_CFLAGS_DECOMPRESSOR += $(cflags-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) ifeq ($(call cc-option-yn,-mstack-size=8192 -mstack-guard=128),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) cflags-$(CONFIG_CHECK_STACK) += -mstack-size=$(STACK_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) ifneq ($(call cc-option-yn,-mstack-size=8192),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) cflags-$(CONFIG_CHECK_STACK) += -mstack-guard=$(CONFIG_STACK_GUARD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) ifdef CONFIG_WARN_DYNAMIC_STACK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) ifeq ($(call cc-option-yn,-mwarn-dynamicstack),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) KBUILD_CFLAGS += -mwarn-dynamicstack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) KBUILD_CFLAGS_DECOMPRESSOR += -mwarn-dynamicstack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) ifdef CONFIG_EXPOLINE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) ifeq ($(call cc-option-yn,$(CC_FLAGS_MARCH) -mindirect-branch=thunk),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) CC_FLAGS_EXPOLINE := -mindirect-branch=thunk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) CC_FLAGS_EXPOLINE += -mfunction-return=thunk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) CC_FLAGS_EXPOLINE += -mindirect-branch-table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) export CC_FLAGS_EXPOLINE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) cflags-y += $(CC_FLAGS_EXPOLINE) -DCC_USING_EXPOLINE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) aflags-y += -DCC_USING_EXPOLINE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) ifdef CONFIG_FUNCTION_TRACER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) ifeq ($(call cc-option-yn,-mfentry -mnop-mcount),n)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) # make use of hotpatch feature if the compiler supports it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) cc_hotpatch := -mhotpatch=0,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) ifeq ($(call cc-option-yn,$(cc_hotpatch)),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) CC_FLAGS_FTRACE := $(cc_hotpatch)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) KBUILD_AFLAGS += -DCC_USING_HOTPATCH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) KBUILD_CFLAGS += -DCC_USING_HOTPATCH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) # Test CFI features of binutils
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) cfi := $(call as-instr,.cfi_startproc\n.cfi_val_offset 15$(comma)-160\n.cfi_endproc,-DCONFIG_AS_CFI_VAL_OFFSET=1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) KBUILD_CFLAGS += -mbackchain -msoft-float $(cflags-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) KBUILD_CFLAGS += -pipe -Wno-sign-compare
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) KBUILD_CFLAGS += -fno-asynchronous-unwind-tables $(cfi)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) KBUILD_AFLAGS += $(aflags-y) $(cfi)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) export KBUILD_AFLAGS_DECOMPRESSOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) export KBUILD_CFLAGS_DECOMPRESSOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) OBJCOPYFLAGS := -O binary
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) head-y := arch/s390/kernel/head64.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) # See arch/s390/Kbuild for content of core part of the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) core-y += arch/s390/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) libs-y += arch/s390/lib/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) drivers-y += drivers/s390/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) # must be linked after kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) drivers-$(CONFIG_OPROFILE) += arch/s390/oprofile/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) boot := arch/s390/boot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) syscalls := arch/s390/kernel/syscalls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) tools := arch/s390/tools
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) all: bzImage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #KBUILD_IMAGE is necessary for packaging targets like rpm-pkg, deb-pkg...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) KBUILD_IMAGE := $(boot)/bzImage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) install:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) $(Q)$(MAKE) $(build)=$(boot) $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) bzImage: vmlinux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) zfcpdump:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) vdso_install:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) $(Q)$(MAKE) $(build)=arch/$(ARCH)/kernel/vdso64 $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) archclean:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) $(Q)$(MAKE) $(clean)=$(boot)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) $(Q)$(MAKE) $(clean)=$(tools)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) archheaders:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) $(Q)$(MAKE) $(build)=$(syscalls) uapi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) archprepare:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) $(Q)$(MAKE) $(build)=$(syscalls) kapi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) $(Q)$(MAKE) $(build)=$(tools) kapi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) # Don't use tabs in echo arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) define archhelp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) echo '* bzImage - Kernel image for IPL ($(boot)/bzImage)'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) echo ' install - Install kernel using'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) echo ' (your) ~/bin/$(INSTALLKERNEL) or'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) echo ' install to $$(INSTALL_PATH)'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) endef