2017-11-24 22:00:38 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
2005-04-17 06:20:36 +08:00
|
|
|
#
|
|
|
|
# s390/Makefile
|
|
|
|
#
|
|
|
|
# This file is included by the global makefile so that you can add your own
|
2021-10-13 14:36:22 +08:00
|
|
|
# architecture-specific flags and dependencies.
|
2005-04-17 06:20:36 +08:00
|
|
|
#
|
|
|
|
# Copyright (C) 1994 by Linus Torvalds
|
|
|
|
#
|
|
|
|
|
2010-02-27 05:37:53 +08:00
|
|
|
LD_BFD := elf64-s390
|
2018-08-24 07:20:39 +08:00
|
|
|
KBUILD_LDFLAGS := -m elf64_s390
|
2013-01-11 22:26:01 +08:00
|
|
|
KBUILD_AFLAGS_MODULE += -fPIC
|
|
|
|
KBUILD_CFLAGS_MODULE += -fPIC
|
2007-10-16 03:59:31 +08:00
|
|
|
KBUILD_AFLAGS += -m64
|
2018-06-15 18:28:05 +08:00
|
|
|
KBUILD_CFLAGS += -m64
|
2019-02-04 04:35:45 +08:00
|
|
|
KBUILD_CFLAGS += -fPIE
|
|
|
|
LDFLAGS_vmlinux := -pie
|
2018-06-29 01:22:21 +08:00
|
|
|
aflags_dwarf := -Wa,-gdwarf-2
|
2019-04-15 16:35:52 +08:00
|
|
|
KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
|
2022-05-11 20:05:31 +08:00
|
|
|
ifndef CONFIG_AS_IS_LLVM
|
2018-06-29 01:22:21 +08:00
|
|
|
KBUILD_AFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),$(aflags_dwarf))
|
2022-05-11 20:05:31 +08:00
|
|
|
endif
|
2022-01-29 07:34:13 +08:00
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack
|
2018-06-15 18:28:05 +08:00
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY
|
2020-11-11 00:05:35 +08:00
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += -fno-delete-null-pointer-checks -msoft-float -mbackchain
|
2018-06-15 18:28:05 +08:00
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += -fno-asynchronous-unwind-tables
|
2020-06-27 02:59:13 +08:00
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += -ffreestanding
|
2021-05-10 13:31:33 +08:00
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += -fno-stack-protector
|
2019-06-04 19:10:51 +08:00
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-member)
|
2018-06-29 01:22:21 +08:00
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
|
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
|
gcc-12: disable '-Warray-bounds' universally for now
In commit 8b202ee21839 ("s390: disable -Warray-bounds") the s390 people
disabled the '-Warray-bounds' warning for gcc-12, because the new logic
in gcc would cause warnings for their use of the S390_lowcore macro,
which accesses absolute pointers.
It turns out gcc-12 has many other issues in this area, so this takes
that s390 warning disable logic, and turns it into a kernel build config
entry instead.
Part of the intent is that we can make this all much more targeted, and
use this conflig flag to disable it in only particular configurations
that cause problems, with the s390 case as an example:
select GCC12_NO_ARRAY_BOUNDS
and we could do that for other configuration cases that cause issues.
Or we could possibly use the CONFIG_CC_NO_ARRAY_BOUNDS thing in a more
targeted way, and disable the warning only for particular uses: again
the s390 case as an example:
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds)
but this ends up just doing it globally in the top-level Makefile, since
the current issues are spread fairly widely all over:
KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds
We'll try to limit this later, since the gcc-12 problems are rare enough
that *much* of the kernel can be built with it without disabling this
warning.
Cc: Kees Cook <keescook@chromium.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2022-06-10 01:11:12 +08:00
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds)
|
2022-04-25 20:17:42 +08:00
|
|
|
|
2005-04-17 06:20:36 +08:00
|
|
|
UTS_MACHINE := s390x
|
2018-10-26 21:29:59 +08:00
|
|
|
STACK_SIZE := $(if $(CONFIG_KASAN),65536,16384)
|
2018-05-29 02:27:35 +08:00
|
|
|
CHECKFLAGS += -D__s390__ -D__s390x__
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2010-02-27 05:37:53 +08:00
|
|
|
export LD_BFD
|
|
|
|
|
2014-08-14 22:06:02 +08:00
|
|
|
mflags-$(CONFIG_MARCH_Z10) := -march=z10
|
|
|
|
mflags-$(CONFIG_MARCH_Z196) := -march=z196
|
|
|
|
mflags-$(CONFIG_MARCH_ZEC12) := -march=zEC12
|
2017-04-12 20:17:25 +08:00
|
|
|
mflags-$(CONFIG_MARCH_Z13) := -march=z13
|
|
|
|
mflags-$(CONFIG_MARCH_Z14) := -march=z14
|
2019-02-06 15:22:11 +08:00
|
|
|
mflags-$(CONFIG_MARCH_Z15) := -march=z15
|
2021-07-20 20:28:08 +08:00
|
|
|
mflags-$(CONFIG_MARCH_Z16) := -march=z16
|
2014-08-14 22:06:02 +08:00
|
|
|
|
2015-07-08 16:20:04 +08:00
|
|
|
export CC_FLAGS_MARCH := $(mflags-y)
|
|
|
|
|
2014-08-14 22:06:02 +08:00
|
|
|
aflags-y += $(mflags-y)
|
|
|
|
cflags-y += $(mflags-y)
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2013-10-30 19:12:50 +08:00
|
|
|
cflags-$(CONFIG_MARCH_Z10_TUNE) += -mtune=z10
|
|
|
|
cflags-$(CONFIG_MARCH_Z196_TUNE) += -mtune=z196
|
|
|
|
cflags-$(CONFIG_MARCH_ZEC12_TUNE) += -mtune=zEC12
|
2017-04-12 20:17:25 +08:00
|
|
|
cflags-$(CONFIG_MARCH_Z13_TUNE) += -mtune=z13
|
|
|
|
cflags-$(CONFIG_MARCH_Z14_TUNE) += -mtune=z14
|
2019-02-06 15:22:11 +08:00
|
|
|
cflags-$(CONFIG_MARCH_Z15_TUNE) += -mtune=z15
|
2021-07-20 20:28:08 +08:00
|
|
|
cflags-$(CONFIG_MARCH_Z16_TUNE) += -mtune=z16
|
2013-10-30 19:12:50 +08:00
|
|
|
|
2016-09-06 16:46:36 +08:00
|
|
|
cflags-y += -Wa,-I$(srctree)/arch/$(ARCH)/include
|
|
|
|
|
2006-07-03 15:24:38 +08:00
|
|
|
#
|
|
|
|
# Prevent tail-call optimizations, to get clearer backtraces:
|
|
|
|
#
|
|
|
|
cflags-$(CONFIG_FRAME_POINTER) += -fno-optimize-sibling-calls
|
|
|
|
|
2018-06-15 18:28:05 +08:00
|
|
|
KBUILD_AFLAGS_DECOMPRESSOR += $(aflags-y)
|
|
|
|
KBUILD_CFLAGS_DECOMPRESSOR += $(cflags-y)
|
|
|
|
|
2021-08-17 08:21:04 +08:00
|
|
|
ifneq ($(call cc-option,-mstack-size=8192 -mstack-guard=128),)
|
2021-11-11 17:58:26 +08:00
|
|
|
CC_FLAGS_CHECK_STACK := -mstack-size=$(STACK_SIZE)
|
|
|
|
ifeq ($(call cc-option,-mstack-size=8192),)
|
|
|
|
CC_FLAGS_CHECK_STACK += -mstack-guard=$(CONFIG_STACK_GUARD)
|
|
|
|
endif
|
|
|
|
export CC_FLAGS_CHECK_STACK
|
|
|
|
cflags-$(CONFIG_CHECK_STACK) += $(CC_FLAGS_CHECK_STACK)
|
2007-04-27 22:01:46 +08:00
|
|
|
endif
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2018-01-26 19:46:47 +08:00
|
|
|
ifdef CONFIG_EXPOLINE
|
2022-03-07 03:56:07 +08:00
|
|
|
ifdef CONFIG_EXPOLINE_EXTERN
|
2022-06-27 20:50:53 +08:00
|
|
|
KBUILD_LDFLAGS_MODULE += arch/s390/lib/expoline/expoline.o
|
2022-03-07 03:56:07 +08:00
|
|
|
CC_FLAGS_EXPOLINE := -mindirect-branch=thunk-extern
|
|
|
|
CC_FLAGS_EXPOLINE += -mfunction-return=thunk-extern
|
|
|
|
else
|
2018-01-26 19:46:47 +08:00
|
|
|
CC_FLAGS_EXPOLINE := -mindirect-branch=thunk
|
|
|
|
CC_FLAGS_EXPOLINE += -mfunction-return=thunk
|
|
|
|
endif
|
2022-03-07 03:56:07 +08:00
|
|
|
CC_FLAGS_EXPOLINE += -mindirect-branch-table
|
|
|
|
export CC_FLAGS_EXPOLINE
|
|
|
|
cflags-y += $(CC_FLAGS_EXPOLINE) -DCC_USING_EXPOLINE
|
|
|
|
aflags-y += -DCC_USING_EXPOLINE
|
2018-01-26 19:46:47 +08:00
|
|
|
endif
|
|
|
|
|
2015-01-09 20:08:28 +08:00
|
|
|
ifdef CONFIG_FUNCTION_TRACER
|
2021-08-17 08:21:04 +08:00
|
|
|
ifeq ($(call cc-option,-mfentry -mnop-mcount),)
|
2018-08-06 21:17:47 +08:00
|
|
|
# make use of hotpatch feature if the compiler supports it
|
|
|
|
cc_hotpatch := -mhotpatch=0,3
|
2021-08-17 08:21:04 +08:00
|
|
|
ifneq ($(call cc-option,$(cc_hotpatch)),)
|
2018-08-06 21:17:47 +08:00
|
|
|
CC_FLAGS_FTRACE := $(cc_hotpatch)
|
|
|
|
KBUILD_AFLAGS += -DCC_USING_HOTPATCH
|
|
|
|
KBUILD_CFLAGS += -DCC_USING_HOTPATCH
|
|
|
|
endif
|
|
|
|
endif
|
2015-01-09 20:08:28 +08:00
|
|
|
endif
|
|
|
|
|
2017-11-20 18:46:13 +08:00
|
|
|
# Test CFI features of binutils
|
|
|
|
cfi := $(call as-instr,.cfi_startproc\n.cfi_val_offset 15$(comma)-160\n.cfi_endproc,-DCONFIG_AS_CFI_VAL_OFFSET=1)
|
|
|
|
|
2022-01-29 07:34:13 +08:00
|
|
|
KBUILD_CFLAGS += -mpacked-stack -mbackchain -msoft-float $(cflags-y)
|
2019-04-09 05:26:14 +08:00
|
|
|
KBUILD_CFLAGS += -pipe -Wno-sign-compare
|
2017-11-20 18:46:13 +08:00
|
|
|
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables $(cfi)
|
|
|
|
KBUILD_AFLAGS += $(aflags-y) $(cfi)
|
2018-06-15 18:28:05 +08:00
|
|
|
export KBUILD_AFLAGS_DECOMPRESSOR
|
|
|
|
export KBUILD_CFLAGS_DECOMPRESSOR
|
2005-04-17 06:20:36 +08:00
|
|
|
|
|
|
|
OBJCOPYFLAGS := -O binary
|
|
|
|
|
2007-02-21 17:55:46 +08:00
|
|
|
libs-y += arch/s390/lib/
|
2005-04-17 06:20:36 +08:00
|
|
|
drivers-y += drivers/s390/
|
|
|
|
|
2007-02-21 17:55:46 +08:00
|
|
|
boot := arch/s390/boot
|
2017-12-11 21:54:08 +08:00
|
|
|
syscalls := arch/s390/kernel/syscalls
|
2015-02-02 14:08:44 +08:00
|
|
|
tools := arch/s390/tools
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2018-06-11 20:35:01 +08:00
|
|
|
all: bzImage
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2018-02-20 18:31:34 +08:00
|
|
|
#KBUILD_IMAGE is necessary for packaging targets like rpm-pkg, deb-pkg...
|
|
|
|
KBUILD_IMAGE := $(boot)/bzImage
|
|
|
|
|
2020-02-16 22:48:29 +08:00
|
|
|
install:
|
2022-05-03 10:47:16 +08:00
|
|
|
$(call cmd,install)
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2018-06-11 20:35:01 +08:00
|
|
|
bzImage: vmlinux
|
2005-04-17 06:20:36 +08:00
|
|
|
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
|
|
|
|
2007-04-27 22:01:49 +08:00
|
|
|
zfcpdump:
|
|
|
|
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
|
|
|
|
2010-05-17 16:00:09 +08:00
|
|
|
vdso_install:
|
|
|
|
$(Q)$(MAKE) $(build)=arch/$(ARCH)/kernel/vdso64 $@
|
|
|
|
|
2017-12-11 21:54:08 +08:00
|
|
|
archheaders:
|
|
|
|
$(Q)$(MAKE) $(build)=$(syscalls) uapi
|
|
|
|
|
2015-02-02 14:08:44 +08:00
|
|
|
archprepare:
|
2017-12-11 21:54:08 +08:00
|
|
|
$(Q)$(MAKE) $(build)=$(syscalls) kapi
|
2018-01-11 19:13:18 +08:00
|
|
|
$(Q)$(MAKE) $(build)=$(tools) kapi
|
2021-06-25 20:50:08 +08:00
|
|
|
ifeq ($(KBUILD_EXTMOD),)
|
|
|
|
# We need to generate vdso-offsets.h before compiling certain files in kernel/.
|
|
|
|
# In order to do that, we should use the archprepare target, but we can't since
|
|
|
|
# asm-offsets.h is included in some files used to generate vdso-offsets.h, and
|
|
|
|
# asm-offsets.h is built in prepare0, for which archprepare is a dependency.
|
|
|
|
# Therefore we need to generate the header after prepare0 has been made, hence
|
|
|
|
# this hack.
|
|
|
|
prepare: vdso_prepare
|
|
|
|
vdso_prepare: prepare0
|
|
|
|
$(Q)$(MAKE) $(build)=arch/s390/kernel/vdso64 include/generated/vdso64-offsets.h
|
|
|
|
$(if $(CONFIG_COMPAT),$(Q)$(MAKE) \
|
|
|
|
$(build)=arch/s390/kernel/vdso32 include/generated/vdso32-offsets.h)
|
2022-06-27 20:50:53 +08:00
|
|
|
|
|
|
|
ifdef CONFIG_EXPOLINE_EXTERN
|
|
|
|
modules_prepare: expoline_prepare
|
2022-06-27 20:50:56 +08:00
|
|
|
expoline_prepare:
|
2022-06-27 20:50:53 +08:00
|
|
|
$(Q)$(MAKE) $(build)=arch/s390/lib/expoline arch/s390/lib/expoline/expoline.o
|
|
|
|
endif
|
2021-06-25 20:50:08 +08:00
|
|
|
endif
|
2005-04-17 06:20:36 +08:00
|
|
|
|
|
|
|
# Don't use tabs in echo arguments
|
|
|
|
define archhelp
|
2018-06-11 20:35:01 +08:00
|
|
|
echo '* bzImage - Kernel image for IPL ($(boot)/bzImage)'
|
2015-11-25 18:54:36 +08:00
|
|
|
echo ' install - Install kernel using'
|
|
|
|
echo ' (your) ~/bin/$(INSTALLKERNEL) or'
|
|
|
|
echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
|
|
|
|
echo ' install to $$(INSTALL_PATH)'
|
2005-04-17 06:20:36 +08:00
|
|
|
endef
|