Break up vl.h.
[qemu] / hw / mips_pica61.c
index 5bb3405..6e9f345 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * QEMU Malta board support
+ * QEMU Acer Pica Machine support
  *
  * Copyright (c) 2007 HervĂ© Poussineau
  *
  * THE SOFTWARE.
  */
 
-#include "vl.h"
+#include "hw.h"
+#include "mips.h"
+#include "isa.h"
+#include "pc.h"
+#include "fdc.h"
+#include "sysemu.h"
+#include "boards.h"
 
 #ifdef TARGET_WORDS_BIGENDIAN
 #define BIOS_FILENAME "mips_bios.bin"
@@ -51,11 +57,10 @@ static void main_cpu_reset(void *opaque)
 {
     CPUState *env = opaque;
     cpu_reset(env);
-    cpu_mips_register(env, NULL);
 }
 
 static
-void mips_pica61_init (int ram_size, int vga_ram_size, int boot_device,
+void mips_pica61_init (int ram_size, int vga_ram_size, const char *boot_device,
                     DisplayState *ds, const char **fd_filename, int snapshot,
                     const char *kernel_filename, const char *kernel_cmdline,
                     const char *initrd_filename, const char *cpu_model)
@@ -65,7 +70,6 @@ void mips_pica61_init (int ram_size, int vga_ram_size, int boot_device,
     int bios_size;
     CPUState *env;
     int i;
-    mips_def_t *def;
     int available_ram;
     qemu_irq *i8259;
 
@@ -78,10 +82,11 @@ void mips_pica61_init (int ram_size, int vga_ram_size, int boot_device,
         cpu_model = "24Kf";
 #endif
     }
-    if (mips_find_by_name(cpu_model, &def) != 0)
-        def = NULL;
-    env = cpu_init();
-    cpu_mips_register(env, def);
+    env = cpu_init(cpu_model);
+    if (!env) {
+        fprintf(stderr, "Unable to find CPU definition\n");
+        exit(1);
+    }
     register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
     qemu_register_reset(main_cpu_reset, env);
 
@@ -94,7 +99,9 @@ void mips_pica61_init (int ram_size, int vga_ram_size, int boot_device,
 
     /* load a BIOS image */
     bios_offset = ram_size + vga_ram_size;
-    snprintf(buf, sizeof(buf), "%s/%s", bios_dir, BIOS_FILENAME);
+    if (bios_name == NULL)
+        bios_name = BIOS_FILENAME;
+    snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name);
     bios_size = load_image(buf, phys_ram_base + bios_offset);
     if ((bios_size <= 0) || (bios_size > BIOS_SIZE)) {
         /* fatal */
@@ -151,11 +158,8 @@ void mips_pica61_init (int ram_size, int vga_ram_size, int boot_device,
             serial_mm_init(serial_base[i], 0, i8259[serial_irq[i]], serial_hds[i], 1);
         }
     }
-    for (i = 0; i < MAX_PARALLEL_PORTS; i++) {
-        if (parallel_hds[i]) {
-            /* FIXME: memory mapped! parallel_init(0x80008000, i8259[17], parallel_hds[i]); */
-        }
-    }
+    /* Parallel port */
+    if (parallel_hds[0]) parallel_mm_init(0x80008000, 0, i8259[1], parallel_hds[0]);
 
     /* Sound card */
     /* FIXME: missing Jazz sound, IRQ 18 */
@@ -171,6 +175,9 @@ void mips_pica61_init (int ram_size, int vga_ram_size, int boot_device,
      * but let's do with what Qemu currenly emulates... */
     isa_vga_mm_init(ds, phys_ram_base + ram_size, ram_size, vga_ram_size,
                     0x40000000, 0x60000000, 0);
+
+    /* LED indicator */
+    jazz_led_init(ds, 0x8000f000);
 }
 
 QEMUMachine mips_pica61_machine = {