static fdctrl_t *floppy_controller;
static RTCState *rtc_state;
static PITState *pit;
+static IOAPICState *ioapic;
static void ioport80_write(void *opaque, uint32_t addr, uint32_t data)
{
{
int intno;
-#ifdef TARGET_X86_64
intno = apic_get_interrupt(env);
if (intno >= 0) {
/* set irq request if a PIC irq is still pending */
pic_update_irq(isa_pic);
return intno;
}
-#endif
/* read the irq from the PIC */
intno = pic_read_irq(isa_pic);
return intno;
unsigned long bios_offset, vga_bios_offset;
int bios_size, isa_bios_size;
PCIBus *pci_bus;
-
+
linux_boot = (kernel_filename != NULL);
/* allocate RAM */
register_ioport_read(0x92, 1, 1, ioport92_read, NULL);
register_ioport_write(0x92, 1, 1, ioport92_write, NULL);
- if (pci_enabled)
+ if (pci_enabled) {
apic_init(cpu_single_env);
+ ioapic = ioapic_init();
+ }
isa_pic = pic_init(pic_irq_request, cpu_single_env);
pit = pit_init(0x40, 0);
+ if (pci_enabled) {
+ pic_set_alt_irq_func(isa_pic, ioapic_set_irq, ioapic);
+ }
for(i = 0; i < MAX_SERIAL_PORTS; i++) {
if (serial_hds[i]) {
if (audio_enabled) {
AUD_init();
-#ifdef USE_SB16
if (sb16_enabled)
SB16_init ();
-#endif
#ifdef CONFIG_ADLIB
if (adlib_enabled)
Adlib_init ();
#endif
-#ifdef USE_GUS
+#ifdef CONFIG_GUS
if (gus_enabled)
GUS_init ();
#endif
+ if (pci_enabled && es1370_enabled)
+ es1370_init (pci_bus);
}
floppy_controller = fdctrl_init(6, 2, 0, 0x3f0, fd_table);
cmos_init(ram_size, boot_device, bs_table);
+ if (pci_enabled && usb_enabled) {
+ USBPort *usb_root_ports[2];
+ USBDevice *usb_hub;
+ usb_uhci_init(pci_bus, usb_root_ports);
+#if 0
+ {
+ USBPort *usb_hub1_ports[4];
+ USBPort *usb_hub2_ports[2];
+ /* test: we simulate a USB hub */
+ usb_hub = usb_hub_init(usb_hub1_ports, 4);
+ usb_attach(usb_root_ports[0], usb_hub);
+
+ /* test: we simulate a USB hub */
+ usb_hub = usb_hub_init(usb_hub2_ports, 2);
+ usb_attach(usb_hub1_ports[0], usb_hub);
+ }
+#endif
+ /* simulated hub with the host USB devices connected to it */
+ usb_hub = usb_host_hub_init();
+ usb_attach(usb_root_ports[0], usb_hub);
+ }
+
/* must be done after all PCI devices are instanciated */
/* XXX: should be done in the Bochs BIOS */
if (pci_enabled) {