diff options
author | Jeff Dike <jdike@addtoit.com> | 2005-11-22 00:32:09 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-22 12:13:41 -0500 |
commit | 17d469715c6453e4994e6617e8f644bf10f38584 (patch) | |
tree | 0bfc17100309b888315c3cae02adfd1783c04774 /arch/um/include/sysdep-i386/stub.h | |
parent | e23181deec0d2a8be576faf9d71211abb84d5ccc (diff) |
[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/stub.h')
-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); | |||
16 | #define STUB_MMAP_NR __NR_mmap2 | 16 | #define STUB_MMAP_NR __NR_mmap2 |
17 | #define MMAP_OFFSET(o) ((o) >> PAGE_SHIFT) | 17 | #define MMAP_OFFSET(o) ((o) >> PAGE_SHIFT) |
18 | 18 | ||
19 | static inline long stub_syscall0(long syscall) | ||
20 | { | ||
21 | long ret; | ||
22 | |||
23 | __asm__ volatile ("int $0x80" : "=a" (ret) : "0" (syscall)); | ||
24 | |||
25 | return ret; | ||
26 | } | ||
27 | |||
19 | static inline long stub_syscall1(long syscall, long arg1) | 28 | static inline long stub_syscall1(long syscall, long arg1) |
20 | { | 29 | { |
21 | long ret; | 30 | long ret; |