[PATCH 08/33] server: Use syscall instead of int 0x80
Maarten Lankhorst
m.b.lankhorst at gmail.com
Sat Jun 5 18:06:48 CDT 2010
---
server/ptrace.c | 20 +++++---------------
1 files changed, 5 insertions(+), 15 deletions(-)
diff --git a/server/ptrace.c b/server/ptrace.c
index 1118048..75d0d2c 100644
--- a/server/ptrace.c
+++ b/server/ptrace.c
@@ -213,22 +213,12 @@ static inline int tkill( int tgid, int pid, int sig )
#ifdef __linux__
int ret = -ENOSYS;
# ifdef __i386__
- __asm__( "pushl %%ebx\n\t"
- "movl %2,%%ebx\n\t"
- "int $0x80\n\t"
- "popl %%ebx\n\t"
- : "=a" (ret)
- : "0" (270) /*SYS_tgkill*/, "r" (tgid), "c" (pid), "d" (sig) );
- if (ret == -ENOSYS)
- __asm__( "pushl %%ebx\n\t"
- "movl %2,%%ebx\n\t"
- "int $0x80\n\t"
- "popl %%ebx\n\t"
- : "=a" (ret)
- : "0" (238) /*SYS_tkill*/, "r" (pid), "c" (sig) );
+ ret = syscall(270 /*SYS_tgkill*/, tgid, pid, sig);
+ if (ret < 0 && errno == -ENOSYS)
+ ret = syscall(238 /*SYS_tkill*/, pid, sig);
+ return ret;
# elif defined(__x86_64__)
- __asm__( "syscall" : "=a" (ret)
- : "0" (200) /*SYS_tkill*/, "D" (pid), "S" (sig) );
+ return syscall(200 /*SYS_tkill*/, pid, sig);
# endif
if (ret >= 0) return ret;
errno = -ret;
--
1.7.0.4
--------------070300070203020205030600--
More information about the wine-patches
mailing list