aboutsummaryrefslogtreecommitdiff
path: root/linux-user/syscall.c
diff options
context:
space:
mode:
authorBlue Swirl <blauwirbel@gmail.com>2009-11-07 16:34:12 +0000
committerBlue Swirl <blauwirbel@gmail.com>2009-11-07 16:34:12 +0000
commitb4558d7481aefc865b0b52bf9b285ebcf2e8b59f (patch)
tree2155e2db703ec3d511fa81a6eee4f333a18ceed6 /linux-user/syscall.c
parent4a6435639781214a14f3c6054955e5ef16298d72 (diff)
(x86/Sparc/PPC)-user: fix cpu_copy
b55a37c981914aa8ecd21b9a2a2fb37f39b917c5 moved the call to cpu_reset to user emulators. But cpu_copy also initializes a CPU structure, so add the call also there. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'linux-user/syscall.c')
-rw-r--r--linux-user/syscall.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 0254226a42..e38552ca1c 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -3553,6 +3553,9 @@ static int do_fork(CPUState *env, unsigned int flags, abi_ulong newsp,
new_stack = ts->stack;
/* we create a new CPU instance. */
new_env = cpu_copy(env);
+#if defined(TARGET_I386) || defined(TARGET_SPARC) || defined(TARGET_PPC)
+ cpu_reset(new_env);
+#endif
/* Init regs that differ from the parent. */
cpu_clone_regs(new_env, newsp);
new_env->opaque = ts;