void ahci_init(AHCIState *s, DeviceState *qdev, AddressSpace *as, int ports)

{

    qemu_irq *irqs;

    int i;



    s->as = as;

    s->ports = ports;

    s->dev = g_malloc0(sizeof(AHCIDevice) * ports);

    ahci_reg_init(s);

    /* XXX BAR size should be 1k, but that breaks, so bump it to 4k for now */

    memory_region_init_io(&s->mem, OBJECT(qdev), &ahci_mem_ops, s,

                          "ahci", AHCI_MEM_BAR_SIZE);

    memory_region_init_io(&s->idp, OBJECT(qdev), &ahci_idp_ops, s,

                          "ahci-idp", 32);



    irqs = qemu_allocate_irqs(ahci_irq_set, s, s->ports);



    for (i = 0; i < s->ports; i++) {

        AHCIDevice *ad = &s->dev[i];



        ide_bus_new(&ad->port, sizeof(ad->port), qdev, i, 1);

        ide_init2(&ad->port, irqs[i]);



        ad->hba = s;

        ad->port_no = i;

        ad->port.dma = &ad->dma;

        ad->port.dma->ops = &ahci_dma_ops;

    }

}

void ahci_init(AHCIState *s, DeviceState *qdev, AddressSpace *as, int ports)

{

    qemu_irq *irqs;

    int i;



    s->as = as;

    s->ports = ports;

    s->dev = g_malloc0(sizeof(AHCIDevice) * ports);

    ahci_reg_init(s);

    

    memory_region_init_io(&s->mem, OBJECT(qdev), &ahci_mem_ops, s,

                          "ahci", AHCI_MEM_BAR_SIZE);

    memory_region_init_io(&s->idp, OBJECT(qdev), &ahci_idp_ops, s,

                          "ahci-idp", 32);



    irqs = qemu_allocate_irqs(ahci_irq_set, s, s->ports);



    for (i = 0; i < s->ports; i++) {

        AHCIDevice *ad = &s->dev[i];



        ide_bus_new(&ad->port, sizeof(ad->port), qdev, i, 1);

        ide_init2(&ad->port, irqs[i]);



        ad->hba = s;

        ad->port_no = i;

        ad->port.dma = &ad->dma;

        ad->port.dma->ops = &ahci_dma_ops;

    }

}

    s->dev = g_malloc0(sizeof(AHCIDevice) * ports);
void FUNC_0(AHCIState *VAR_0, DeviceState *VAR_1, AddressSpace *VAR_2, int VAR_3)

{

    qemu_irq *irqs;

    int VAR_4;



    VAR_0->VAR_2 = VAR_2;

    VAR_0->VAR_3 = VAR_3;

    VAR_0->dev = g_malloc0(sizeof(AHCIDevice) * VAR_3);

    ahci_reg_init(VAR_0);

    

    memory_region_init_io(&VAR_0->mem, OBJECT(VAR_1), &ahci_mem_ops, VAR_0,

                          "ahci", AHCI_MEM_BAR_SIZE);

    memory_region_init_io(&VAR_0->idp, OBJECT(VAR_1), &ahci_idp_ops, VAR_0,

                          "ahci-idp", 32);



    irqs = qemu_allocate_irqs(ahci_irq_set, VAR_0, VAR_0->VAR_3);



    for (VAR_4 = 0; VAR_4 < VAR_0->VAR_3; VAR_4++) {

        AHCIDevice *ad = &VAR_0->dev[VAR_4];



        ide_bus_new(&ad->port, sizeof(ad->port), VAR_1, VAR_4, 1);

        ide_init2(&ad->port, irqs[VAR_4]);



        ad->hba = VAR_0;

        ad->port_no = VAR_4;

        ad->port.dma = &ad->dma;

        ad->port.dma->ops = &ahci_dma_ops;

    }

}

void FUNC_0(AHCIState *VAR_0, DeviceState *VAR_1, AddressSpace *VAR_2, int VAR_3)
{ qemu_irq *irqs; int VAR_4; VAR_0->VAR_2 = VAR_2; VAR_0->VAR_3 = VAR_3; VAR_0->dev = g_malloc0(sizeof(AHCIDevice) * VAR_3); ahci_reg_init(VAR_0); memory_region_init_io(&VAR_0->mem, OBJECT(VAR_1), &ahci_mem_ops, VAR_0,
"ahci", AHCI_MEM_BAR_SIZE); memory_region_init_io(&VAR_0->idp, OBJECT(VAR_1), &ahci_idp_ops, VAR_0,
"ahci-idp", 32); irqs = qemu_allocate_irqs(ahci_irq_set, VAR_0, VAR_0->VAR_3); for (VAR_4 = 0; VAR_4 < VAR_0->VAR_3; VAR_4++) { AHCIDevice *ad = &VAR_0->dev[VAR_4]; ide_bus_new(&ad->port, sizeof(ad->port), VAR_1, VAR_4, 1); ide_init2(&ad->port, irqs[VAR_4]); ad->hba = VAR_0; ad->port_no = VAR_4; ad->port.dma = &ad->dma; ad->port.dma->ops = &ahci_dma_ops; } }