On Wed, Aug 26, 2020 at 2:40 AM Philippe Mathieu-Daudé <f4...@amsat.org> wrote: > > Le mar. 25 août 2020 19:42, Alistair Francis <alistair.fran...@wdc.com> a > écrit : >> >> Reported-by: Eduardo Habkost <ehabk...@redhat.com> >> Signed-off-by: Alistair Francis <alistair.fran...@wdc.com> >> --- >> hw/core/register.c | 31 +++++++++++++------------------ >> 1 file changed, 13 insertions(+), 18 deletions(-) >> >> diff --git a/hw/core/register.c b/hw/core/register.c >> index ddf91eb445..31038bd7cc 100644 >> --- a/hw/core/register.c >> +++ b/hw/core/register.c >> @@ -176,17 +176,6 @@ void register_reset(RegisterInfo *reg) >> } >> } >> >> -void register_init(RegisterInfo *reg) >> -{ >> - assert(reg); >> - >> - if (!reg->data || !reg->access) { >> - return; >> - } >> - >> - object_initialize((void *)reg, sizeof(*reg), TYPE_REGISTER); >> -} >> - >> void register_write_memory(void *opaque, hwaddr addr, >> uint64_t value, unsigned size) >> { >> @@ -269,13 +258,18 @@ static RegisterInfoArray >> *register_init_block(DeviceState *owner, >> int index = rae[i].addr / data_size; >> RegisterInfo *r = &ri[index]; >> >> - *r = (RegisterInfo) { >> - .data = data + data_size * index, >> - .data_size = data_size, >> - .access = &rae[i], >> - .opaque = owner, >> - }; >> - register_init(r); >> + if (data + data_size * index == 0 || !&rae[i]) { >> + continue; >> + } >> + >> + /* Init the register, this will zero it. */ >> + object_initialize((void *)r, sizeof(*r), TYPE_REGISTER); > > > Easier to review &ri[index] than that void* cast IMO.
I find that more complex as then we aren't using the local variable we created. I'm going to leave it as is, I hope that's ok. > Otherwise: > Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> Thanks Alistair > >> + >> + /* Set the properties of the register */ >> + r->data = data + data_size * index; >> + r->data_size = data_size; >> + r->access = &rae[i]; >> + r->opaque = owner; >> >> r_array->r[i] = r; >> } >> @@ -329,6 +323,7 @@ static const TypeInfo register_info = { >> .name = TYPE_REGISTER, >> .parent = TYPE_DEVICE, >> .class_init = register_class_init, >> + .instance_size = sizeof(RegisterInfo), >> }; >> >> static void register_register_types(void) >> -- >> 2.28.0 >> >>