| # 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 |