diff mbox series

[08/11] hw/m68k/next-cube: Move rtc into NeXTPC struct

Message ID 20210115201206.17347-9-peter.maydell@linaro.org (mailing list archive)
State New, archived
Headers show
Series hw/m68k/next-cube: refactor to fix Coverity issue | expand

Commit Message

Peter Maydell Jan. 15, 2021, 8:12 p.m. UTC
Move the rtc into the NeXTPC struct. Since this is the last
use of the 'backdoor' NextState pointer we can now remove that.

Probably the RTC should be its own device at some point: in hardware
there is a separate MCS1850 RTC chip connected to the Peripheral
Controller via a 1-bit serial interface.  That goes beyond the remit
of the current refactoring, though.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/m68k/next-cube.c | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

Comments

Thomas Huth Jan. 16, 2021, 10:35 a.m. UTC | #1
Am Fri, 15 Jan 2021 20:12:03 +0000
schrieb Peter Maydell <peter.maydell@linaro.org>:

> Move the rtc into the NeXTPC struct. Since this is the last
> use of the 'backdoor' NextState pointer we can now remove that.
> 
> Probably the RTC should be its own device at some point: in hardware
> there is a separate MCS1850 RTC chip connected to the Peripheral
> Controller via a 1-bit serial interface.  That goes beyond the remit
> of the current refactoring, though.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>  hw/m68k/next-cube.c | 22 ++++++++--------------
>  1 file changed, 8 insertions(+), 14 deletions(-)
> 
> diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c
> index 5a8fc24ed35..3c83b874c56 100644
> --- a/hw/m68k/next-cube.c
> +++ b/hw/m68k/next-cube.c
> @@ -78,8 +78,6 @@ struct NeXTState {
>      qemu_irq scsi_dma;
>      qemu_irq scsi_reset;
>      qemu_irq *fd_irq;
> -
> -    NextRtc rtc;
>  };
>  
>  #define TYPE_NEXT_PC "next-pc"
> @@ -88,9 +86,6 @@ OBJECT_DECLARE_SIMPLE_TYPE(NeXTPC, NEXT_PC)
>  struct NeXTPC {
>      SysBusDevice parent_obj;
>  
> -    /* Temporary until all functionality has been moved into this
> device */
> -    NeXTState *ns;
> -
>      M68kCPU *cpu;
>  
>      MemoryRegion mmiomem;
> @@ -102,6 +97,8 @@ struct NeXTPC {
>      uint8_t scsi_csr_2;
>      uint32_t int_mask;
>      uint32_t int_status;
> +
> +    NextRtc rtc;
>  };
>  
>  /* Thanks to NeXT forums for this */
> @@ -130,7 +127,7 @@ static void nextscr2_write(NeXTPC *s, uint32_t
> val, int size) static int phase;
>      static uint8_t old_scr2;
>      uint8_t scr2_2;
> -    NextRtc *rtc = &s->ns->rtc;
> +    NextRtc *rtc = &s->rtc;
>  
>      if (size == 4) {
>          scr2_2 = (val >> 8) & 0xFF;
> @@ -864,6 +861,11 @@ static void next_pc_reset(DeviceState *dev)
>      /*     0x0000XX00 << vital bits */
>      s->scr1 = 0x00011102;
>      s->scr2 = 0x00ff0c80;
> +
> +    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)
> @@ -920,7 +922,6 @@ static void next_cube_init(MachineState *machine)
>      MemoryRegion *bmapm2 = g_new(MemoryRegion, 1);
>      MemoryRegion *sysmem = get_system_memory();
>      const char *bios_name = machine->firmware ?: ROM_FILE;
> -    NeXTState *ns = NEXT_MACHINE(machine);
>      DeviceState *dev;
>      DeviceState *pcdev;
>  
> @@ -940,13 +941,6 @@ static void next_cube_init(MachineState *machine)
>      pcdev = qdev_new(TYPE_NEXT_PC);
>      object_property_set_link(OBJECT(pcdev), "cpu", OBJECT(cpu),
> &error_abort); sysbus_realize_and_unref(SYS_BUS_DEVICE(pcdev),
> &error_fatal);
> -    /* Temporary while we refactor this code */
> -    NEXT_PC(pcdev)->ns = ns;
> -
> -    ns->rtc.status = 0x90;
> -
> -    /* Load RTC RAM - TODO: provide possibility to load contents
> from file */
> -    memcpy(ns->rtc.ram, rtc_ram2, 32);
>  
>      /* 64MB RAM starting at 0x04000000  */
>      memory_region_add_subregion(sysmem, 0x04000000, machine->ram);

Reviewed-by: Thomas Huth <huth@tuxfamily.org>
diff mbox series

Patch

diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c
index 5a8fc24ed35..3c83b874c56 100644
--- a/hw/m68k/next-cube.c
+++ b/hw/m68k/next-cube.c
@@ -78,8 +78,6 @@  struct NeXTState {
     qemu_irq scsi_dma;
     qemu_irq scsi_reset;
     qemu_irq *fd_irq;
-
-    NextRtc rtc;
 };
 
 #define TYPE_NEXT_PC "next-pc"
@@ -88,9 +86,6 @@  OBJECT_DECLARE_SIMPLE_TYPE(NeXTPC, NEXT_PC)
 struct NeXTPC {
     SysBusDevice parent_obj;
 
-    /* Temporary until all functionality has been moved into this device */
-    NeXTState *ns;
-
     M68kCPU *cpu;
 
     MemoryRegion mmiomem;
@@ -102,6 +97,8 @@  struct NeXTPC {
     uint8_t scsi_csr_2;
     uint32_t int_mask;
     uint32_t int_status;
+
+    NextRtc rtc;
 };
 
 /* Thanks to NeXT forums for this */
@@ -130,7 +127,7 @@  static void nextscr2_write(NeXTPC *s, uint32_t val, int size)
     static int phase;
     static uint8_t old_scr2;
     uint8_t scr2_2;
-    NextRtc *rtc = &s->ns->rtc;
+    NextRtc *rtc = &s->rtc;
 
     if (size == 4) {
         scr2_2 = (val >> 8) & 0xFF;
@@ -864,6 +861,11 @@  static void next_pc_reset(DeviceState *dev)
     /*     0x0000XX00 << vital bits */
     s->scr1 = 0x00011102;
     s->scr2 = 0x00ff0c80;
+
+    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)
@@ -920,7 +922,6 @@  static void next_cube_init(MachineState *machine)
     MemoryRegion *bmapm2 = g_new(MemoryRegion, 1);
     MemoryRegion *sysmem = get_system_memory();
     const char *bios_name = machine->firmware ?: ROM_FILE;
-    NeXTState *ns = NEXT_MACHINE(machine);
     DeviceState *dev;
     DeviceState *pcdev;
 
@@ -940,13 +941,6 @@  static void next_cube_init(MachineState *machine)
     pcdev = qdev_new(TYPE_NEXT_PC);
     object_property_set_link(OBJECT(pcdev), "cpu", OBJECT(cpu), &error_abort);
     sysbus_realize_and_unref(SYS_BUS_DEVICE(pcdev), &error_fatal);
-    /* Temporary while we refactor this code */
-    NEXT_PC(pcdev)->ns = ns;
-
-    ns->rtc.status = 0x90;
-
-    /* Load RTC RAM - TODO: provide possibility to load contents from file */
-    memcpy(ns->rtc.ram, rtc_ram2, 32);
 
     /* 64MB RAM starting at 0x04000000  */
     memory_region_add_subregion(sysmem, 0x04000000, machine->ram);