Revision d537cf6c hw/ppc_prep.c

b/hw/ppc_prep.c
96 96
    return 0;
97 97
}
98 98

  
99
static void pic_irq_request (void *opaque, int level)
100
{
101
    ppc_set_irq(opaque, PPC_INTERRUPT_EXT, level);
102
}
103

  
104 99
/* PCI intack register */
105 100
/* Read-only register (?) */
106 101
static void _PPC_intack_write (void *opaque,
......
532 527
    uint32_t kernel_base, kernel_size, initrd_base, initrd_size;
533 528
    ppc_def_t *def;
534 529
    PCIBus *pci_bus;
530
    qemu_irq *i8259;
535 531

  
536 532
    sysctrl = qemu_mallocz(sizeof(sysctrl_t));
537 533
    if (sysctrl == NULL)
......
552 548
        cpu_abort(env, "Unable to find PowerPC CPU definition\n");
553 549
    }
554 550
    cpu_ppc_register(env, def);
551
    cpu_ppc_irq_init_cpu(env);
555 552
    /* Set time-base frequency to 100 Mhz */
556 553
    cpu_ppc_tb_init(env, 100UL * 1000UL * 1000UL);
557 554

  
......
602 599
    }
603 600

  
604 601
    isa_mem_base = 0xc0000000;
605
    pci_bus = pci_prep_init();
602
    i8259 = i8259_init(first_cpu->irq[PPC_INTERRUPT_EXT]);
603
    pci_bus = pci_prep_init(i8259);
606 604
    //    pci_bus = i440fx_init();
607 605
    /* Register 8 MB of ISA IO space (needed for non-contiguous map) */
608 606
    PPC_io_memory = cpu_register_io_memory(0, PPC_prep_io_read,
......
612 610
    /* init basic PC hardware */
613 611
    pci_vga_init(pci_bus, ds, phys_ram_base + ram_size, ram_size, 
614 612
                 vga_ram_size, 0, 0);
615
    rtc_init(0x70, 8);
616 613
    //    openpic = openpic_init(0x00000000, 0xF0000000, 1);
617
    isa_pic = pic_init(pic_irq_request, first_cpu);
618
    //    pit = pit_init(0x40, 0);
614
    //    pit = pit_init(0x40, i8259[0]);
615
    rtc_init(0x70, i8259[8]);
619 616

  
620
    serial_init(&pic_set_irq_new, isa_pic, 0x3f8, 4, serial_hds[0]);
617
    serial_init(0x3f8, i8259[4], serial_hds[0]);
621 618
    nb_nics1 = nb_nics;
622 619
    if (nb_nics1 > NE2000_NB_MAX)
623 620
        nb_nics1 = NE2000_NB_MAX;
624 621
    for(i = 0; i < nb_nics1; i++) {
625 622
        if (nd_table[0].model == NULL
626 623
            || strcmp(nd_table[0].model, "ne2k_isa") == 0) {
627
            isa_ne2000_init(ne2000_io[i], ne2000_irq[i], &nd_table[i]);
624
            isa_ne2000_init(ne2000_io[i], i8259[ne2000_irq[i]], &nd_table[i]);
628 625
        } else {
629 626
            fprintf(stderr, "qemu: Unsupported NIC: %s\n", nd_table[0].model);
630 627
            exit (1);
......
632 629
    }
633 630

  
634 631
    for(i = 0; i < 2; i++) {
635
        isa_ide_init(ide_iobase[i], ide_iobase2[i], ide_irq[i],
632
        isa_ide_init(ide_iobase[i], ide_iobase2[i], i8259[ide_irq[i]],
636 633
                     bs_table[2 * i], bs_table[2 * i + 1]);
637 634
    }
638
    kbd_init();
635
    i8042_init(i8259[1], i8259[12], 0x60);
639 636
    DMA_init(1);
640 637
    //    AUD_init();
641 638
    //    SB16_init();
642 639

  
643
    fdctrl_init(6, 2, 0, 0x3f0, fd_table);
640
    fdctrl_init(i8259[6], 2, 0, 0x3f0, fd_table);
644 641

  
645 642
    /* Register speaker port */
646 643
    register_ioport_read(0x61, 1, 1, speaker_ioport_read, NULL);
......
667 664
        usb_ohci_init_pci(pci_bus, 3, -1);
668 665
    }
669 666

  
670
    nvram = m48t59_init(8, 0, 0x0074, NVRAM_SIZE, 59);
667
    nvram = m48t59_init(i8259[8], 0, 0x0074, NVRAM_SIZE, 59);
671 668
    if (nvram == NULL)
672 669
        return;
673 670
    sysctrl->nvram = nvram;

Also available in: Unified diff