From: Fabrice Bellard <fabrice@bellard.org>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] qemu/linux-user syscall.c
Date: Wed, 14 Jun 2006 13:36:59 +0000 [thread overview]
Message-ID: <E1FqVYJ-0000Cw-Iz@savannah.gnu.org> (raw)
CVSROOT: /sources/qemu
Module name: qemu
Changes by: Fabrice Bellard <bellard> 06/06/14 13:36:59
Modified files:
linux-user : syscall.c
Log message:
use glibc syscall (David Woodhouse)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemu/linux-user/syscall.c?cvsroot=qemu&r1=1.71&r2=1.72
Patches:
Index: syscall.c
===================================================================
RCS file: /sources/qemu/qemu/linux-user/syscall.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -b -r1.71 -r1.72
--- syscall.c 14 May 2006 11:30:38 -0000 1.71
+++ syscall.c 14 Jun 2006 13:36:59 -0000 1.72
@@ -79,127 +79,59 @@
#define VFAT_IOCTL_READDIR_SHORT _IOR('r', 2, struct dirent [2])
-#if defined(__powerpc__)
-#undef __syscall_nr
-#undef __sc_loadargs_0
-#undef __sc_loadargs_1
-#undef __sc_loadargs_2
-#undef __sc_loadargs_3
-#undef __sc_loadargs_4
-#undef __sc_loadargs_5
-#undef __sc_asm_input_0
-#undef __sc_asm_input_1
-#undef __sc_asm_input_2
-#undef __sc_asm_input_3
-#undef __sc_asm_input_4
-#undef __sc_asm_input_5
#undef _syscall0
#undef _syscall1
#undef _syscall2
#undef _syscall3
#undef _syscall4
#undef _syscall5
-
-/* need to redefine syscalls as Linux kernel defines are incorrect for
- the clobber list */
-/* On powerpc a system call basically clobbers the same registers like a
- * function call, with the exception of LR (which is needed for the
- * "sc; bnslr" sequence) and CR (where only CR0.SO is clobbered to signal
- * an error return status).
- */
-
-#define __syscall_nr(nr, type, name, args...) \
- unsigned long __sc_ret, __sc_err; \
- { \
- register unsigned long __sc_0 __asm__ ("r0"); \
- register unsigned long __sc_3 __asm__ ("r3"); \
- register unsigned long __sc_4 __asm__ ("r4"); \
- register unsigned long __sc_5 __asm__ ("r5"); \
- register unsigned long __sc_6 __asm__ ("r6"); \
- register unsigned long __sc_7 __asm__ ("r7"); \
- \
- __sc_loadargs_##nr(name, args); \
- __asm__ __volatile__ \
- ("sc \n\t" \
- "mfcr %0 " \
- : "=&r" (__sc_0), \
- "=&r" (__sc_3), "=&r" (__sc_4), \
- "=&r" (__sc_5), "=&r" (__sc_6), \
- "=&r" (__sc_7) \
- : __sc_asm_input_##nr \
- : "cr0", "ctr", "memory", \
- "r8", "r9", "r10","r11", "r12"); \
- __sc_ret = __sc_3; \
- __sc_err = __sc_0; \
- } \
- if (__sc_err & 0x10000000) \
- { \
- errno = __sc_ret; \
- __sc_ret = -1; \
- } \
- return (type) __sc_ret
-
-#define __sc_loadargs_0(name, dummy...) \
- __sc_0 = __NR_##name
-#define __sc_loadargs_1(name, arg1) \
- __sc_loadargs_0(name); \
- __sc_3 = (unsigned long) (arg1)
-#define __sc_loadargs_2(name, arg1, arg2) \
- __sc_loadargs_1(name, arg1); \
- __sc_4 = (unsigned long) (arg2)
-#define __sc_loadargs_3(name, arg1, arg2, arg3) \
- __sc_loadargs_2(name, arg1, arg2); \
- __sc_5 = (unsigned long) (arg3)
-#define __sc_loadargs_4(name, arg1, arg2, arg3, arg4) \
- __sc_loadargs_3(name, arg1, arg2, arg3); \
- __sc_6 = (unsigned long) (arg4)
-#define __sc_loadargs_5(name, arg1, arg2, arg3, arg4, arg5) \
- __sc_loadargs_4(name, arg1, arg2, arg3, arg4); \
- __sc_7 = (unsigned long) (arg5)
-
-#define __sc_asm_input_0 "0" (__sc_0)
-#define __sc_asm_input_1 __sc_asm_input_0, "1" (__sc_3)
-#define __sc_asm_input_2 __sc_asm_input_1, "2" (__sc_4)
-#define __sc_asm_input_3 __sc_asm_input_2, "3" (__sc_5)
-#define __sc_asm_input_4 __sc_asm_input_3, "4" (__sc_6)
-#define __sc_asm_input_5 __sc_asm_input_4, "5" (__sc_7)
+#undef _syscall6
#define _syscall0(type,name) \
-type name(void) \
+type name (void) \
{ \
- __syscall_nr(0, type, name); \
+ return syscall(__NR_##name); \
}
#define _syscall1(type,name,type1,arg1) \
-type name(type1 arg1) \
+type name (type1 arg1) \
{ \
- __syscall_nr(1, type, name, arg1); \
+ return syscall(__NR_##name, arg1); \
}
#define _syscall2(type,name,type1,arg1,type2,arg2) \
-type name(type1 arg1, type2 arg2) \
+type name (type1 arg1,type2 arg2) \
{ \
- __syscall_nr(2, type, name, arg1, arg2); \
+ return syscall(__NR_##name, arg1, arg2); \
}
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
-type name(type1 arg1, type2 arg2, type3 arg3) \
+type name (type1 arg1,type2 arg2,type3 arg3) \
{ \
- __syscall_nr(3, type, name, arg1, arg2, arg3); \
+ return syscall(__NR_##name, arg1, arg2, arg3); \
}
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
-type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4) \
{ \
- __syscall_nr(4, type, name, arg1, arg2, arg3, arg4); \
+ return syscall(__NR_##name, arg1, arg2, arg3, arg4); \
}
-#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
-type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
+ type5,arg5) \
+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
{ \
- __syscall_nr(5, type, name, arg1, arg2, arg3, arg4, arg5); \
+ return syscall(__NR_##name, arg1, arg2, arg3, arg4, arg5); \
}
-#endif
+
+
+#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
+ type5,arg5,type6,arg6) \
+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \
+{ \
+ return syscall(__NR_##name, arg1, arg2, arg3, arg4, arg5, arg6); \
+}
+
#define __NR_sys_uname __NR_uname
#define __NR_sys_getcwd1 __NR_getcwd
next reply other threads:[~2006-06-14 13:37 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-14 13:36 Fabrice Bellard [this message]
-- strict thread matches above, loose matches on Subject: below --
2008-03-28 22:32 [Qemu-devel] qemu/linux-user syscall.c Aurelien Jarno
2008-02-10 13:28 Andrzej Zaborowski
2008-02-04 22:26 Fabrice Bellard
2007-12-18 2:41 Thiemo Seufer
2007-12-18 2:39 Thiemo Seufer
2007-12-09 23:12 Thiemo Seufer
2007-12-09 2:37 Thiemo Seufer
2007-12-09 2:25 Thiemo Seufer
2007-12-02 6:28 Thiemo Seufer
2007-11-11 23:11 Fabrice Bellard
2007-11-11 19:34 Fabrice Bellard
2007-11-11 17:39 Fabrice Bellard
2007-11-11 15:11 Fabrice Bellard
2007-11-11 14:57 Fabrice Bellard
2007-10-30 21:06 Andrzej Zaborowski
2007-10-09 3:42 Thiemo Seufer
2007-09-25 17:50 Thiemo Seufer
2007-09-25 16:09 Thiemo Seufer
2007-09-24 9:27 Thiemo Seufer
2007-09-24 9:26 Thiemo Seufer
2007-09-24 9:26 Thiemo Seufer
2007-09-24 9:25 Thiemo Seufer
2007-09-24 9:25 Thiemo Seufer
2007-09-24 9:24 Thiemo Seufer
2007-09-24 9:24 Thiemo Seufer
2007-09-24 9:23 Thiemo Seufer
2007-09-24 9:23 Thiemo Seufer
2007-09-24 9:22 Thiemo Seufer
2007-09-24 9:21 Thiemo Seufer
2007-09-16 21:39 Thiemo Seufer
2007-07-23 15:37 Thiemo Seufer
2007-07-12 11:06 Thiemo Seufer
2007-07-07 20:45 Blue Swirl
2007-06-03 14:27 Thiemo Seufer
2007-06-01 11:50 Thiemo Seufer
2007-06-01 11:49 Thiemo Seufer
2007-05-28 20:07 Thiemo Seufer
2007-05-28 14:05 Thiemo Seufer
2007-05-28 14:28 ` Paul Brook
2007-05-28 20:08 ` Thiemo Seufer
2007-05-28 20:30 ` Blue Swirl
2007-05-28 21:40 ` Paul Brook
2007-04-26 23:49 Thiemo Seufer
2007-04-01 18:31 Thiemo Seufer
2007-03-31 18:59 Thiemo Seufer
2007-03-22 15:08 Thiemo Seufer
2007-03-20 21:50 Thiemo Seufer
2007-03-19 13:09 Thiemo Seufer
2007-03-19 13:05 Thiemo Seufer
2007-03-17 1:27 Paul Brook
2007-03-19 10:47 ` Kirill A. Shutemov
2007-02-17 22:25 Thiemo Seufer
2007-02-11 20:03 Thiemo Seufer
2007-02-11 18:36 Thiemo Seufer
2007-02-11 18:26 Thiemo Seufer
2007-02-11 18:35 ` Paul Brook
2007-02-11 18:33 ` Kirill A. Shutemov
2007-02-11 20:13 ` Thiemo Seufer
2007-02-02 22:05 Thiemo Seufer
2007-02-02 22:05 Thiemo Seufer
2007-01-05 20:55 Thiemo Seufer
2006-12-11 22:04 Thiemo Seufer
2006-12-11 19:13 Thiemo Seufer
2006-12-08 1:32 Thiemo Seufer
2006-11-19 15:26 Paul Brook
2006-11-21 13:32 ` Raphaël Rigo
2006-04-16 14:14 Paul Brook
2005-12-18 20:03 Fabrice Bellard
2005-07-23 15:10 Fabrice Bellard
2005-07-23 14:46 Fabrice Bellard
2005-03-01 22:32 Fabrice Bellard
2005-01-03 23:00 Fabrice Bellard
2004-12-06 22:51 Fabrice Bellard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1FqVYJ-0000Cw-Iz@savannah.gnu.org \
--to=fabrice@bellard.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).