[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] SPARC user mode multithread
From: |
David Munday |
Subject: |
Re: [Qemu-devel] SPARC user mode multithread |
Date: |
Fri, 6 Nov 2009 11:10:00 -0800 (PST) |
Hi,
Sorry forgot attachment! I have attached it to this email now. I also noticed
that the last line should assign the pid to the child, but I didn't see where I
can find that info and pass it into the cpu_clone_regs function.
Thanks for the help,
David
----- Original Message -----
From: "Blue Swirl" <address@hidden>
To: "David Munday" <address@hidden>
Cc: address@hidden
Sent: Friday, November 6, 2009 10:31:23 AM GMT -08:00 US/Canada Pacific
Subject: Re: [Qemu-devel] SPARC user mode multithread
On Thu, Nov 5, 2009 at 10:29 PM, David Munday <address@hidden> wrote:
> Hi,
> I found the Linux/Sparc clone operations in copy_thread() from process32.c
> (attached)
Forgot to attach?
> I tried modifying cpu_clone_regs with the following code per the Sparc/linux
> routines, but qemu still stalls on signal suspend.
>
> It seems like it should only need to set the stack pointer and the return
> addresses for the child and parent processes, but it's clearly missing
> something.
>
> Is there more to this fix than these two assignments?
>
> static inline void cpu_clone_regs(CPUState *PARENT_env, CPUState *child_env,
> target_ulong newsp)
> {
> if (newsp)
> {
> child_env->regwptr[14] = newsp; //changed to 14 per process32.c DM
> //env->regwptr[22] = newsp;
But 14 would be l6, not i6.
> printf("setting stack pointer\n");
> }
> child_env->regwptr[0] = 0;
This should be the pid.
process_32.c
Description: Text document