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