static int ide_qdev_init(DeviceState *qdev)

{

    IDEDevice *dev = IDE_DEVICE(qdev);

    IDEDeviceClass *dc = IDE_DEVICE_GET_CLASS(dev);

    IDEBus *bus = DO_UPCAST(IDEBus, qbus, qdev->parent_bus);



    if (!dev->conf.bs) {

        error_report("No drive specified");

        goto err;

    }

    if (dev->unit == -1) {

        dev->unit = bus->master ? 1 : 0;

    }



    if (dev->unit >= bus->max_units) {

        error_report("Can't create IDE unit %d, bus supports only %d units",

                     dev->unit, bus->max_units);

        goto err;

    }



    switch (dev->unit) {

    case 0:

        if (bus->master) {

            error_report("IDE unit %d is in use", dev->unit);

            goto err;

        }

        bus->master = dev;

        break;

    case 1:

        if (bus->slave) {

            error_report("IDE unit %d is in use", dev->unit);

            goto err;

        }

        bus->slave = dev;

        break;

    default:

        error_report("Invalid IDE unit %d", dev->unit);

        goto err;

    }

    return dc->init(dev);



err:

    return -1;

}

static int ide_qdev_init(DeviceState *qdev)

{

    IDEDevice *dev = IDE_DEVICE(qdev);

    IDEDeviceClass *dc = IDE_DEVICE_GET_CLASS(dev);

    IDEBus *bus = DO_UPCAST(IDEBus, qbus, qdev->parent_bus);



    if (!dev->conf.bs) {

        error_report("No drive specified");

        goto err;

    }

    if (dev->unit == -1) {

        dev->unit = bus->master ? 1 : 0;

    }



    if (dev->unit >= bus->max_units) {

        error_report("Can't create IDE unit %d, bus supports only %d units",

                     dev->unit, bus->max_units);

        goto err;

    }



    switch (dev->unit) {

    case 0:

        if (bus->master) {

            error_report("IDE unit %d is in use", dev->unit);

            goto err;

        }

        bus->master = dev;

        break;

    case 1:

        if (bus->slave) {

            error_report("IDE unit %d is in use", dev->unit);

            goto err;

        }

        bus->slave = dev;

        break;

    default:

        error_report("Invalid IDE unit %d", dev->unit);

        goto err;

    }

    return dc->init(dev);



err:

    return -1;

}

static int FUNC_0(DeviceState *VAR_0)

{

    IDEDevice *dev = IDE_DEVICE(VAR_0);

    IDEDeviceClass *dc = IDE_DEVICE_GET_CLASS(dev);

    IDEBus *bus = DO_UPCAST(IDEBus, qbus, VAR_0->parent_bus);



    if (!dev->conf.bs) {

        error_report("No drive specified");

        goto err;

    }

    if (dev->unit == -1) {

        dev->unit = bus->master ? 1 : 0;

    }



    if (dev->unit >= bus->max_units) {

        error_report("Can't create IDE unit %d, bus supports only %d units",

                     dev->unit, bus->max_units);

        goto err;

    }



    switch (dev->unit) {

    case 0:

        if (bus->master) {

            error_report("IDE unit %d is in use", dev->unit);

            goto err;

        }

        bus->master = dev;

        break;

    case 1:

        if (bus->slave) {

            error_report("IDE unit %d is in use", dev->unit);

            goto err;

        }

        bus->slave = dev;

        break;

    default:

        error_report("Invalid IDE unit %d", dev->unit);

        goto err;

    }

    return dc->init(dev);



err:

    return -1;

}

static int FUNC_0(DeviceState *VAR_0)
{ IDEDevice *dev = IDE_DEVICE(VAR_0); IDEDeviceClass *dc = IDE_DEVICE_GET_CLASS(dev); IDEBus *bus = DO_UPCAST(IDEBus, qbus, VAR_0->parent_bus); if (!dev->conf.bs) { error_report("No drive specified"); goto err; } if (dev->unit == -1) { dev->unit = bus->master ? 1 : 0; } if (dev->unit >= bus->max_units) { error_report("Can't create IDE unit %d, bus supports only %d units",
dev->unit, bus->max_units); goto err; } switch (dev->unit) { case 0:
if (bus->master) { error_report("IDE unit %d is in use", dev->unit); goto err; } bus->master = dev; break; case 1:
if (bus->slave) { error_report("IDE unit %d is in use", dev->unit); goto err; } bus->slave = dev; break; default:
error_report("Invalid IDE unit %d", dev->unit); goto err; } return dc->init(dev); err:
return -1; }