On 2/28/15 01:36, Andreas Färber wrote: >> +static void tilegx_cpu_class_init(ObjectClass *oc, void *data) >> > +{ >> > + DeviceClass *dc = DEVICE_CLASS(oc); >> > + CPUClass *cc = CPU_CLASS(oc); >> > + TilegxCPUClass *mcc = TILEGX_CPU_CLASS(oc); >> > + >> > + mcc->parent_realize = dc->realize; >> > + dc->realize = tilegx_cpu_realizefn; >> > + >> > + mcc->parent_reset = cc->reset; >> > + cc->reset = tilegx_cpu_reset; >> > + >> > + cc->has_work = tilegx_cpu_has_work; >> > + cc->do_interrupt = tilegx_cpu_do_interrupt; >> > + cc->cpu_exec_interrupt = tilegx_cpu_exec_interrupt; >> > + cc->dump_state = NULL; >> > + cc->set_pc = tilegx_cpu_set_pc; >> > + cc->gdb_read_register = NULL; >> > + cc->gdb_write_register = NULL; > Is this really safe to do? If so, all fields are zero-initialized at > this point already, so no need to assign NULL or 0. > >> > + cc->handle_mmu_fault = tilegx_cpu_handle_mmu_fault; >> > + dc->vmsd = &vmstate_tilegx_cpu; >> > + dc->props = tilegx_properties; >> > + cc->gdb_num_core_regs = 0; >> > +} >> > +
When we set gdb_num_core_regs be 0, gdb_read/write_register should not be called, and they assume the callers always pass valid parameters. - For alpha, s390 have considered about the invalid parameter. - arm, i386 and microblaze do not consider about the invalid parameter. For dump_state, the caller will check whether it is NULL, before use it. Thanks. -- Chen Gang Open, share, and attitude like air, water, and life which God blessed