s390/syscalls: add Makefile to generate system call header files
authorHendrik Brueckner <brueckner@linux.vnet.ibm.com>
Mon, 11 Dec 2017 13:54:08 +0000 (14:54 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 23 Jan 2018 06:36:51 +0000 (07:36 +0100)
Generate the system call specific files from the archheaders
and archprepare make targets.

Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/Makefile
arch/s390/kernel/syscalls/Makefile [new file with mode: 0644]

index aa37ba79c762e5314bb4b508cc30eb79e040a300..7b31e0626f08a9f9c41799cfdac43efdf9e123ad 100644 (file)
@@ -111,6 +111,7 @@ drivers-y   += drivers/s390/
 drivers-$(CONFIG_OPROFILE)     += arch/s390/oprofile/
 
 boot           := arch/s390/boot
+syscalls       := arch/s390/kernel/syscalls
 tools          := arch/s390/tools
 
 all: image bzImage
@@ -132,7 +133,11 @@ archclean:
        $(Q)$(MAKE) $(clean)=$(boot)
        $(Q)$(MAKE) $(clean)=$(tools)
 
+archheaders:
+       $(Q)$(MAKE) $(build)=$(syscalls) uapi
+
 archprepare:
+       $(Q)$(MAKE) $(build)=$(syscalls) kapi
        $(Q)$(MAKE) $(build)=$(tools) include/generated/facilities.h
        $(Q)$(MAKE) $(build)=$(tools) include/generated/dis.h
 
diff --git a/arch/s390/kernel/syscalls/Makefile b/arch/s390/kernel/syscalls/Makefile
new file mode 100644 (file)
index 0000000..8ff96c0
--- /dev/null
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: GPL-2.0
+
+gen    := arch/$(ARCH)/include/generated
+kapi   := $(gen)/asm
+uapi   := $(gen)/uapi/asm
+
+syscall        := $(srctree)/$(src)/syscall.tbl
+systbl := $(srctree)/$(src)/syscalltbl
+
+gen-y := $(kapi)/syscall_table.h
+kapi-hdrs-y := $(kapi)/unistd_nr.h
+uapi-hdrs-y := $(uapi)/unistd_32.h
+uapi-hdrs-y += $(uapi)/unistd_64.h
+
+targets += $(addprefix ../../../,$(gen-y) $(kapi-hdrs-y) $(uapi-hdrs-y))
+
+PHONY += kapi uapi
+
+kapi:  $(gen-y) $(kapi-hdrs-y)
+uapi:  $(uapi-hdrs-y)
+
+
+# Create output directory if not already present
+_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
+         $(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
+
+define filechk_syshdr
+       $(CONFIG_SHELL) '$(systbl)' -H -a $(syshdr_abi_$(basetarget)) -f "$2"
+endef
+
+define filechk_sysnr
+       $(CONFIG_SHELL) '$(systbl)' -N -a $(sysnr_abi_$(basetarget))
+endef
+
+define filechk_syscalls
+       $(CONFIG_SHELL) '$(systbl)' -S
+endef
+
+syshdr_abi_unistd_32 := common,32
+$(uapi)/unistd_32.h: $(syscall) FORCE
+       $(call filechk,syshdr,$@)
+
+syshdr_abi_unistd_64 := common,64
+$(uapi)/unistd_64.h: $(syscall) FORCE
+       $(call filechk,syshdr,$@)
+
+$(kapi)/syscall_table.h: $(syscall) FORCE
+       $(call filechk,syscalls)
+
+sysnr_abi_unistd_nr := common,32,64
+$(kapi)/unistd_nr.h: $(syscall) FORCE
+       $(call filechk,sysnr)