]> git.proxmox.com Git - qemu.git/blobdiff - hw/sun4u.c
qdev: convert es1370.
[qemu.git] / hw / sun4u.c
index 6dd4c0b9886bcdd46a5a6293bd94496606dee6ca..40f0c59354b68660fdab64ef1b56c92053ae5c02 100644 (file)
 //#define DEBUG_IRQ
 
 #ifdef DEBUG_IRQ
-#define DPRINTF(fmt, args...)                           \
-    do { printf("CPUIRQ: " fmt , ##args); } while (0)
+#define DPRINTF(fmt, ...)                                       \
+    do { printf("CPUIRQ: " fmt , ## __VA_ARGS__); } while (0)
 #else
-#define DPRINTF(fmt, args...)
+#define DPRINTF(fmt, ...)
 #endif
 
 #define KERNEL_LOAD_ADDR     0x00404000
@@ -320,9 +320,9 @@ pci_ebus_init(PCIBus *bus, int devfn)
     s->config[0x0D] = 0x0a; // latency_timer
     s->config[PCI_HEADER_TYPE] = PCI_HEADER_TYPE_NORMAL; // header_type
 
-    pci_register_io_region(s, 0, 0x1000000, PCI_ADDRESS_SPACE_MEM,
+    pci_register_bar(s, 0, 0x1000000, PCI_ADDRESS_SPACE_MEM,
                            ebus_mmio_mapfunc);
-    pci_register_io_region(s, 1, 0x800000,  PCI_ADDRESS_SPACE_MEM,
+    pci_register_bar(s, 1, 0x800000,  PCI_ADDRESS_SPACE_MEM,
                            ebus_mmio_mapfunc);
 }
 
@@ -333,7 +333,7 @@ static void sun4uv_init(ram_addr_t RAM_size,
                         const struct hwdef *hwdef)
 {
     CPUState *env;
-    char buf[1024];
+    char *filename;
     m48t59_t *nvram;
     int ret, linux_boot;
     unsigned int i;
@@ -392,17 +392,23 @@ static void sun4uv_init(ram_addr_t RAM_size,
 
     if (bios_name == NULL)
         bios_name = PROM_FILENAME;
-    snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name);
-    ret = load_elf(buf, hwdef->prom_addr - PROM_VADDR, NULL, NULL, NULL);
-    if (ret < 0) {
-        ret = load_image_targphys(buf, hwdef->prom_addr,
-                                  (PROM_SIZE_MAX + TARGET_PAGE_SIZE) &
-                                  TARGET_PAGE_MASK);
+    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
+    if (filename) {
+        ret = load_elf(filename, hwdef->prom_addr - PROM_VADDR,
+                       NULL, NULL, NULL);
         if (ret < 0) {
-            fprintf(stderr, "qemu: could not load prom '%s'\n",
-                    buf);
-            exit(1);
+            ret = load_image_targphys(filename, hwdef->prom_addr,
+                                      (PROM_SIZE_MAX + TARGET_PAGE_SIZE) &
+                                  TARGET_PAGE_MASK);
         }
+        qemu_free(filename);
+    } else {
+        ret = -1;
+    }
+    if (ret < 0) {
+        fprintf(stderr, "qemu: could not load prom '%s'\n",
+                bios_name);
+        exit(1);
     }
 
     kernel_size = 0;
@@ -473,7 +479,7 @@ static void sun4uv_init(ram_addr_t RAM_size,
     }
 
     for(i = 0; i < nb_nics; i++)
-        pci_nic_init(pci_bus, &nd_table[i], -1, "ne2k_pci");
+        pci_nic_init(&nd_table[i], "ne2k_pci", NULL);
 
     irq = qemu_allocate_irqs(cpu_set_irq, env, MAX_PILS);
     if (drive_get_max_bus(IF_IDE) >= MAX_IDE_BUS) {
@@ -589,23 +595,33 @@ static void niagara_init(ram_addr_t RAM_size,
                 kernel_cmdline, initrd_filename, cpu_model, &hwdefs[2]);
 }
 
-QEMUMachine sun4u_machine = {
+static QEMUMachine sun4u_machine = {
     .name = "sun4u",
     .desc = "Sun4u platform",
     .init = sun4u_init,
     .max_cpus = 1, // XXX for now
+    .is_default = 1,
 };
 
-QEMUMachine sun4v_machine = {
+static QEMUMachine sun4v_machine = {
     .name = "sun4v",
     .desc = "Sun4v platform",
     .init = sun4v_init,
     .max_cpus = 1, // XXX for now
 };
 
-QEMUMachine niagara_machine = {
+static QEMUMachine niagara_machine = {
     .name = "Niagara",
     .desc = "Sun4v platform, Niagara",
     .init = niagara_init,
     .max_cpus = 1, // XXX for now
 };
+
+static void sun4u_machine_init(void)
+{
+    qemu_register_machine(&sun4u_machine);
+    qemu_register_machine(&sun4v_machine);
+    qemu_register_machine(&niagara_machine);
+}
+
+machine_init(sun4u_machine_init);