Message ID | 20241212114620.549285-27-mark.cave-ayland@ilande.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | next-cube: more tidy-ups and improvements | expand |
On 12/12/24 12:46, Mark Cave-Ayland wrote: > Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> > Reviewed-by: Thomas Huth <huth@tuxfamily.org> > --- > hw/m68k/next-cube.c | 17 ++++++++++++----- > 1 file changed, 12 insertions(+), 5 deletions(-) > +static void next_rtc_reset_hold(Object *obj, ResetType type) > +{ > + NeXTRTC *rtc = NEXT_RTC(obj); > + > + rtc->status = 0x90; > + > + /* Load RTC RAM - TODO: provide possibility to load contents from file */ > + memcpy(rtc->ram, rtc_ram2, 32); > +} > static const TypeInfo next_rtc_info = { > @@ -1072,11 +1084,6 @@ static void next_pc_reset_hold(Object *obj, ResetType type) > s->scr1 = 0x00011102; > s->scr2 = 0x00ff0c80; > s->old_scr2 = s->scr2; > - > - s->rtc.status = 0x90; > - > - /* Load RTC RAM - TODO: provide possibility to load contents from file */ > - memcpy(s->rtc.ram, rtc_ram2, 32); Pre-existing, this looks suspicious to reset RTC device state during device reset. > } > > static void next_pc_realize(DeviceState *dev, Error **errp)
diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index c947af65e2..a7a8b3cbbf 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -1018,6 +1018,16 @@ static const MemoryRegionOps next_dummy_en_ops = { .endianness = DEVICE_BIG_ENDIAN, }; +static void next_rtc_reset_hold(Object *obj, ResetType type) +{ + NeXTRTC *rtc = NEXT_RTC(obj); + + rtc->status = 0x90; + + /* Load RTC RAM - TODO: provide possibility to load contents from file */ + memcpy(rtc->ram, rtc_ram2, 32); +} + static const VMStateDescription next_rtc_vmstate = { .name = "next-rtc", .version_id = 3, @@ -1037,9 +1047,11 @@ static const VMStateDescription next_rtc_vmstate = { static void next_rtc_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); + ResettableClass *rc = RESETTABLE_CLASS(klass); dc->desc = "NeXT RTC"; dc->vmsd = &next_rtc_vmstate; + rc->phases.hold = next_rtc_reset_hold; } static const TypeInfo next_rtc_info = { @@ -1072,11 +1084,6 @@ static void next_pc_reset_hold(Object *obj, ResetType type) s->scr1 = 0x00011102; s->scr2 = 0x00ff0c80; s->old_scr2 = s->scr2; - - s->rtc.status = 0x90; - - /* Load RTC RAM - TODO: provide possibility to load contents from file */ - memcpy(s->rtc.ram, rtc_ram2, 32); } static void next_pc_realize(DeviceState *dev, Error **errp)