Skip to contentSkip to conversation

x86/syscall changes for v3.3

GIT PULL Ingo Molnar 3 participants 5 messages Jan 5, 2012 – Jan 7, 2012

Subsystems (5)
Documentation x86 Kbuild Tracing +1 more subsystems
lore
Share & tools
lore
#0 lore raw

Linus,

Please pull the latest x86-syscall-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-syscall-for-linus

out-of-topic modifications in x86-syscall-for-linus:
----------------------------------------------------
Makefile # 052ad27: kbuild: Add support for an "archh
arch/um/Makefile # 79320bc: um: Use $(srctree) not $(KBUILD_S
# 392f4b7: um: Generate headers before gener # c9b284b: um: Run host archheaders, allow u

kernel/trace/trace_syscalls.c      # d5e553d: trace: Include <asm/asm-offsets.h
scripts/Makefile.headersinst       # cb97914: kbuild: Add support for installin
scripts/checksyscalls.sh           # 29dc54c: checksyscalls: Use arch/x86/sysca

Thanks,

Ingo

------------------>
H. Peter Anvin (18):
kbuild: Add support for installing generated asm headers
kbuild: Add support for an "archheaders" target x86-64, syscall: Adjust comment spacing and remove typo x86-64, ia32: Move compat_ni_syscall into C and its own file
trace: Include <asm/asm-offsets.h> in trace_syscalls.c
x86: Machine-readable syscall tables and scripts to process them
checksyscalls: Use arch/x86/syscalls/syscall_32.tbl as source
x86: Generate system call tables and unistd_*.h from tables
x86: Simplify syscallhdr.sh
x86, syscall: Re-fix typo in comment
x86, syscall: Allow syscall offset to be symbolic kbuild, headers.sh: Don't make archheaders explicitly
um: Run host archheaders, allow use of host generated headers
um: Generate headers before generating user-offsets.s x86, um: Use the same style generated syscall tables as native x86, um: Mark system call tables readonly
um: Use $(srctree) not $(KBUILD_SRC)
x86, um: Fix typo in 32-bit system call modifications

 Documentation/kbuild/makefiles.txt |   50 ++-
 Makefile                           |    9 +-
 arch/um/Makefile                   |    9 +-
 arch/x86/Makefile                  |    6 +
 arch/x86/ia32/Makefile             |    1 +
 arch/x86/ia32/ia32entry.S          |  359 ------------------
 arch/x86/ia32/nosyscall.c          |    7 +
 arch/x86/ia32/syscall_ia32.c       |   25 ++
 arch/x86/include/asm/Kbuild        |    5 +-
 arch/x86/include/asm/ia32_unistd.h |   13 +-
 arch/x86/include/asm/unistd.h      |   54 +++-
 arch/x86/include/asm/unistd_32.h   |  401 --------------------
 arch/x86/include/asm/unistd_64.h   |  732 ------------------------------------
 arch/x86/kernel/Makefile           |    3 +-
 arch/x86/kernel/asm-offsets_32.c   |    8 +
 arch/x86/kernel/asm-offsets_64.c   |   19 +-
 arch/x86/kernel/entry_32.S         |   37 +--
 arch/x86/kernel/syscall_32.c       |   25 ++
 arch/x86/kernel/syscall_64.c       |   20 +-
 arch/x86/kernel/syscall_table_32.S |  350 -----------------
 arch/x86/syscalls/Makefile         |   43 +++
 arch/x86/syscalls/syscall_32.tbl   |  357 ++++++++++++++++++
 arch/x86/syscalls/syscall_64.tbl   |  320 ++++++++++++++++
 arch/x86/syscalls/syscallhdr.sh    |   27 ++
 arch/x86/syscalls/syscalltbl.sh    |   15 +
 arch/x86/um/Makefile               |    3 +-
 arch/x86/um/sys_call_table_32.S    |   26 --
 arch/x86/um/sys_call_table_32.c    |   55 +++
 arch/x86/um/sys_call_table_64.c    |   33 +-
 arch/x86/um/user-offsets.c         |   15 +
 kernel/trace/trace_syscalls.c      |    1 +
 scripts/Makefile.headersinst       |   10 +-
 scripts/checksyscalls.sh           |   15 +-
 33 files changed, 1075 insertions(+), 1978 deletions(-)
 create mode 100644 arch/x86/ia32/nosyscall.c
 create mode 100644 arch/x86/ia32/syscall_ia32.c
 delete mode 100644 arch/x86/include/asm/unistd_32.h
 delete mode 100644 arch/x86/include/asm/unistd_64.h
 create mode 100644 arch/x86/kernel/syscall_32.c
 delete mode 100644 arch/x86/kernel/syscall_table_32.S
 create mode 100644 arch/x86/syscalls/Makefile
 create mode 100644 arch/x86/syscalls/syscall_32.tbl
 create mode 100644 arch/x86/syscalls/syscall_64.tbl
 create mode 100644 arch/x86/syscalls/syscallhdr.sh
 create mode 100644 arch/x86/syscalls/syscalltbl.sh
 delete mode 100644 arch/x86/um/sys_call_table_32.S
 create mode 100644 arch/x86/um/sys_call_table_32.c
Documentation/kbuild/makefiles.txt +32 -18
index f47cdef..ab0a984 100644
@@ -33,14 +33,15 @@ This document describes the Linux kernel Makefiles.
 
 	=== 6 Architecture Makefiles
 	   --- 6.1 Set variables to tweak the build to the architecture
-	   --- 6.2 Add prerequisites to archprepare:
-	   --- 6.3 List directories to visit when descending
-	   --- 6.4 Architecture-specific boot images
-	   --- 6.5 Building non-kbuild targets
-	   --- 6.6 Commands useful for building a boot image
-	   --- 6.7 Custom kbuild commands
-	   --- 6.8 Preprocessing linker scripts
-	   --- 6.9 Generic header files
+	   --- 6.2 Add prerequisites to archheaders:
+	   --- 6.3 Add prerequisites to archprepare:
+	   --- 6.4 List directories to visit when descending
+	   --- 6.5 Architecture-specific boot images
+	   --- 6.6 Building non-kbuild targets
+	   --- 6.7 Commands useful for building a boot image
+	   --- 6.8 Custom kbuild commands
+	   --- 6.9 Preprocessing linker scripts
+	   --- 6.10 Generic header files
 
 	=== 7 Kbuild syntax for exported headers
 		--- 7.1 header-y
@@ -252,7 +253,7 @@ more details, with real examples.
 	This will create a library lib.a based on delay.o. For kbuild to
 	actually recognize that there is a lib.a being built, the directory
 	shall be listed in libs-y.
-	See also "6.3 List directories to visit when descending".
+	See also "6.4 List directories to visit when descending".
 
 	Use of lib-y is normally restricted to lib/ and arch/*/lib.
 
@@ -974,7 +975,20 @@ When kbuild executes, the following steps are followed (roughly):
 	$(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic
 	mode) if this option is supported by $(AR).
 
---- 6.2 Add prerequisites to archprepare:
+--- 6.2 Add prerequisites to archheaders:
+
+	The archheaders: rule is used to generate header files that
+	may be installed into user space by "make header_install" or
+	"make headers_install_all".  In order to support
+	"make headers_install_all", this target has to be able to run
+	on an unconfigured tree, or a tree configured for another
+	architecture.
+
+	It is run before "make archprepare" when run on the
+	architecture itself.
+
+
+--- 6.3 Add prerequisites to archprepare:
 
 	The archprepare: rule is used to list prerequisites that need to be
 	built before starting to descend down in the subdirectories.
@@ -990,7 +1004,7 @@ When kbuild executes, the following steps are followed (roughly):
 	generating offset header files.
 
 
---- 6.3 List directories to visit when descending
+--- 6.4 List directories to visit when descending
 
 	An arch Makefile cooperates with the top Makefile to define variables
 	which specify how to build the vmlinux file.  Note that there is no
@@ -1019,7 +1033,7 @@ When kbuild executes, the following steps are followed (roughly):
 		drivers-$(CONFIG_OPROFILE)  += arch/sparc64/oprofile/
 
 
---- 6.4 Architecture-specific boot images
+--- 6.5 Architecture-specific boot images
 
 	An arch Makefile specifies goals that take the vmlinux file, compress
 	it, wrap it in bootstrapping code, and copy the resulting files
@@ -1070,7 +1084,7 @@ When kbuild executes, the following steps are followed (roughly):
 
 	When "make" is executed without arguments, bzImage will be built.
 
---- 6.5 Building non-kbuild targets
+--- 6.6 Building non-kbuild targets
 
     extra-y
 
@@ -1090,7 +1104,7 @@ When kbuild executes, the following steps are followed (roughly):
 	shall be built, but shall not be linked as part of built-in.o.
 
 
---- 6.6 Commands useful for building a boot image
+--- 6.7 Commands useful for building a boot image
 
 	Kbuild provides a few macros that are useful when building a
 	boot image.
@@ -1112,7 +1126,7 @@ When kbuild executes, the following steps are followed (roughly):
 	always be built.
 	Assignments to $(targets) are without $(obj)/ prefix.
 	if_changed may be used in conjunction with custom commands as
-	defined in 6.7 "Custom kbuild commands".
+	defined in 6.8 "Custom kbuild commands".
 
 	Note: It is a typical mistake to forget the FORCE prerequisite.
 	Another common pitfall is that whitespace is sometimes
@@ -1171,7 +1185,7 @@ When kbuild executes, the following steps are followed (roughly):
 		$(obj)/%.dtb: $(src)/%.dts
 			$(call cmd,dtc)
 
---- 6.7 Custom kbuild commands
+--- 6.8 Custom kbuild commands
 
 	When kbuild is executing with KBUILD_VERBOSE=0, then only a shorthand
 	of a command is normally displayed.
@@ -1198,7 +1212,7 @@ When kbuild executes, the following steps are followed (roughly):
 	will be displayed with "make KBUILD_VERBOSE=0".
 
 
---- 6.8 Preprocessing linker scripts
+--- 6.9 Preprocessing linker scripts
 
 	When the vmlinux image is built, the linker script
 	arch/$(ARCH)/kernel/vmlinux.lds is used.
@@ -1228,7 +1242,7 @@ When kbuild executes, the following steps are followed (roughly):
 	The kbuild infrastructure for *lds file are used in several
 	architecture-specific files.
 
---- 6.9 Generic header files
+--- 6.10 Generic header files
 
 	The directory include/asm-generic contains the header files
 	that may be shared between individual architectures.
Makefile +6 -3
index dab8610..e5e0e07 100644
@@ -442,7 +442,7 @@ asm-generic:
 
 no-dot-config-targets := clean mrproper distclean \
 			 cscope gtags TAGS tags help %docs check% coccicheck \
-			 include/linux/version.h headers_% \
+			 include/linux/version.h headers_% archheaders \
 			 kernelversion %src-pkg
 
 config-targets := 0
@@ -979,7 +979,7 @@ prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \
                    include/config/auto.conf
 	$(cmd_crmodverdir)
 
-archprepare: prepare1 scripts_basic
+archprepare: archheaders prepare1 scripts_basic
 
 prepare0: archprepare FORCE
 	$(Q)$(MAKE) $(build)=.
@@ -1046,8 +1046,11 @@ hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
 # If we do an all arch process set dst to asm-$(hdr-arch)
 hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
 
+PHONY += archheaders
+archheaders:
+
 PHONY += __headers
-__headers: include/linux/version.h scripts_basic asm-generic FORCE
+__headers: include/linux/version.h scripts_basic asm-generic archheaders FORCE
 	$(Q)$(MAKE) $(build)=scripts build_unifdef
 
 PHONY += headers_install_all
arch/um/Makefile +7 -2
index 7730af6..28688e6 100644
@@ -64,7 +64,8 @@ USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -D__KERNEL__,,\
 #This will adjust *FLAGS accordingly to the platform.
 include $(srctree)/$(ARCH_DIR)/Makefile-os-$(OS)
 
-KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/include
+KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/include \
+		   -I$(HOST_DIR)/include/generated
 
 # -Derrno=kernel_errno - This turns all kernel references to errno into
 # kernel_errno to separate them from the libc errno.  This allows -fno-common
@@ -96,6 +97,10 @@ endef
 
 KBUILD_KCONFIG := $(HOST_DIR)/um/Kconfig
 
+archheaders:
+	$(Q)$(MAKE) -C '$(srctree)' KBUILD_SRC= \
+		ARCH=$(SUBARCH) O='$(objtree)' archheaders
+
 archprepare: include/generated/user_constants.h
 
 LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static
@@ -135,7 +140,7 @@ archclean:
 
 # Generated files
 
-$(HOST_DIR)/um/user-offsets.s: FORCE
+$(HOST_DIR)/um/user-offsets.s: __headers FORCE
 	$(Q)$(MAKE) $(build)=$(HOST_DIR)/um $@
 
 define filechk_gen-asm-offsets
arch/x86/Makefile +6 -0
index b02e509..209ba12 100644
@@ -118,6 +118,12 @@ KBUILD_CFLAGS += $(mflags-y)
 KBUILD_AFLAGS += $(mflags-y)
 
 ###
+# Syscall table generation
+
+archheaders:
+	$(Q)$(MAKE) $(build)=arch/x86/syscalls all
+
+###
 # Kernel objects
 
 head-y := arch/x86/kernel/head_$(BITS).o
arch/x86/ia32/Makefile +1 -0
index 52d0ccf..455646e 100644
@@ -3,6 +3,7 @@
 #
 
 obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_signal.o
+obj-$(CONFIG_IA32_EMULATION) += nosyscall.o syscall_ia32.o
 
 sysv-$(CONFIG_SYSVIPC) := ipc32.o
 obj-$(CONFIG_IA32_EMULATION) += $(sysv-y)
arch/x86/ia32/ia32entry.S +0 -359

374 lines not on this page · raw message

arch/x86/ia32/nosyscall.c new file +7 -0
new file mode 100644
index 0000000..51ecd5b
@@ -0,0 +1,7 @@
+#include <linux/kernel.h>
+#include <linux/errno.h>
+
+long compat_ni_syscall(void)
+{
+	return -ENOSYS;
+}
arch/x86/ia32/syscall_ia32.c new file +25 -0
new file mode 100644
index 0000000..4754ba0
@@ -0,0 +1,25 @@
+/* System call table for ia32 emulation. */
+
+#include <linux/linkage.h>
+#include <linux/sys.h>
+#include <linux/cache.h>
+#include <asm/asm-offsets.h>
+
+#define __SYSCALL_I386(nr, sym, compat) extern asmlinkage void compat(void) ;
+#include <asm/syscalls_32.h>
+#undef __SYSCALL_I386
+
+#define __SYSCALL_I386(nr, sym, compat) [nr] = compat,
+
+typedef void (*sys_call_ptr_t)(void);
+
+extern void compat_ni_syscall(void);
+
+const sys_call_ptr_t ia32_sys_call_table[__NR_ia32_syscall_max+1] = {
+	/*
+	 * Smells like a compiler bug -- it doesn't work
+	 * when the & below is removed.
+	 */
+	[0 ... __NR_ia32_syscall_max] = &compat_ni_syscall,
+#include <asm/syscalls_32.h>
+};
arch/x86/include/asm/Kbuild +3 -2
index 6fa90a8..b57e6a4 100644
@@ -19,7 +19,8 @@ header-y += processor-flags.h
 header-y += ptrace-abi.h
 header-y += sigcontext32.h
 header-y += ucontext.h
-header-y += unistd_32.h
-header-y += unistd_64.h
 header-y += vm86.h
 header-y += vsyscall.h
+
+genhdr-y += unistd_32.h
+genhdr-y += unistd_64.h
arch/x86/include/asm/ia32_unistd.h +3 -10
index 976f6ec..b0d5716 100644
@@ -2,17 +2,10 @@
 #define _ASM_X86_IA32_UNISTD_H
 
 /*
- * This file contains the system call numbers of the ia32 port,
+ * This file contains the system call numbers of the ia32 compat ABI,
  * this is for the kernel only.
- * Only add syscalls here where some part of the kernel needs to know
- * the number. This should be otherwise in sync with asm-x86/unistd_32.h. -AK
  */
-
-#define __NR_ia32_restart_syscall 0
-#define __NR_ia32_exit		  1
-#define __NR_ia32_read		  3
-#define __NR_ia32_write		  4
-#define __NR_ia32_sigreturn	119
-#define __NR_ia32_rt_sigreturn	173
+#define __SYSCALL_ia32_NR(x) (x)
+#include <asm/unistd_32_ia32.h>
 
 #endif /* _ASM_X86_IA32_UNISTD_H */
arch/x86/include/asm/unistd.h +50 -4

63 lines not on this page · raw message

arch/x86/include/asm/unistd_32.h deleted +0 -401

401 lines not on this page · raw message

arch/x86/include/asm/unistd_64.h deleted +0 -732

732 lines not on this page · raw message

arch/x86/kernel/Makefile +2 -1
index 8baca3c..8c473d9 100644
@@ -25,7 +25,8 @@ obj-$(CONFIG_IRQ_WORK)  += irq_work.o
 obj-y			+= probe_roms.o
 obj-$(CONFIG_X86_32)	+= sys_i386_32.o i386_ksyms_32.o
 obj-$(CONFIG_X86_64)	+= sys_x86_64.o x8664_ksyms_64.o
-obj-$(CONFIG_X86_64)	+= syscall_64.o vsyscall_64.o
+obj-y			+= syscall_$(BITS).o
+obj-$(CONFIG_X86_64)	+= vsyscall_64.o
 obj-$(CONFIG_X86_64)	+= vsyscall_emu_64.o
 obj-y			+= bootflag.o e820.o
 obj-y			+= pci-dma.o quirks.o topology.o kdebugfs.o
arch/x86/kernel/asm-offsets_32.c +8 -0
index 395a10e..85d98ab 100644
@@ -3,6 +3,11 @@
 #include <linux/lguest.h>
 #include "../../../drivers/lguest/lg.h"
 
+#define __SYSCALL_I386(nr, sym, compat) [nr] = 1,
+static char syscalls[] = {
+#include <asm/syscalls_32.h>
+};
+
 /* workaround for a warning with -Wmissing-prototypes */
 void foo(void);
 
@@ -76,4 +81,7 @@ void foo(void)
 	OFFSET(LGUEST_PAGES_regs_errcode, lguest_pages, regs.errcode);
 	OFFSET(LGUEST_PAGES_regs, lguest_pages, regs);
 #endif
+	BLANK();
+	DEFINE(__NR_syscall_max, sizeof(syscalls) - 1);
+	DEFINE(NR_syscalls, sizeof(syscalls));
 }
arch/x86/kernel/asm-offsets_64.c +12 -7
index e72a119..834e897 100644
@@ -1,11 +1,12 @@
 #include <asm/ia32.h>
 
-#define __NO_STUBS 1
-#undef __SYSCALL
-#undef _ASM_X86_UNISTD_64_H
-#define __SYSCALL(nr, sym) [nr] = 1,
-static char syscalls[] = {
-#include <asm/unistd.h>
+#define __SYSCALL_64(nr, sym, compat) [nr] = 1,
+static char syscalls_64[] = {
+#include <asm/syscalls_64.h>
+};
+#define __SYSCALL_I386(nr, sym, compat) [nr] = 1,
+static char syscalls_ia32[] = {
+#include <asm/syscalls_32.h>
 };
 
 int main(void)
@@ -72,7 +73,11 @@ int main(void)
 	OFFSET(TSS_ist, tss_struct, x86_tss.ist);
 	BLANK();
 
-	DEFINE(__NR_syscall_max, sizeof(syscalls) - 1);
+	DEFINE(__NR_syscall_max, sizeof(syscalls_64) - 1);
+	DEFINE(NR_syscalls, sizeof(syscalls_64));
+
+	DEFINE(__NR_ia32_syscall_max, sizeof(syscalls_ia32) - 1);
+	DEFINE(IA32_NR_syscalls, sizeof(syscalls_ia32));
 
 	return 0;
 }
arch/x86/kernel/entry_32.S +14 -23
index f3f6f53..1ffcda2 100644
@@ -81,8 +81,6 @@
  * enough to patch inline, increasing performance.
  */
 
-#define nr_syscalls ((syscall_table_size)/4)
-
 #ifdef CONFIG_PREEMPT
 #define preempt_stop(clobbers)	DISABLE_INTERRUPTS(clobbers); TRACE_IRQS_OFF
 #else
@@ -423,7 +421,7 @@ sysenter_past_esp:
 	testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
 	jnz sysenter_audit
 sysenter_do_call:
-	cmpl $(nr_syscalls), %eax
+	cmpl $(NR_syscalls), %eax
 	jae syscall_badsys
 	call *sys_call_table(,%eax,4)
 	movl %eax,PT_EAX(%esp)
@@ -504,7 +502,7 @@ ENTRY(system_call)
 					# system call tracing in operation / emulation
 	testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
 	jnz syscall_trace_entry
-	cmpl $(nr_syscalls), %eax
+	cmpl $(NR_syscalls), %eax
 	jae syscall_badsys
 syscall_call:
 	call *sys_call_table(,%eax,4)
@@ -650,7 +648,7 @@ syscall_trace_entry:
 	movl %esp, %eax
 	call syscall_trace_enter
 	/* What it returned is what we'll actually use.  */
-	cmpl $(nr_syscalls), %eax
+	cmpl $(NR_syscalls), %eax
 	jnae syscall_call
 	jmp syscall_exit
 END(syscall_trace_entry)
@@ -690,29 +688,28 @@ END(syscall_badsys)
  * System calls that need a pt_regs pointer.
  */
 #define PTREGSCALL0(name) \
-	ALIGN; \
-ptregs_##name: \
+ENTRY(ptregs_##name) ;  \
 	leal 4(%esp),%eax; \
-	jmp sys_##name;
+	jmp sys_##name; \
+ENDPROC(ptregs_##name)
 
 #define PTREGSCALL1(name) \
-	ALIGN; \
-ptregs_##name: \
+ENTRY(ptregs_##name) ; \
 	leal 4(%esp),%edx; \
 	movl (PT_EBX+4)(%esp),%eax; \
-	jmp sys_##name;
+	jmp sys_##name; \
+ENDPROC(ptregs_##name)
 
 #define PTREGSCALL2(name) \
-	ALIGN; \
-ptregs_##name: \
+ENTRY(ptregs_##name) ; \
 	leal 4(%esp),%ecx; \
 	movl (PT_ECX+4)(%esp),%edx; \
 	movl (PT_EBX+4)(%esp),%eax; \
-	jmp sys_##name;
+	jmp sys_##name; \
+ENDPROC(ptregs_##name)
 
 #define PTREGSCALL3(name) \
-	ALIGN; \
-ptregs_##name: \
+ENTRY(ptregs_##name) ; \
 	CFI_STARTPROC; \
 	leal 4(%esp),%eax; \
 	pushl_cfi %eax; \
@@ -737,8 +734,7 @@ PTREGSCALL2(vm86)
 PTREGSCALL1(vm86old)
 
 /* Clone is an oddball.  The 4th arg is in %edi */
-	ALIGN;
-ptregs_clone:
+ENTRY(ptregs_clone)
 	CFI_STARTPROC
 	leal 4(%esp),%eax
 	pushl_cfi %eax
@@ -1209,11 +1205,6 @@ return_to_handler:
 	jmp *%ecx
 #endif
 
-.section .rodata,"a"
-#include "syscall_table_32.S"
-
-syscall_table_size=(.-sys_call_table)
-
 /*
  * Some functions should be protected against kprobes
  */
arch/x86/kernel/syscall_32.c new file +25 -0
new file mode 100644
index 0000000..147fcd4
@@ -0,0 +1,25 @@
+/* System call table for i386. */
+
+#include <linux/linkage.h>
+#include <linux/sys.h>
+#include <linux/cache.h>
+#include <asm/asm-offsets.h>
+
+#define __SYSCALL_I386(nr, sym, compat) extern asmlinkage void sym(void) ;
+#include <asm/syscalls_32.h>
+#undef __SYSCALL_I386
+
+#define __SYSCALL_I386(nr, sym, compat) [nr] = sym,
+
+typedef asmlinkage void (*sys_call_ptr_t)(void);
+
+extern asmlinkage void sys_ni_syscall(void);
+
+const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = {
+	/*
+	 * Smells like a compiler bug -- it doesn't work
+	 * when the & below is removed.
+	 */
+	[0 ... __NR_syscall_max] = &sys_ni_syscall,
+#include <asm/syscalls_32.h>
+};
arch/x86/kernel/syscall_64.c +8 -12
index de87d60..7ac7943 100644
@@ -5,15 +5,11 @@
 #include <linux/cache.h>
 #include <asm/asm-offsets.h>
 
-#define __NO_STUBS
+#define __SYSCALL_64(nr, sym, compat) extern asmlinkage void sym(void) ;
+#include <asm/syscalls_64.h>
+#undef __SYSCALL_64
 
-#define __SYSCALL(nr, sym) extern asmlinkage void sym(void) ;
-#undef _ASM_X86_UNISTD_64_H
-#include <asm/unistd_64.h>
-
-#undef __SYSCALL
-#define __SYSCALL(nr, sym) [nr] = sym,
-#undef _ASM_X86_UNISTD_64_H
+#define __SYSCALL_64(nr, sym, compat) [nr] = sym,
 
 typedef void (*sys_call_ptr_t)(void);
 
@@ -21,9 +17,9 @@ extern void sys_ni_syscall(void);
 
 const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = {
 	/*
-	*Smells like a like a compiler bug -- it doesn't work
-	*when the & below is removed.
-	*/
+	 * Smells like a compiler bug -- it doesn't work
+	 * when the & below is removed.
+	 */
 	[0 ... __NR_syscall_max] = &sys_ni_syscall,
-#include <asm/unistd_64.h>
+#include <asm/syscalls_64.h>
 };
arch/x86/kernel/syscall_table_32.S deleted +0 -350

350 lines not on this page · raw message

arch/x86/syscalls/Makefile new file +43 -0

43 lines not on this page · raw message

arch/x86/syscalls/syscall_32.tbl new file +357 -0

357 lines not on this page · raw message

arch/x86/syscalls/syscall_64.tbl new file +320 -0

223 lines not on this page · raw message

arch/x86/syscalls/syscallhdr.sh new file +27 -0
new file mode 100644
index 0000000..31fd5f1

Lines of this file are not shown. View the raw message.

arch/x86/syscalls/syscalltbl.sh new file +15 -0
new file mode 100644
index 0000000..0e7f8ec

Lines of this file are not shown. View the raw message.

arch/x86/um/Makefile +2 -1
index 8fb5840..5d065b2 100644

Lines of this file are not shown. View the raw message.

arch/x86/um/sys_call_table_32.S deleted +0 -26
deleted file mode 100644
index a7ca80d..0000000

Lines of this file are not shown. View the raw message.

arch/x86/um/sys_call_table_32.c new file +55 -0

55 lines not on this page · raw message

arch/x86/um/sys_call_table_64.c +13 -20
index 99522f7..fe626c3 100644

Lines of this file are not shown. View the raw message.

arch/x86/um/user-offsets.c +15 -0
index ca49be8..5edf4f4 100644

Lines of this file are not shown. View the raw message.

kernel/trace/trace_syscalls.c +1 -0
index cb65454..5f35f6f 100644

Lines of this file are not shown. View the raw message.

scripts/Makefile.headersinst +8 -2
index a57f5bd..d3bae5e 100644

Lines of this file are not shown. View the raw message.

scripts/checksyscalls.sh +10 -5
index 3ab316e..d24810f 100755

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.

#1 lore raw

Hi Ingo,

Quoted 6 lines · On Thu, 5 Jan 2012 16:29:18 +0100 Ingo Molnar <[email protected]> wrote:

Please pull the latest x86-syscall-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-syscall-for-linus

Quoted 7 lines

out-of-topic modifications in x86-syscall-for-linus:
----------------------------------------------------
Makefile # 052ad27: kbuild: Add support for an "archh
arch/um/Makefile # 79320bc: um: Use $(srctree) not $(KBUILD_S
# 392f4b7: um: Generate headers before gener # c9b284b: um: Run host archheaders, allow u
kernel/trace/trace_syscalls.c # d5e553d: trace: Include <asm/asm-offsets.h

HPA has a pending fix for this patch as it causes warnings on PowerPC at least. The idea was to move this include of asm/asm-offsets.h into asm/ftrace.h so it only affects x86.

Signature · 3 lines
Cheers,
Stephen Rothwell                    [email protected]
http://www.canb.auug.org.au/~sfr/
#2 lore raw

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 5 lines · Stephen Rothwell

HPA has a pending fix for this patch as it causes warnings on PowerPC at least. The idea was to move this include of asm/asm-offsets.h into asm/ftrace.h so it only affects x86.

Sorry... have been in baby mode for the past week, but yes, I think it only causes warnings and it's a trivial fix.

-hpa
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJPB3+bAAoJEL2gYIVJO6zkdxgQAIjDIV16WeaGLVSxYaxnJBi4 wbnt4oK6DRvROSNIe8D+SvzBDsyAL1bxsqVw3klgmuWudsdIx4T20ODEsEGObKOI KKHWQSfMP2by5wRPxnTRJmFVnkOj8dMcCIcOWfAj8JzLe3fXXtuILkQ4iLfXnWuG Q1DmaFXf0b7ZgcKDoMzBj779WhJUQ03/r7laJTgvtHeppNH8qmbeoOf2mHCs5IuO r8EPJoAe+s1Fq+iDTPWDYrZgDIH4V3GVtd2zvlLEtgvmTwG9YNpQ7hjEX49TQnPL oLcutQr1t35HqH7NcKhUbL3hRoIHDcZph0P412hd2nzrXS5vm4ljI0uEI9rSUThu 3NFbZykvXy+XisPNIcOfHt61QRO+igikM4wSh/eG4Qx8Fc7TyfsaLNzTrPRfq3u9 1Mu0MwJj6jlHN68142As6XdPJ9egQw/mXtA/L+DRNUSn+2gANIxoXD1KB7LnN25R G6TIbXqtzMGlNcPEL+c93CCmRZgls4QB3jp/RfjW1OWLtgRxwOq6wPft4XK1v8aB BchoeckiG8K6lTEfqSIHHrqas81coMfrBxehkp/vZ2Y3qmxeA0/rrmvjLD8pEk6F OpMYdKwGMoVbeIf4nJdbefX3wOv53SLDjp4tTP6I+bmjz6/kZrKIqQwUmp/jWm+/ J2ozPxkZ8faPCNY3aqDI
=3zyX
-----END PGP SIGNATURE-----

#3 lore raw
Quoted 5 lines · H. Peter Anvin

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 1 line · Stephen Rothwell
Quoted 7 lines
Quoted 4 lines

HPA has a pending fix for this patch as it causes warnings on PowerPC at least. The idea was to move this include of asm/asm-offsets.h into asm/ftrace.h so it only affects x86.

Sorry... have been in baby mode for the past week, but yes, I think it only causes warnings and it's a trivial fix.

Lets delay this tree nevertheless, the warnings seem numerous and annoying (and they've been reported), right?

Linus, please don't pull it for now.

Thanks,

Ingo

#4 lore raw

I'll dig up and push the fix in the morning.

Quoted 24 lines · Ingo Molnar
Quoted 5 lines · H. Peter Anvin

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 1 line · Stephen Rothwell
Quoted 7 lines
Quoted 4 lines

HPA has a pending fix for this patch as it causes warnings on PowerPC at least. The idea was to move this include of asm/asm-offsets.h into asm/ftrace.h so it only affects x86.

Sorry... have been in baby mode for the past week, but yes, I think it only causes warnings and it's a trivial fix.

Lets delay this tree nevertheless, the warnings seem numerous and annoying (and they've been reported), right?

Linus, please don't pull it for now.

Thanks,

Ingo

Signature · 1 line
Sent from my Android phone with K-9 Mail. Please excuse my brevity.