qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

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