diff mbox series

[v2,26/34] next-cube: move reset of next-rtc fields from next-pc to next-rtc

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

Commit Message

Mark Cave-Ayland Dec. 12, 2024, 11:46 a.m. UTC
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(-)

Comments

Philippe Mathieu-Daudé Dec. 14, 2024, 1:41 p.m. UTC | #1
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 mbox series

Patch

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)