aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/include/sysdep-i386/stub.h
diff options
context:
space:
mode:
authorJeff Dike <jdike@addtoit.com>2005-11-22 00:32:09 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-22 12:13:41 -0500
commit17d469715c6453e4994e6617e8f644bf10f38584 (patch)
tree0bfc17100309b888315c3cae02adfd1783c04774 /arch/um/include/sysdep-i386/stub.h
parente23181deec0d2a8be576faf9d71211abb84d5ccc (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.h9
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
19static 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
19static inline long stub_syscall1(long syscall, long arg1) 28static inline long stub_syscall1(long syscall, long arg1)
20{ 29{
21 long ret; 30 long ret;