]> Git Repo - qemu.git/blobdiff - hw/ppc440.c
Merge remote branch 'kwolf/for-anthony' into staging
[qemu.git] / hw / ppc440.c
index 00d82e4bedf0233df8f8341a1ebb5a14e8c47eae..d12cf7181429746e476c441f55361f9290d9ee58 100644 (file)
@@ -12,6 +12,7 @@
  */
 
 #include "hw.h"
+#include "pc.h"
 #include "isa.h"
 #include "ppc.h"
 #include "ppc4xx.h"
@@ -34,23 +35,19 @@ static const unsigned int ppc440ep_sdram_bank_sizes[] = {
 };
 
 CPUState *ppc440ep_init(ram_addr_t *ram_size, PCIBus **pcip,
-                        const unsigned int pci_irq_nrs[4], int do_init)
+                        const unsigned int pci_irq_nrs[4], int do_init,
+                        const char *cpu_model)
 {
     target_phys_addr_t ram_bases[PPC440EP_SDRAM_NR_BANKS];
     target_phys_addr_t ram_sizes[PPC440EP_SDRAM_NR_BANKS];
     CPUState *env;
-    ppc4xx_mmio_t *mmio;
     qemu_irq *pic;
     qemu_irq *irqs;
     qemu_irq *pci_irqs;
 
-    env = cpu_ppc_init("440EP");
-    if (!env && kvm_enabled()) {
-        /* XXX Since qemu doesn't yet emulate 440, we just say it's a 405.
-         * Since KVM doesn't use qemu's CPU emulation it seems to be working
-         * OK. */
-        env = cpu_ppc_init("405");
-    }
+    if (cpu_model == NULL)
+        cpu_model = "405"; // XXX: should be 440EP
+    env = cpu_init(cpu_model);
     if (!env) {
         fprintf(stderr, "Unable to initialize CPU!\n");
         exit(1);
@@ -88,16 +85,16 @@ CPUState *ppc440ep_init(ram_addr_t *ram_size, PCIBus **pcip,
     if (!*pcip)
         printf("couldn't create PCI controller!\n");
 
-    isa_mmio_init(PPC440EP_PCI_IO, PPC440EP_PCI_IOLEN);
-
-    /* MMIO -- most "miscellaneous" devices live above 0xef600000. */
-    mmio = ppc4xx_mmio_init(env, 0xef600000);
-
-    if (serial_hds[0])
-        ppc405_serial_init(env, mmio, 0x300, pic[0], serial_hds[0]);
+    isa_mmio_init(PPC440EP_PCI_IO, PPC440EP_PCI_IOLEN, 1);
 
-    if (serial_hds[1])
-        ppc405_serial_init(env, mmio, 0x400, pic[1], serial_hds[1]);
+    if (serial_hds[0] != NULL) {
+        serial_mm_init(0xef600300, 0, pic[0], PPC_SERIAL_MM_BAUDBASE,
+                       serial_hds[0], 1, 1);
+    }
+    if (serial_hds[1] != NULL) {
+        serial_mm_init(0xef600400, 0, pic[1], PPC_SERIAL_MM_BAUDBASE,
+                       serial_hds[1], 1, 1);
+    }
 
     return env;
 }
This page took 0.025094 seconds and 4 git commands to generate.