+fdctrl_t *pc98_fdctrl_init (DriveInfo **fds) +{ + ISADevice *dev; + fdctrl_t *fdctrl; + int i; + + dev = isa_create("pc98-fdc"); + qdev_prop_set_drive(&dev->qdev, "driveA", fds[0]); + qdev_prop_set_drive(&dev->qdev, "driveB", fds[1]); + if (qdev_init(&dev->qdev)< 0) + return NULL; + fdctrl =&(DO_UPCAST(fdctrl_isabus_t, busdev, dev)->state);
This code ....
+ fdctrl->if_mode = PC98_MODE_FDDEXC | PC98_MODE_PORTEXC; + fdctrl->dor |= FD_DOR_DMAEN; + + for (i = 0; i< MAX_FD; i++) { + fdrive_t *drv =&fdctrl->drives[i]; + if (drv->dinfo) { + fdctrl_media_changed(drv); + } + } + fdctrl->media_timer = qemu_new_timer(vm_clock, + pc98_fdctrl_media_timer, fdctrl); + qemu_mod_timer(fdctrl->media_timer, + qemu_get_clock(vm_clock) + get_ticks_per_sec() / 10);
... should be moved to ...
+static int pc98_fdc_init1(ISADevice *dev)
... this function. cheers, Gerd