Revision e4bcb14c hw/ppc_chrp.c
b/hw/ppc_chrp.c | ||
---|---|---|
32 | 32 |
#include "sysemu.h" |
33 | 33 |
#include "boards.h" |
34 | 34 |
|
35 |
#define MAX_IDE_BUS 2 |
|
36 |
|
|
35 | 37 |
/* UniN device */ |
36 | 38 |
static void unin_writel (void *opaque, target_phys_addr_t addr, uint32_t value) |
37 | 39 |
{ |
... | ... | |
81 | 83 |
int pic_mem_index, dbdma_mem_index, cuda_mem_index; |
82 | 84 |
int ide_mem_index[2]; |
83 | 85 |
int ppc_boot_device; |
86 |
int index; |
|
87 |
BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; |
|
84 | 88 |
|
85 | 89 |
linux_boot = (kernel_filename != NULL); |
86 | 90 |
|
... | ... | |
266 | 270 |
nd_table[i].model = "ne2k_pci"; |
267 | 271 |
pci_nic_init(pci_bus, &nd_table[i], -1); |
268 | 272 |
} |
273 |
if (drive_get_max_bus(IF_IDE) >= MAX_IDE_BUS) { |
|
274 |
fprintf(stderr, "qemu: too many IDE bus\n"); |
|
275 |
exit(1); |
|
276 |
} |
|
277 |
for(i = 0; i < MAX_IDE_BUS * MAX_IDE_DEVS; i++) { |
|
278 |
index = drive_get_index(IF_IDE, i / MAX_IDE_DEVS, i % MAX_IDE_DEVS); |
|
279 |
if (index != -1) |
|
280 |
hd[i] = drives_table[index].bdrv; |
|
281 |
else |
|
282 |
hd[i] = NULL; |
|
283 |
} |
|
269 | 284 |
#if 1 |
270 |
ide_mem_index[0] = pmac_ide_init(&bs_table[0], pic[0x13]);
|
|
271 |
ide_mem_index[1] = pmac_ide_init(&bs_table[2], pic[0x14]);
|
|
285 |
ide_mem_index[0] = pmac_ide_init(&hd[0], pic[0x13]);
|
|
286 |
ide_mem_index[1] = pmac_ide_init(&hd[2], pic[0x14]);
|
|
272 | 287 |
#else |
273 |
pci_cmd646_ide_init(pci_bus, &bs_table[0], 0);
|
|
288 |
pci_cmd646_ide_init(pci_bus, &hd[0], 0);
|
|
274 | 289 |
#endif |
275 | 290 |
/* cuda also initialize ADB */ |
276 | 291 |
cuda_init(&cuda_mem_index, pic[0x19]); |
Also available in: Unified diff