diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2007-05-15 20:36:00 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-15 18:56:37 -0700 |
commit | ecec5ba681a0bf1165899f8b1889f06fcd8e901a (patch) | |
tree | bacc286b05900e6a3f8dfc96386efc5dc85d660d | |
parent | 327b9eebbf2b7ce632e93a9c1386d944af0dadf4 (diff) | |
download | blackbird-op-linux-ecec5ba681a0bf1165899f8b1889f06fcd8e901a.tar.gz blackbird-op-linux-ecec5ba681a0bf1165899f8b1889f06fcd8e901a.zip |
fix uml-x86_64
__NR_syscall_max is done in x86_64 asm-offsets; do an equivalent in
uml kern_constants.h
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | arch/um/include/sysdep-x86_64/kernel-offsets.h | 9 | ||||
-rw-r--r-- | arch/um/include/sysdep-x86_64/syscalls.h | 3 | ||||
-rw-r--r-- | arch/um/sys-x86_64/syscall_table.c | 5 |
3 files changed, 14 insertions, 3 deletions
diff --git a/arch/um/include/sysdep-x86_64/kernel-offsets.h b/arch/um/include/sysdep-x86_64/kernel-offsets.h index a307237b7964..c978b589df41 100644 --- a/arch/um/include/sysdep-x86_64/kernel-offsets.h +++ b/arch/um/include/sysdep-x86_64/kernel-offsets.h @@ -17,7 +17,16 @@ #define OFFSET(sym, str, mem) \ DEFINE(sym, offsetof(struct str, mem)); +#define __NO_STUBS 1 +#undef __SYSCALL +#undef _ASM_X86_64_UNISTD_H_ +#define __SYSCALL(nr, sym) [nr] = 1, +static char syscalls[] = { +#include <asm/arch/unistd.h> +}; + void foo(void) { #include <common-offsets.h> +DEFINE(UM_NR_syscall_max, sizeof(syscalls) - 1); } diff --git a/arch/um/include/sysdep-x86_64/syscalls.h b/arch/um/include/sysdep-x86_64/syscalls.h index 5e86aa047b2b..cf72256609e4 100644 --- a/arch/um/include/sysdep-x86_64/syscalls.h +++ b/arch/um/include/sysdep-x86_64/syscalls.h @@ -9,6 +9,7 @@ #include <linux/msg.h> #include <linux/shm.h> +#include <kern_constants.h> typedef long syscall_handler_t(void); @@ -29,6 +30,6 @@ extern long old_mmap(unsigned long addr, unsigned long len, extern syscall_handler_t sys_modify_ldt; extern syscall_handler_t sys_arch_prctl; -#define NR_syscalls (__NR_syscall_max + 1) +#define NR_syscalls (UM_NR_syscall_max + 1) #endif diff --git a/arch/um/sys-x86_64/syscall_table.c b/arch/um/sys-x86_64/syscall_table.c index 9e9ad72c2ba4..5133988d3610 100644 --- a/arch/um/sys-x86_64/syscall_table.c +++ b/arch/um/sys-x86_64/syscall_table.c @@ -4,6 +4,7 @@ #include <linux/linkage.h> #include <linux/sys.h> #include <linux/cache.h> +#include <kern_constants.h> #define __NO_STUBS @@ -45,8 +46,8 @@ typedef void (*sys_call_ptr_t)(void); extern void sys_ni_syscall(void); -sys_call_ptr_t sys_call_table[__NR_syscall_max+1] __cacheline_aligned = { +sys_call_ptr_t sys_call_table[UM_NR_syscall_max+1] __cacheline_aligned = { /* Smells like a like a compiler bug -- it doesn't work when the & below is removed. */ - [0 ... __NR_syscall_max] = &sys_ni_syscall, + [0 ... UM_NR_syscall_max] = &sys_ni_syscall, #include <asm-x86_64/unistd.h> }; |