Revision e4bcb14c hw/sun4m.c
b/hw/sun4m.c | ||
---|---|---|
338 | 338 |
unsigned long prom_offset, kernel_size; |
339 | 339 |
int ret; |
340 | 340 |
char buf[1024]; |
341 |
BlockDriverState *fd[MAX_FD]; |
|
342 |
int index; |
|
341 | 343 |
|
342 | 344 |
/* init CPUs */ |
343 | 345 |
if (!cpu_model) |
... | ... | |
440 | 442 |
slavio_serial_init(hwdef->serial_base, slavio_irq[hwdef->ser_irq], |
441 | 443 |
serial_hds[1], serial_hds[0]); |
442 | 444 |
|
443 |
if (hwdef->fd_base != (target_phys_addr_t)-1) |
|
444 |
sun4m_fdctrl_init(slavio_irq[hwdef->fd_irq], hwdef->fd_base, fd_table); |
|
445 |
if (hwdef->fd_base != (target_phys_addr_t)-1) { |
|
446 |
/* there is zero or one floppy drive */ |
|
447 |
fd[1] = fd[0] = NULL; |
|
448 |
index = drive_get_index(IF_FLOPPY, 0, 0); |
|
449 |
if (index != -1) |
|
450 |
fd[0] = drives_table[index].bdrv; |
|
445 | 451 |
|
446 |
main_esp = esp_init(bs_table, hwdef->esp_base, espdma, *espdma_irq, |
|
452 |
sun4m_fdctrl_init(slavio_irq[hwdef->fd_irq], hwdef->fd_base, fd); |
|
453 |
} |
|
454 |
|
|
455 |
if (drive_get_max_bus(IF_SCSI) > 0) { |
|
456 |
fprintf(stderr, "qemu: too many SCSI bus\n"); |
|
457 |
exit(1); |
|
458 |
} |
|
459 |
|
|
460 |
main_esp = esp_init(hwdef->esp_base, espdma, *espdma_irq, |
|
447 | 461 |
esp_reset); |
448 | 462 |
|
449 |
for (i = 0; i < MAX_DISKS; i++) { |
|
450 |
if (bs_table[i]) { |
|
451 |
esp_scsi_attach(main_esp, bs_table[i], i); |
|
452 |
} |
|
463 |
for (i = 0; i < ESP_MAX_DEVS; i++) { |
|
464 |
index = drive_get_index(IF_SCSI, 0, i); |
|
465 |
if (index == -1) |
|
466 |
continue; |
|
467 |
esp_scsi_attach(main_esp, drives_table[index].bdrv, i); |
|
453 | 468 |
} |
454 | 469 |
|
455 | 470 |
slavio_misc = slavio_misc_init(hwdef->slavio_base, hwdef->power_base, |
Also available in: Unified diff