[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC][PATCH] qemu sh4 nptl support
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [RFC][PATCH] qemu sh4 nptl support |
Date: |
Mon, 15 Sep 2008 09:44:09 +0200 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
On Wed, Sep 10, 2008 at 10:04:30PM +0200, michael wrote:
> 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.
Applied, thanks.
> 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
>
--
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
: :' : Debian developer | Electrical Engineer
`. `' address@hidden | address@hidden
`- people.debian.org/~aurel32 | www.aurel32.net