diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-11 14:44:28 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-11 14:44:28 +0000 |
commit | 0d913fdb62765554d613e2fe99b7812ed1c95122 (patch) | |
tree | 6dec3d5dd3cdd8c9b89537d0950b3c1d9a74fc15 /hw/ppc_oldworld.c | |
parent | be98f1f82290118e176b704fd270f552c3d6a35a (diff) |
Fix PowerPC boot device selection.
Fix gcc warning in PowerPC PreP machine init routine.
Add second IDE channel to Heathrow Mac machine (still not handled by OHW).
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3586 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/ppc_oldworld.c')
-rw-r--r-- | hw/ppc_oldworld.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c index b6ce58bc04..ef638767fb 100644 --- a/hw/ppc_oldworld.c +++ b/hw/ppc_oldworld.c @@ -113,6 +113,7 @@ static void ppc_heathrow_init (int ram_size, int vga_ram_size, int vga_bios_size, bios_size; qemu_irq *dummy_irq; int pic_mem_index, nvram_mem_index, dbdma_mem_index, cuda_mem_index; + int ide_mem_index[2]; int ppc_boot_device; linux_boot = (kernel_filename != NULL); @@ -213,18 +214,21 @@ static void ppc_heathrow_init (int ram_size, int vga_ram_size, initrd_base = 0; initrd_size = 0; ppc_boot_device = '\0'; - for (i = 0; i < boot_device[i] != '\0'; i++) { - ppc_boot_device = boot_device[i]; + for (i = 0; boot_device[i] != '\0'; i++) { /* TOFIX: for now, the second IDE channel is not properly - * emulated. The Mac floppy disk are not emulated. + * used by OHW. The Mac floppy disk are not emulated. * For now, OHW cannot boot from the network. */ #if 0 - if (ppc_boot_device >= 'a' && ppc_boot_device <= 'f') + if (boot_device[i] >= 'a' && boot_device[i] <= 'f') { + ppc_boot_device = boot_device[i]; break; + } #else - if (ppc_boot_device >= 'c' && ppc_boot_device <= 'd') + if (boot_device[i] >= 'c' && boot_device[i] <= 'd') { + ppc_boot_device = boot_device[i]; break; + } #endif } if (ppc_boot_device == '\0') { @@ -278,8 +282,12 @@ static void ppc_heathrow_init (int ram_size, int vga_ram_size, nd_table[i].model = "ne2k_pci"; pci_nic_init(pci_bus, &nd_table[i], -1); } - + + /* First IDE channel is a CMD646 on the PCI bus */ pci_cmd646_ide_init(pci_bus, &bs_table[0], 0); + /* Second IDE channel is a MAC IDE on the MacIO bus */ + ide_mem_index[0] = -1; + ide_mem_index[1] = pmac_ide_init(&bs_table[2], pic[0x0D]); /* cuda also initialize ADB */ cuda_init(&cuda_mem_index, pic[0x12]); @@ -293,7 +301,7 @@ static void ppc_heathrow_init (int ram_size, int vga_ram_size, dbdma_init(&dbdma_mem_index); macio_init(pci_bus, 0x0017, 1, pic_mem_index, dbdma_mem_index, - cuda_mem_index, nvr, 0, NULL); + cuda_mem_index, nvr, 2, ide_mem_index); if (usb_enabled) { usb_ohci_init_pci(pci_bus, 3, -1); |