qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 7/7] Enable fork and MIPS64 specific changes in mq_o


From: khansa
Subject: [Qemu-devel] [PATCH 7/7] Enable fork and MIPS64 specific changes in mq_open syscall
Date: Wed, 28 Sep 2011 09:38:50 +0500

From: Khansa Butt <address@hidden>


Signed-off-by: Khansa Butt <address@hidden>
---
 configure            |    1 +
 linux-user/syscall.c |   11 +++++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 5e45a43..8d39fda 100755
--- a/configure
+++ b/configure
@@ -3286,6 +3286,7 @@ case "$target_arch2" in
     TARGET_ARCH=mips64
     TARGET_BASE_ARCH=mips
     echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
+    target_nptl="yes"
     target_phys_bits=64
     target_long_alignment=8
   ;;
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 6b73769..97ac9fb 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7799,10 +7799,17 @@ abi_long do_syscall(void *cpu_env, int num, abi_long 
arg1,
         {
             struct mq_attr posix_mq_attr;
 
+#if defined(TARGET_MIPS64)
+            arg2 = arg2 & 0xff;
+            arg2 = arg2 | 0x40;
+#endif
+
             p = lock_user_string(arg1 - 1);
-            if (arg4 != 0)
+            if (arg4 != 0) {
                 copy_from_user_mq_attr (&posix_mq_attr, arg4);
-            ret = get_errno(mq_open(p, arg2, arg3, &posix_mq_attr));
+                ret = get_errno(mq_open(p, arg2, arg3, &posix_mq_attr));
+            } else if (arg4 == 0)
+                ret = get_errno(mq_open(p, arg2, arg3, NULL));
             unlock_user (p, arg1, 0);
         }
         break;
-- 
1.7.3.4




reply via email to

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