qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [RFC][PATCH] qemu sh4 nptl support


From: michael
Subject: [Qemu-devel] [RFC][PATCH] qemu sh4 nptl support
Date: Wed, 10 Sep 2008 22:04:30 +0200
User-agent: Thunderbird 2.0.0.16 (X11/20080724)

Hi all,

I do some change the qemu to support nptl in linux-user mode for the sh4 cpu starting from the arm support. This is a little and an initial step and I hope that another peaple can test it.

Regards Michael



Index: target-sh4/cpu.h
===================================================================
--- target-sh4/cpu.h    (revision 5185)
+++ target-sh4/cpu.h    (working copy)
@@ -141,6 +141,11 @@
 void cpu_sh4_write_mmaped_utlb_addr(CPUSH4State *s, target_phys_addr_t addr,
                                    uint32_t mem_value);
 
+static inline void cpu_set_tls(CPUSH4State *env, target_ulong newtls)
+{
+  env->gbr = newtls;
+}
+
 #include "softfloat.h"
 
 #define CPUState CPUSH4State
Index: target-sh4/translate.c
===================================================================
--- target-sh4/translate.c      (revision 5185)
+++ target-sh4/translate.c      (working copy)
@@ -243,6 +243,7 @@
        return NULL;
     cpu_exec_init(env);
     sh4_translate_init();
+    env->cpu_model_str = cpu_model;
     cpu_sh4_reset(env);
     cpu_sh4_register(env, def);
     tlb_flush(env, 1);
Index: linux-user/syscall.c
===================================================================
--- linux-user/syscall.c        (revision 5185)
+++ linux-user/syscall.c        (working copy)
@@ -53,6 +53,7 @@
 //#include <sys/user.h>
 #include <netinet/ip.h>
 #include <netinet/tcp.h>
+#include <qemu-common.h>
 
 #define termios host_termios
 #define winsize host_winsize
@@ -4662,7 +4663,11 @@
         ret = get_errno(fsync(arg1));
         break;
     case TARGET_NR_clone:
+#if !defined(TARGET_SH4)
         ret = get_errno(do_fork(cpu_env, arg1, arg2, arg3, arg4, arg5));
+#else
+        ret = get_errno(do_fork(cpu_env, arg1, arg2, arg3, arg5, arg4));
+#endif
         break;
 #ifdef __NR_exit_group
         /* new thread calls */
Index: linux-user/main.c
===================================================================
--- linux-user/main.c   (revision 5185)
+++ linux-user/main.c   (working copy)
@@ -1887,6 +1887,7 @@
 
         switch (trapnr) {
         case 0x160:
+            env->pc += 2;
             ret = do_syscall(env,
                              env->gregs[3],
                              env->gregs[4],
@@ -1896,7 +1897,6 @@
                              env->gregs[0],
                              env->gregs[1]);
             env->gregs[0] = ret;
-            env->pc += 2;
             break;
         case EXCP_INTERRUPT:
             /* just indicate that signals should be handled asap */
Index: configure
===================================================================
--- configure   (revision 5185)
+++ configure   (working copy)
@@ -1435,6 +1435,7 @@
     echo "#define TARGET_ARCH \"sh4\"" >> $config_h
     echo "#define TARGET_SH4 1" >> $config_h
     bflt="yes"
+    target_nptl="yes"
   ;;
   sparc)
     echo "TARGET_ARCH=sparc" >> $config_mak


reply via email to

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