qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [patch] Fix uname syscall


From: Paul Brook
Subject: Re: [Qemu-devel] [patch] Fix uname syscall
Date: Sun, 12 Sep 2004 12:18:04 +0100
User-agent: KMail/1.7

On Saturday 11 September 2004 19:54, Lennert Buytenhek wrote:
> On Sat, Sep 11, 2004 at 07:33:10PM +0100, Paul Brook wrote:
> > +#define UNAME_MACHINE "armv4"
>
> Wouldn't this be armv4l/armv4b (depending on endianness)?

Yes. Updated patch below.

Paul

Index: syscall.c
===================================================================
RCS file: /cvsroot/qemu/qemu/linux-user/syscall.c,v
retrieving revision 1.50
diff -u -p -r1.50 syscall.c
--- syscall.c 19 Jun 2004 16:59:03 -0000 1.50
+++ syscall.c 12 Sep 2004 11:11:26 -0000
@@ -72,6 +72,21 @@
 /* 16 bit uid wrappers emulation */
 #define USE_UID16
 #endif
+#if defined(TARGET_ARM)
+#if defined(TARGET_WORDS_BIGENDIAN)
+#define UNAME_MACHINE "armv4b"
+#else
+#define UNAME_MACHINE "armv4l"
+#endif
+#elif defined(TARGET_I386)
+#define UNAME_MACHINE "i686"
+#elif defined(TARGET_PPC)
+#define UNAME_MACHINE "ppc"
+#elif defined(TARGET_SPARC)
+#define UNAME_MACHINE "sun4"
+#else
+#error unsupported CPU
+#endif
 
 //#include <linux/msdos_fs.h>
 #define VFAT_IOCTL_READDIR_BOTH  _IOR('r', 1, struct dirent [2])
@@ -2391,8 +2410,17 @@ long do_syscall(void *cpu_env, int num, 
         ret = get_errno(setdomainname((const char *)arg1, arg2));
         break;
     case TARGET_NR_uname:
-        /* no need to transcode because we use the linux syscall */
-        ret = get_errno(sys_uname((struct new_utsname *)arg1));
+ {
+     struct new_utsname * buf;
+
+     buf = (struct new_utsname *)arg1;
+     ret = get_errno(sys_uname(buf));
+     if (!is_error(ret)) {
+  /* Overrite the native machine name with whatever is being
+     emulated. */
+  strcpy (buf->machine, UNAME_MACHINE);
+     }
+ }
         break;
 #ifdef TARGET_I386
     case TARGET_NR_modify_ldt:




reply via email to

[Prev in Thread] Current Thread [Next in Thread]