[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