Am 30.01.2013 08:18, schrieb Igor Mammedov: > On Wed, 30 Jan 2013 01:34:18 +0100 > Andreas Färber <afaer...@suse.de> 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 <blauwir...@gmail.com> >> Signed-off-by: Andreas Färber <afaer...@suse.de> >> Cc: Peter Maydell <peter.mayd...@linaro.org> >> --- >> 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