diff options
author | Jeff Dike <jdike@addtoit.com> | 2005-11-22 06:32:09 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-22 18:13:41 +0100 |
commit | 17d469715c6453e4994e6617e8f644bf10f38584 (patch) | |
tree | 0bfc17100309b888315c3cae02adfd1783c04774 /arch/um/include/sysdep-i386 | |
parent | [PATCH] uml: eliminate anonymous union and clean up symlink lossage (diff) | |
download | linux-17d469715c6453e4994e6617e8f644bf10f38584.tar.xz linux-17d469715c6453e4994e6617e8f644bf10f38584.zip |
[PATCH] uml: properly invoke x86_64 system calls
This patch makes stub_segv use the stub_syscall macros. This was needed
anyway, but the bug that prompted this was the discovery that gcc was storing
stuff in RCX, which is trashed across a system call. This is exactly the sort
of problem that the new macros fix.
There is a stub_syscall0 for getpid. stub_segv was changed to be a libc file,
and that caused some include changes.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/um/include/sysdep-i386')
-rw-r--r-- | arch/um/include/sysdep-i386/stub.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/um/include/sysdep-i386/stub.h b/arch/um/include/sysdep-i386/stub.h index a49ceb199ee5..6ba8cbbe0d36 100644 --- a/arch/um/include/sysdep-i386/stub.h +++ b/arch/um/include/sysdep-i386/stub.h @@ -16,6 +16,15 @@ extern void stub_clone_handler(void); #define STUB_MMAP_NR __NR_mmap2 #define MMAP_OFFSET(o) ((o) >> PAGE_SHIFT) +static inline long stub_syscall0(long syscall) +{ + long ret; + + __asm__ volatile ("int $0x80" : "=a" (ret) : "0" (syscall)); + + return ret; +} + static inline long stub_syscall1(long syscall, long arg1) { long ret; |