Message ID | 1477170324-17783-8-git-send-email-rth@twiddle.net |
---|---|
State | Superseded |
Headers | show |
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 03339ba..52740b7 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -6144,6 +6144,14 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp, sigfillset(&sigmask); sigprocmask(SIG_BLOCK, &sigmask, &info.sigmask); + /* If this is our first additional thread, we need to ensure we + * generate code for parallel execution and flush old translations. + */ + if (!parallel_cpus) { + parallel_cpus = true; + tb_flush(cpu); + } + ret = pthread_create(&info.thread, &attr, clone_func, &info); /* TODO: Free new CPU state if thread creation failed. */