|
@@ -244,6 +244,18 @@ static void mss_timer_init(Object *obj)
|
|
sysbus_init_mmio(SYS_BUS_DEVICE(obj), &t->mmio);
|
|
sysbus_init_mmio(SYS_BUS_DEVICE(obj), &t->mmio);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void mss_timer_finalize(Object *obj)
|
|
|
|
+{
|
|
|
|
+ MSSTimerState *t = MSS_TIMER(obj);
|
|
|
|
+ int i;
|
|
|
|
+
|
|
|
|
+ for (i = 0; i < NUM_TIMERS; i++) {
|
|
|
|
+ struct Msf2Timer *st = &t->timers[i];
|
|
|
|
+
|
|
|
|
+ ptimer_free(st->ptimer);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
static const VMStateDescription vmstate_timers = {
|
|
static const VMStateDescription vmstate_timers = {
|
|
.name = "mss-timer-block",
|
|
.name = "mss-timer-block",
|
|
.version_id = 1,
|
|
.version_id = 1,
|
|
@@ -287,6 +299,7 @@ static const TypeInfo mss_timer_info = {
|
|
.parent = TYPE_SYS_BUS_DEVICE,
|
|
.parent = TYPE_SYS_BUS_DEVICE,
|
|
.instance_size = sizeof(MSSTimerState),
|
|
.instance_size = sizeof(MSSTimerState),
|
|
.instance_init = mss_timer_init,
|
|
.instance_init = mss_timer_init,
|
|
|
|
+ .instance_finalize = mss_timer_finalize,
|
|
.class_init = mss_timer_class_init,
|
|
.class_init = mss_timer_class_init,
|
|
};
|
|
};
|
|
|
|
|