diff options
-rw-r--r-- | exec.c | 4 | ||||
-rw-r--r-- | linux-user/syscall.c | 3 |
2 files changed, 4 insertions, 3 deletions
@@ -642,6 +642,10 @@ CPUArchState *cpu_copy(CPUArchState *env) CPUWatchpoint *wp; #endif + /* Reset non arch specific state */ + cpu_reset(ENV_GET_CPU(new_env)); + + /* Copy arch specific state into the new CPU */ memcpy(new_env, env, sizeof(CPUArchState)); /* Clone all break/watchpoints. diff --git a/linux-user/syscall.c b/linux-user/syscall.c index a797afc340..3f6db4b0d1 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -4293,9 +4293,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; |