[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-1.4 1/2] linux-user: Fix cpu_copy() usage
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH for-1.4 1/2] linux-user: Fix cpu_copy() usage |
Date: |
Wed, 30 Jan 2013 01:34:18 +0100 |
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
+#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