*/
#include "hw.h"
+#include "pc.h"
#include "isa.h"
#include "ppc.h"
#include "ppc4xx.h"
};
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);
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;
}