qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH next v2 73/74] linux-user: Use cpu_reset() after


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH next v2 73/74] linux-user: Use cpu_reset() after cpu_init() / cpu_copy()
Date: Fri, 11 May 2012 12:32:36 +0100

On 11 May 2012 12:28, Alexander Graf <address@hidden> wrote:
>
> On 11.05.2012, at 13:26, Andreas Färber wrote:
>
>> Am 11.05.2012 13:22, schrieb Peter Maydell:
>>> On 10 May 2012 01:14, Andreas Färber <address@hidden> wrote:
>>>> Eliminates cpu_state_reset() usage.
>>>>
>>>> Signed-off-by: Andreas Färber <address@hidden>
>>>> ---
>>>> linux-user/main.c    |    2 +-
>>>> linux-user/syscall.c |    2 +-
>>>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/linux-user/main.c b/linux-user/main.c
>>>> index 191b750..49108b8 100644
>>>> --- a/linux-user/main.c
>>>> +++ b/linux-user/main.c
>>>> @@ -3405,7 +3405,7 @@ int main(int argc, char **argv, char **envp)
>>>>        exit(1);
>>>>    }
>>>> #if defined(TARGET_I386) || defined(TARGET_SPARC) || defined(TARGET_PPC)
>>>> -    cpu_state_reset(env);
>>>> +    cpu_reset(ENV_GET_CPU(env));
>>>> #endif
>>>>
>>>>    thread_env = env;
>>>> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
>>>> index 20d2a74..539af3f 100644
>>>> --- a/linux-user/syscall.c
>>>> +++ b/linux-user/syscall.c
>>>> @@ -4262,7 +4262,7 @@ static int do_fork(CPUArchState *env, unsigned int 
>>>> flags, abi_ulong newsp,
>>>>        /* we create a new CPU instance. */
>>>>        new_env = cpu_copy(env);
>>>> #if defined(TARGET_I386) || defined(TARGET_SPARC) || defined(TARGET_PPC)
>>>> -        cpu_state_reset(new_env);
>>>> +        cpu_reset(ENV_GET_CPU(new_env));
>>>> #endif
>>>>        /* Init regs that differ from the parent.  */
>>>>        cpu_clone_regs(new_env, newsp);
>>>> --
>>>
>>> Do you have any plans to try to rationalise the handling of reset
>>> so that we consistently either do or don't reset the cpu here,
>>> rather than having it done based on a TARGET_* ifdef ?
>>
>> Igor had an RFC for x86; sparc and ppc reset I haven't looked into yet.
>> Cc'ing Alex and Blue.
>
> Why would you ever not want to reset the CPU for a new thread?

The question is whether cpu_copy() and cpu_init() give you back a
CPU object which has been already reset, or one which you need to
reset yourself. At the moment I think we differ between targets
about this (eg cpu_arm_init() calls cpu_state_reset()).

(Also, "copy this CPU so it has the same register contents as this
other one" followed by "reset it" is pretty weird, what is the
thing we need to copy that means we can't do a cpu_init() of a
fresh clean CPU?)

-- PMM



reply via email to

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