# SPDX-License-Identifier: GPL-2.0 # # Share ARM64 headers with s390 KVM # arm64api := $(objtree)/arch/$(ARCH)/include/generated/arm64 arm64uapi := $(objtree)/arch/$(ARCH)/include/generated/uapi/arm64 # List of ARM64 headers to share with s390 KVM # Format: [uapi:]header.h or header-gen.h # # * header.h - from arch/arm64/include/asm/ to arm64/ # * uapi:header.h - from arch/arm64/include/uapi/asm/ to uapi/arm64/ # * header-gen.h - generated as header-gen.h from ARM64 header header.h # If a header contains partial markers (#if ARM64_S390_COMMON == 1) only this part will be copied. # If the file does not contain any markers the whole file will be copied. ARM64_SHARED_HEADERS := \ brk-imm.h \ esr.h \ kvm_arm.h \ kvm_emulate-gen.h \ kvm_host.h \ ptrace-gen.h \ sysreg-gen.h \ uapi:hwcap.h \ uapi:kvm.h \ uapi:ptrace.h \ uapi:sve_context.h filechk_gen_arm_hdr = \ $(AWK) -f $(src)/copy-arm64h.awk $< || \ $(AWK) -f $(src)/copy-arm64h-full.awk $< || \ { echo "Error: Unbalanced ARM64_S390_COMMON markers in $<" >&2; exit 1; } arm64-type = $(firstword $(subst :, ,$(1))) arm64-base = $(or $(word 2,$(subst :, ,$(1))),$(1)) arm64-src-base = $(patsubst %-gen.h,%.h,$(call arm64-base,$(1))) arm64-src = $(srctree)/arch/arm64/include/$(if $(filter uapi,$(call arm64-type,$(1))),uapi/)asm/$(call arm64-src-base,$(1)) arm64-dst = $(if $(filter uapi,$(call arm64-type,$(1))),$(arm64uapi),$(arm64api))/$(call arm64-base,$(1)) $(foreach hdr,$(ARM64_SHARED_HEADERS),\ $(eval $(call arm64-dst,$(hdr)): $(call arm64-src,$(hdr)) $(src)/copy-arm64h.awk $(src)/copy-arm64h-full.awk FORCE)) ARM64_TARGETS := $(sort $(foreach hdr,$(ARM64_SHARED_HEADERS),$(call arm64-dst,$(hdr)))) $(ARM64_TARGETS): $(call filechk,gen_arm_hdr) filechk_gen_sysreg_arm64 = \ $(AWK) -f $(srctree)/arch/arm64/tools/gen-sysreg.awk $(srctree)/arch/arm64/tools/sysreg $(arm64api)/sysreg-defs.h: $(srctree)/arch/arm64/tools/gen-sysreg.awk $(srctree)/arch/arm64/tools/sysreg FORCE $(call filechk,gen_sysreg_arm64) ARM64_TARGETS += $(arm64api)/sysreg-defs.h