Rearrange PCI host emulation code.
[qemu] / hw / sun4m.c
index b41ee25..f25fa3e 100644 (file)
@@ -26,6 +26,7 @@
 #define KERNEL_LOAD_ADDR     0x00004000
 #define CMDLINE_ADDR         0x007ff000
 #define INITRD_LOAD_ADDR     0x00800000
+#define PROM_SIZE_MAX        (256 * 1024)
 #define PROM_ADDR           0xffd00000
 #define PROM_FILENAMEB      "proll.bin"
 #define PROM_FILENAMEE      "proll.elf"
@@ -182,26 +183,14 @@ void pic_set_irq(int irq, int level)
     slavio_pic_set_irq(slavio_intctl, irq, level);
 }
 
-void pic_set_irq_cpu(int irq, int level, unsigned int cpu)
+void pic_set_irq_new(void *opaque, int irq, int level)
 {
-    slavio_pic_set_irq_cpu(slavio_intctl, irq, level, cpu);
+    pic_set_irq(irq, level);
 }
 
-static void *tcx;
-
-void vga_update_display()
-{
-    tcx_update_display(tcx);
-}
-
-void vga_invalidate_display()
-{
-    tcx_invalidate_display(tcx);
-}
-
-void vga_screen_dump(const char *filename)
+void pic_set_irq_cpu(int irq, int level, unsigned int cpu)
 {
-    tcx_screen_dump(tcx, filename);
+    slavio_pic_set_irq_cpu(slavio_intctl, irq, level, cpu);
 }
 
 static void *iommu;
@@ -256,7 +245,7 @@ static void sun4m_init(int ram_size, int vga_ram_size, int boot_device,
         slavio_intctl_set_cpu(slavio_intctl, i, envs[i]);
     }
 
-    tcx = tcx_init(ds, PHYS_JJ_TCX_FB, phys_ram_base + ram_size, ram_size, vram_size, graphic_width, graphic_height);
+    tcx_init(ds, PHYS_JJ_TCX_FB, phys_ram_base + ram_size, ram_size, vram_size, graphic_width, graphic_height);
     if (nd_table[0].vlan) {
         if (nd_table[0].model == NULL
             || strcmp(nd_table[0].model, "lance") == 0) {
@@ -280,9 +269,12 @@ static void sun4m_init(int ram_size, int vga_ram_size, int boot_device,
     slavio_misc = slavio_misc_init(PHYS_JJ_SLAVIO, PHYS_JJ_ME_IRQ);
 
     prom_offset = ram_size + vram_size;
+    cpu_register_physical_memory(PROM_ADDR, 
+                                 (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK, 
+                                 prom_offset | IO_MEM_ROM);
 
     snprintf(buf, sizeof(buf), "%s/%s", bios_dir, PROM_FILENAMEE);
-    ret = load_elf(buf, phys_ram_base + prom_offset);
+    ret = load_elf(buf, 0, NULL);
     if (ret < 0) {
        snprintf(buf, sizeof(buf), "%s/%s", bios_dir, PROM_FILENAMEB);
        ret = load_image(buf, phys_ram_base + prom_offset);
@@ -292,12 +284,10 @@ static void sun4m_init(int ram_size, int vga_ram_size, int boot_device,
                buf);
        exit(1);
     }
-    cpu_register_physical_memory(PROM_ADDR, (ret + TARGET_PAGE_SIZE) & TARGET_PAGE_MASK, 
-                                 prom_offset | IO_MEM_ROM);
 
     kernel_size = 0;
     if (linux_boot) {
-        kernel_size = load_elf(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR);
+        kernel_size = load_elf(kernel_filename, -0xf0000000, NULL);
         if (kernel_size < 0)
            kernel_size = load_aout(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR);
        if (kernel_size < 0)