qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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

             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).