-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
x86, um: Use the same style generated syscall tables as native
Now when the native kernel uses a single style of generated system call table, follow suite for UML and implement the same style, all in C. This requires __NR_syscall_max and NR_syscalls to be generated; on native this is done in asm-headers.h but that file is common to all UML architectures; therefore put it in user-headers.h instead which already have accommodations for architecture-specific values. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
- Loading branch information
H. Peter Anvin
committed
Dec 6, 2011
1 parent
392f4b7
commit 45db1c6
Showing
5 changed files
with
84 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
/* | ||
* System call table for UML/i386, copied from arch/x86/kernel/syscall_*.c | ||
* with some changes for UML. | ||
*/ | ||
|
||
#include <linux/linkage.h> | ||
#include <linux/sys.h> | ||
#include <linux/cache.h> | ||
#include <generated/user_constants.h> | ||
|
||
#define __NO_STUBS | ||
|
||
/* | ||
* Below you can see, in terms of #define's, the differences between the x86-64 | ||
* and the UML syscall table. | ||
*/ | ||
|
||
/* Not going to be implemented by UML, since we have no hardware. */ | ||
#define stub_iopl sys_ni_syscall | ||
#define sys_ioperm sys_ni_syscall | ||
|
||
#define sys_vm86old sys_ni_syscall | ||
#define sys_vm86 sys_ni_syscall | ||
|
||
#define old_mmap sys_old_mmap | ||
|
||
#define ptregs_fork sys_fork | ||
#define ptregs_execve sys_execve | ||
#define ptregs_iopl sys_iopl | ||
#define ptregs_vm86old sys_vm86old | ||
#define ptregs_clone sys_clone | ||
#define ptregs_vm86 sys_vm86 | ||
#define ptregs_sigaltstack sys_sigaltstack | ||
#define ptregs_vfork sys_vfork | ||
|
||
#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 void (*sys_call_ptr_t)(void); | ||
|
||
extern void sys_ni_syscall(void); | ||
|
||
sys_call_ptr_t sys_call_table[] __cacheline_aligned = { | ||
/* | ||
* 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> | ||
}; | ||
|
||
int syscall_table_size = sizeof(sys_call_table); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters