[Top][All Lists]
[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
- [Qemu-devel] [RFC][PATCH] qemu sh4 nptl support,
michael <=