Revision e4bcb14c hw/mips_pica61.c

b/hw/mips_pica61.c
44 44

  
45 45
#define VIRT_TO_PHYS_ADDEND (-((int64_t)(int32_t)0x80000000))
46 46

  
47
#define MAX_IDE_BUS 2
48
#define MAX_FD 2
49

  
47 50
static const int ide_iobase[2] = { 0x1f0, 0x170 };
48 51
static const int ide_iobase2[2] = { 0x3f6, 0x376 };
49 52
static const int ide_irq[2] = { 14, 15 };
......
72 75
    int i;
73 76
    int available_ram;
74 77
    qemu_irq *i8259;
78
    int index;
79
    BlockDriverState *fd[MAX_FD];
75 80

  
76 81
    /* init CPUs */
77 82
    if (cpu_model == NULL) {
......
141 146
    i8042_mm_init(i8259[6], i8259[7], 0x80005060, 0);
142 147

  
143 148
    /* IDE controller */
144
    for(i = 0; i < 2; i++)
149

  
150
    if (drive_get_max_bus(IF_IDE) >= MAX_IDE_BUS) {
151
        fprintf(stderr, "qemu: too many IDE bus\n");
152
        exit(1);
153
    }
154

  
155
    for(i = 0; i < MAX_IDE_BUS; i++) {
156
        int hd0, hd1;
157
        hd0 = drive_get_index(IF_IDE, i, 0);
158
        hd1 = drive_get_index(IF_IDE, i, 1);
145 159
        isa_ide_init(ide_iobase[i], ide_iobase2[i], i8259[ide_irq[i]],
146
                     bs_table[2 * i], bs_table[2 * i + 1]);
160
                     hd0 == -1 ? NULL : drives_table[hd0].bdrv,
161
                     hd1 == -1 ? NULL : drives_table[hd1].bdrv);
162
    }
147 163

  
148 164
    /* Network controller */
149 165
    /* FIXME: missing NS SONIC DP83932 */
......
152 168
    /* FIXME: missing NCR 53C94 */
153 169

  
154 170
    /* ISA devices (floppy, serial, parallel) */
155
    fdctrl_init(i8259[1], 1, 1, 0x80003000, fd_table);
171

  
172
    for (i = 0; i < MAX_FD; i++) {
173
        index = drive_get_index(IF_FLOPPY, 0, i);
174
        if (index == -1)
175
            continue;
176
        fd[i] = drives_table[index].bdrv;
177
    }
178
    fdctrl_init(i8259[1], 1, 1, 0x80003000, fd);
156 179
    for(i = 0; i < MAX_SERIAL_PORTS; i++) {
157 180
        if (serial_hds[i]) {
158 181
            serial_mm_init(serial_base[i], 0, i8259[serial_irq[i]], serial_hds[i], 1);

Also available in: Unified diff