vmstate: Add pre/post_save() hooks
[qemu] / hw / wdt_i6300esb.c
index 815dacc..9126e72 100644 (file)
@@ -130,7 +130,7 @@ static void i6300esb_restart_timer(I6300State *d, int stage)
         timeout <<= 5;
 
     /* Get the timeout in units of ticks_per_sec. */
-    timeout = ticks_per_sec * timeout / 33000000;
+    timeout = get_ticks_per_sec() * timeout / 33000000;
 
     i6300esb_debug("stage %d, timeout %" PRIi64 "\n", d->stage, timeout);
 
@@ -198,7 +198,7 @@ static void i6300esb_timer_expired(void *vp)
 static void i6300esb_config_write(PCIDevice *dev, uint32_t addr,
                                   uint32_t data, int len)
 {
-    I6300State *d = container_of(dev, I6300State, dev);
+    I6300State *d = DO_UPCAST(I6300State, dev, dev);
     int old;
 
     i6300esb_debug("addr = %x, data = %x, len = %d\n", addr, data, len);
@@ -226,7 +226,7 @@ static void i6300esb_config_write(PCIDevice *dev, uint32_t addr,
 
 static uint32_t i6300esb_config_read(PCIDevice *dev, uint32_t addr, int len)
 {
-    I6300State *d = container_of(dev, I6300State, dev);
+    I6300State *d = DO_UPCAST(I6300State, dev, dev);
     uint32_t data;
 
     i6300esb_debug ("addr = %x, len = %d\n", addr, len);
@@ -360,7 +360,7 @@ static void i6300esb_map(PCIDevice *dev, int region_num,
         i6300esb_mem_writew,
         i6300esb_mem_writel,
     };
-    I6300State *d = container_of(dev, I6300State, dev);
+    I6300State *d = DO_UPCAST(I6300State, dev, dev);
     int io_mem;
 
     i6300esb_debug("addr = %x, size = %x, type = %d\n", addr, size, type);
@@ -413,9 +413,9 @@ static int i6300esb_load(QEMUFile *f, void *vp, int version)
     return 0;
 }
 
-static void i6300esb_init(PCIDevice *dev)
+static int i6300esb_init(PCIDevice *dev)
 {
-    I6300State *d = container_of(dev, I6300State, dev);
+    I6300State *d = DO_UPCAST(I6300State, dev, dev);
     uint8_t *pci_conf;
 
     d->reboot_enabled = 1;
@@ -442,6 +442,8 @@ static void i6300esb_init(PCIDevice *dev)
 
     register_savevm("i6300esb_wdt", -1, sizeof(I6300State),
                      i6300esb_save, i6300esb_load, d);
+
+    return 0;
 }
 
 static WatchdogTimerModel model = {