aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-11-11 14:44:28 +0000
committerj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-11-11 14:44:28 +0000
commit0d913fdb62765554d613e2fe99b7812ed1c95122 (patch)
tree6dec3d5dd3cdd8c9b89537d0950b3c1d9a74fc15
parentbe98f1f82290118e176b704fd270f552c3d6a35a (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
-rw-r--r--hw/ppc_chrp.c7
-rw-r--r--hw/ppc_oldworld.c22
-rw-r--r--hw/ppc_prep.c9
3 files changed, 24 insertions, 14 deletions
diff --git a/hw/ppc_chrp.c b/hw/ppc_chrp.c
index a2d07c8fe5..8fb8e5d205 100644
--- a/hw/ppc_chrp.c
+++ b/hw/ppc_chrp.c
@@ -179,10 +179,11 @@ static void ppc_core99_init (int ram_size, int vga_ram_size,
/* We consider that NewWorld PowerMac never have any floppy drive
* For now, OHW cannot boot from the network.
*/
- for (i = 0; i < boot_device[i] != '\0'; i++) {
- ppc_boot_device = boot_device[i];
- if (ppc_boot_device >= 'c' && ppc_boot_device <= 'f')
+ for (i = 0; boot_device[i] != '\0'; i++) {
+ if (boot_device[i] >= 'c' && boot_device[i] <= 'f') {
+ ppc_boot_device = boot_device[i];
break;
+ }
}
if (ppc_boot_device == '\0') {
fprintf(stderr, "No valid boot device for Mac99 machine\n");
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);
diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c
index 60b695623b..1d2a85da1b 100644
--- a/hw/ppc_prep.c
+++ b/hw/ppc_prep.c
@@ -529,7 +529,7 @@ static void ppc_prep_init (int ram_size, int vga_ram_size,
const char *initrd_filename,
const char *cpu_model)
{
- CPUState *env, *envs[MAX_CPUS];
+ CPUState *env = NULL, *envs[MAX_CPUS];
char buf[1024];
nvram_t nvram;
m48t59_t *m48t59;
@@ -614,10 +614,11 @@ static void ppc_prep_init (int ram_size, int vga_ram_size,
initrd_size = 0;
ppc_boot_device = '\0';
/* For now, OHW cannot boot from the network. */
- for (i = 0; i < boot_device[i] != '\0'; i++) {
- ppc_boot_device = boot_device[i];
- if (ppc_boot_device >= 'a' && ppc_boot_device <= 'f')
+ for (i = 0; boot_device[i] != '\0'; i++) {
+ if (boot_device[i] >= 'a' && boot_device[i] <= 'f') {
+ ppc_boot_device = boot_device[i];
break;
+ }
}
if (ppc_boot_device == '\0') {
fprintf(stderr, "No valid boot device for Mac99 machine\n");