On 05/04/16 18:32, Alex Bennée wrote: > diff --git a/cpus.c b/cpus.c > index 46732a5..8d27fb0 100644 > --- a/cpus.c > +++ b/cpus.c
(snip) > @@ -146,6 +147,48 @@ typedef struct TimersState { > } TimersState; > > static TimersState timers_state; > +static bool mttcg_enabled; > + > +static QemuOptsList qemu_tcg_opts = { > + .name = "tcg", > + .head = QTAILQ_HEAD_INITIALIZER(qemu_tcg_opts.head), > + .desc = { > + { > + .name = "mttcg", > + .type = QEMU_OPT_BOOL, > + .help = "Enable/disable multi-threaded TCG", > + }, > + { /* end of list */ } > + }, > +}; > + > +static void tcg_register_config(void) > +{ > + qemu_add_opts(&qemu_tcg_opts); > +} > + > +opts_init(tcg_register_config); > + > +static bool default_mttcg_enabled(void) > +{ > + /* > + * TODO: Check if we have a chance to have MTTCG working on this > guest/host. > + * Basically is the atomic instruction implemented? Is there any > + * memory ordering issue? > + */ I think this could be decided in configure/makefiles. > + return false; > +} > + > +void qemu_tcg_configure(QemuOpts *opts) > +{ > + mttcg_enabled = qemu_opt_get_bool(opts, "mttcg", > default_mttcg_enabled()); > +} > + > +bool qemu_tcg_mttcg_enabled(void) > +{ > + return mttcg_enabled; > +} > + > > int64_t cpu_get_icount_raw(void) > { > diff --git a/include/qom/cpu.h b/include/qom/cpu.h > index 13eeaae..5e3826c 100644 > --- a/include/qom/cpu.h > +++ b/include/qom/cpu.h > @@ -369,6 +369,20 @@ extern struct CPUTailQ cpus; > extern __thread CPUState *current_cpu; > > /** > + * qemu_tcg_enable_mttcg: > + * Enable the MultiThread TCG support. > + */ > +void qemu_tcg_enable_mttcg(void); Seems to be an orphaned declaration. Kind regards, Sergey