On Thu, Oct 06, 2016 at 07:57:34AM +0800, Chen Gang wrote: > > On 10/6/16 03:38, Laurent Vivier wrote: > > I've removed the cannot_destroy_with_object_finalize_yet field as > > cpu_exec_init() is not called by tilegx_cpu_initfn() anymore > > (not tested with QOM command as tilegx is only available in linux-user > > mode) > > > > > For master branch, I can not find cpu_exec_realize in total source code, > I am not quite sure whether it is ok or not.
It's a new function introduced in the first patch of this series. The old cpu_exec_init() was split into cpu_exec_init() which contains things which are safe at init time, and cpu_exec_realize() which is supposed to be called at realize() time. > > And in honest, now, tilegx-linux-user is not implemented completely, the > floating point insns are not supported by our main branch (which should > be one of main feature for tilegx) -- which I should try. > > Thanks. > > > CC: Chen Gang <gang.chen.5...@gmail.com> > > Signed-off-by: Laurent Vivier <lviv...@redhat.com> > > --- > > target-tilegx/cpu.c | 15 +++++++-------- > > 1 file changed, 7 insertions(+), 8 deletions(-) > > > > diff --git a/target-tilegx/cpu.c b/target-tilegx/cpu.c > > index f7ec920..6be69ef 100644 > > --- a/target-tilegx/cpu.c > > +++ b/target-tilegx/cpu.c > > @@ -92,6 +92,13 @@ static void tilegx_cpu_realizefn(DeviceState *dev, Error > > **errp) > > { > > CPUState *cs = CPU(dev); > > TileGXCPUClass *tcc = TILEGX_CPU_GET_CLASS(dev); > > + Error *local_err = NULL; > > + > > + cpu_exec_realize(cs, &local_err); > > + if (local_err != NULL) { > > + error_propagate(errp, local_err); > > + return; > > + } > > > > cpu_reset(cs); > > qemu_init_vcpu(cs); > > @@ -108,7 +115,6 @@ static void tilegx_cpu_initfn(Object *obj) > > > > cs->env_ptr = env; > > cpu_exec_init(cs, &error_abort); > > - cpu_exec_realize(cs, &error_abort); > > > > if (tcg_enabled() && !tcg_initialized) { > > tcg_initialized = true; > > @@ -163,13 +169,6 @@ static void tilegx_cpu_class_init(ObjectClass *oc, > > void *data) > > cc->set_pc = tilegx_cpu_set_pc; > > cc->handle_mmu_fault = tilegx_cpu_handle_mmu_fault; > > cc->gdb_num_core_regs = 0; > > - > > - /* > > - * Reason: tilegx_cpu_initfn() calls cpu_exec_init(), which saves > > - * the object in cpus -> dangling pointer after final > > - * object_unref(). > > - */ > > - dc->cannot_destroy_with_object_finalize_yet = true; > > } > > > > static const TypeInfo tilegx_cpu_type_info = { > > > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature