All of lore.kernel.org
 help / color / mirror / Atom feed
From: michael <trimarchi@gandalf.sssup.it>
To: qemu-devel@nongnu.org
Cc: jan.kiszka@web.de
Subject: Re: [Qemu-devel] SH4 TARGET_NR_clone
Date: Thu, 21 Aug 2008 18:53:59 +0200	[thread overview]
Message-ID: <48AD9DA7.5010003@gandalf.sssup.it> (raw)
In-Reply-To: <20080710094853.GA4303@networkno.de>

Hi,


Thiemo Seufer wrote:
> michael wrote:
>   
>> Hi,
>>
>> This patch fix the call of Clone in SH4 system
>>     
>
> What exactly does it fix? The kernel side of sys_clone seems to be no
> different to other architectures.
>   
Look at the libc code:

nptl/sysdeps/unix/sysv/linux/fork.c

the fork is implemente in this file. The ARCH_FORK is different in
i386 an sh code.

sh code:

/* TLS pointer argument is passed as the 5-th argument.  */
#define ARCH_FORK() \
  INLINE_SYSCALL (clone, 
5,                                                   \
                  CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, 
0,     \
                  NULL, &THREAD_SELF->tid, NULL)

i386 code:

#define ARCH_FORK() \
  INLINE_SYSCALL (clone, 
5,                                                   \
                  CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, 
0,     \
                  NULL, NULL, &THREAD_SELF->tid)


As you can see the 4th and 5th argument are inverted, and it maybe 
justify my problem.

>
> Thiemo
>
>
>   
>> This patch implements the correct TARGET_NR_clone for SH4
>> cpu.
>>
>> Signed-off-by: Michael Trimarchi <trimarchimichael@yahoo.it>
>>
>> Index: linux-user/syscall.c
>> ===================================================================
>> --- linux-user/syscall.c	(revision 4865)
>> +++ 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
>> @@ -4657,7 +4658,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 */
>>     
>
>
>
>   
Regards Michael

      parent reply	other threads:[~2008-08-21 16:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-10  9:20 [Qemu-devel] SH4 TARGET_NR_clone michael
2008-07-10  9:48 ` Thiemo Seufer
2008-07-10 10:22   ` michael
2008-08-21 16:53   ` michael [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48AD9DA7.5010003@gandalf.sssup.it \
    --to=trimarchi@gandalf.sssup.it \
    --cc=jan.kiszka@web.de \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.