Commit 0d913fdb62765554d613e2fe99b7812ed1c95122

Authored by j_mayer
1 parent be98f1f8

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
hw/ppc_chrp.c
... ... @@ -179,10 +179,11 @@ static void ppc_core99_init (int ram_size, int vga_ram_size,
179 179 /* We consider that NewWorld PowerMac never have any floppy drive
180 180 * For now, OHW cannot boot from the network.
181 181 */
182   - for (i = 0; i < boot_device[i] != '\0'; i++) {
183   - ppc_boot_device = boot_device[i];
184   - if (ppc_boot_device >= 'c' && ppc_boot_device <= 'f')
  182 + for (i = 0; boot_device[i] != '\0'; i++) {
  183 + if (boot_device[i] >= 'c' && boot_device[i] <= 'f') {
  184 + ppc_boot_device = boot_device[i];
185 185 break;
  186 + }
186 187 }
187 188 if (ppc_boot_device == '\0') {
188 189 fprintf(stderr, "No valid boot device for Mac99 machine\n");
... ...
hw/ppc_oldworld.c
... ... @@ -113,6 +113,7 @@ static void ppc_heathrow_init (int ram_size, int vga_ram_size,
113 113 int vga_bios_size, bios_size;
114 114 qemu_irq *dummy_irq;
115 115 int pic_mem_index, nvram_mem_index, dbdma_mem_index, cuda_mem_index;
  116 + int ide_mem_index[2];
116 117 int ppc_boot_device;
117 118  
118 119 linux_boot = (kernel_filename != NULL);
... ... @@ -213,18 +214,21 @@ static void ppc_heathrow_init (int ram_size, int vga_ram_size,
213 214 initrd_base = 0;
214 215 initrd_size = 0;
215 216 ppc_boot_device = '\0';
216   - for (i = 0; i < boot_device[i] != '\0'; i++) {
217   - ppc_boot_device = boot_device[i];
  217 + for (i = 0; boot_device[i] != '\0'; i++) {
218 218 /* TOFIX: for now, the second IDE channel is not properly
219   - * emulated. The Mac floppy disk are not emulated.
  219 + * used by OHW. The Mac floppy disk are not emulated.
220 220 * For now, OHW cannot boot from the network.
221 221 */
222 222 #if 0
223   - if (ppc_boot_device >= 'a' && ppc_boot_device <= 'f')
  223 + if (boot_device[i] >= 'a' && boot_device[i] <= 'f') {
  224 + ppc_boot_device = boot_device[i];
224 225 break;
  226 + }
225 227 #else
226   - if (ppc_boot_device >= 'c' && ppc_boot_device <= 'd')
  228 + if (boot_device[i] >= 'c' && boot_device[i] <= 'd') {
  229 + ppc_boot_device = boot_device[i];
227 230 break;
  231 + }
228 232 #endif
229 233 }
230 234 if (ppc_boot_device == '\0') {
... ... @@ -278,8 +282,12 @@ static void ppc_heathrow_init (int ram_size, int vga_ram_size,
278 282 nd_table[i].model = "ne2k_pci";
279 283 pci_nic_init(pci_bus, &nd_table[i], -1);
280 284 }
281   -
  285 +
  286 + /* First IDE channel is a CMD646 on the PCI bus */
282 287 pci_cmd646_ide_init(pci_bus, &bs_table[0], 0);
  288 + /* Second IDE channel is a MAC IDE on the MacIO bus */
  289 + ide_mem_index[0] = -1;
  290 + ide_mem_index[1] = pmac_ide_init(&bs_table[2], pic[0x0D]);
283 291  
284 292 /* cuda also initialize ADB */
285 293 cuda_init(&cuda_mem_index, pic[0x12]);
... ... @@ -293,7 +301,7 @@ static void ppc_heathrow_init (int ram_size, int vga_ram_size,
293 301 dbdma_init(&dbdma_mem_index);
294 302  
295 303 macio_init(pci_bus, 0x0017, 1, pic_mem_index, dbdma_mem_index,
296   - cuda_mem_index, nvr, 0, NULL);
  304 + cuda_mem_index, nvr, 2, ide_mem_index);
297 305  
298 306 if (usb_enabled) {
299 307 usb_ohci_init_pci(pci_bus, 3, -1);
... ...
hw/ppc_prep.c
... ... @@ -529,7 +529,7 @@ static void ppc_prep_init (int ram_size, int vga_ram_size,
529 529 const char *initrd_filename,
530 530 const char *cpu_model)
531 531 {
532   - CPUState *env, *envs[MAX_CPUS];
  532 + CPUState *env = NULL, *envs[MAX_CPUS];
533 533 char buf[1024];
534 534 nvram_t nvram;
535 535 m48t59_t *m48t59;
... ... @@ -614,10 +614,11 @@ static void ppc_prep_init (int ram_size, int vga_ram_size,
614 614 initrd_size = 0;
615 615 ppc_boot_device = '\0';
616 616 /* For now, OHW cannot boot from the network. */
617   - for (i = 0; i < boot_device[i] != '\0'; i++) {
618   - ppc_boot_device = boot_device[i];
619   - if (ppc_boot_device >= 'a' && ppc_boot_device <= 'f')
  617 + for (i = 0; boot_device[i] != '\0'; i++) {
  618 + if (boot_device[i] >= 'a' && boot_device[i] <= 'f') {
  619 + ppc_boot_device = boot_device[i];
620 620 break;
  621 + }
621 622 }
622 623 if (ppc_boot_device == '\0') {
623 624 fprintf(stderr, "No valid boot device for Mac99 machine\n");
... ...