Revision e4bcb14c hw/sun4u.c

b/hw/sun4u.c
43 43
#define VGA_BASE             (APB_MEM_BASE + 0x400000ULL)
44 44
#define PROM_FILENAME        "openbios-sparc64"
45 45
#define NVRAM_SIZE           0x2000
46
#define MAX_IDE_BUS          2
46 47

  
47 48
/* TSC handling */
48 49

  
......
240 241
    PCIBus *pci_bus;
241 242
    QEMUBH *bh;
242 243
    qemu_irq *irq;
244
    int index;
245
    BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
246
    BlockDriverState *fd[MAX_FD];
243 247

  
244 248
    linux_boot = (kernel_filename != NULL);
245 249

  
......
342 346
    }
343 347

  
344 348
    irq = qemu_allocate_irqs(dummy_cpu_set_irq, NULL, 32);
345
    // XXX pci_cmd646_ide_init(pci_bus, bs_table, 1);
346
    pci_piix3_ide_init(pci_bus, bs_table, -1, irq);
349
    if (drive_get_max_bus(IF_IDE) >= MAX_IDE_BUS) {
350
        fprintf(stderr, "qemu: too many IDE bus\n");
351
        exit(1);
352
    }
353
    for(i = 0; i < MAX_IDE_BUS * MAX_IDE_DEVS; i++) {
354
        index = drive_get_index(IF_IDE, i / MAX_IDE_DEVS, i % MAX_IDE_DEVS);
355
       if (index != -1)
356
           hd[i] = drives_table[index].bdrv;
357
       else
358
           hd[i] = NULL;
359
    }
360

  
361
    // XXX pci_cmd646_ide_init(pci_bus, hd, 1);
362
    pci_piix3_ide_init(pci_bus, hd, -1, irq);
347 363
    /* FIXME: wire up interrupts.  */
348 364
    i8042_init(NULL/*1*/, NULL/*12*/, 0x60);
349
    floppy_controller = fdctrl_init(NULL/*6*/, 2, 0, 0x3f0, fd_table);
365
    for(i = 0; i < MAX_FD; i++) {
366
        index = drive_get_index(IF_FLOPPY, 0, i);
367
       if (index != -1)
368
           fd[i] = drives_table[index].bdrv;
369
       else
370
           fd[i] = NULL;
371
    }
372
    floppy_controller = fdctrl_init(NULL/*6*/, 2, 0, 0x3f0, fd);
350 373
    nvram = m48t59_init(NULL/*8*/, 0, 0x0074, NVRAM_SIZE, 59);
351 374
    sun4u_NVRAM_set_params(nvram, NVRAM_SIZE, "Sun4u", ram_size, boot_devices,
352 375
                         KERNEL_LOAD_ADDR, kernel_size,

Also available in: Unified diff