qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-1.4 1/2] linux-user: Fix cpu_copy() usage


From: Andreas Färber
Subject: Re: [Qemu-devel] [PATCH for-1.4 1/2] linux-user: Fix cpu_copy() usage
Date: Wed, 30 Jan 2013 08:46:34 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130105 Thunderbird/17.0.2

Am 30.01.2013 08:18, schrieb Igor Mammedov:
> On Wed, 30 Jan 2013 01:34:18 +0100
> Andreas Färber <address@hidden> wrote:
> 
>> Commit b4558d7481aefc865b0b52bf9b285ebcf2e8b59f ((x86/Sparc/PPC)-user:
>> fix cpu_copy) added a CPU reset after cpu_copy() inside linux-user code.
>> This reverses the register copying that cpu_copy() does.
>>
>> Clean this up by moving the cpu_reset() call to after cpu_init() but
>> before memcpy(). This matches the initial CPU creation in linux-user.
>>
>> Cc: Blue Swirl <address@hidden>
>> Signed-off-by: Andreas Färber <address@hidden>
>> Cc: Peter Maydell <address@hidden>
>> ---
>>  exec.c               |    6 ++++++
>>  linux-user/syscall.c |    3 ---
>>  2 Dateien geändert, 6 Zeilen hinzugefügt(+), 3 Zeilen entfernt(-)
>>
>> diff --git a/exec.c b/exec.c
>> index b85508b..8dfa458 100644
>> --- a/exec.c
>> +++ b/exec.c
>> @@ -537,6 +537,12 @@ CPUArchState *cpu_copy(CPUArchState *env)
>>      CPUWatchpoint *wp;
>>  #endif
>>  
>> +#ifdef CONFIG_USER_ONLY
> unnecessary ifdef-feniry here, cpu_copy() is linux-user only thing.

It is currently used only by linux-user (and hopefully will stay that
way :)) but I don't see the code limited to CONFIG_USER_ONLY?

Andreas

>> +#if defined(TARGET_I386) || defined(TARGET_SPARC) || defined(TARGET_PPC)
>> +    cpu_reset(ENV_GET_CPU(new_env));
>> +#endif
>> +#endif
>> +
>>      memcpy(new_env, env, sizeof(CPUArchState));
>>  
>>      /* Preserve chaining. */
>> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
>> index 693e66f..6c254ba 100644
>> --- a/linux-user/syscall.c
>> +++ b/linux-user/syscall.c
>> @@ -4361,9 +4361,6 @@ static int do_fork(CPUArchState *env, unsigned int 
>> flags, abi_ulong newsp,
>>          init_task_state(ts);
>>          /* we create a new CPU instance. */
>>          new_env = cpu_copy(env);
>> -#if defined(TARGET_I386) || defined(TARGET_SPARC) || defined(TARGET_PPC)
>> -        cpu_reset(ENV_GET_CPU(new_env));
>> -#endif
>>          /* Init regs that differ from the parent.  */
>>          cpu_clone_regs(new_env, newsp);
>>          new_env->opaque = ts;
>> -- 
>> 1.7.10.4
>>
>>
> Otherwise looks good.

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



reply via email to

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