Am Fri, 15 Jan 2021 20:12:03 +0000 schrieb Peter Maydell <peter.mayd...@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.mayd...@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 <h...@tuxfamily.org>