#include "sysbus.h"
#include "boards.h"
#include "arm-misc.h"
-#include "sysemu.h"
+#include "net.h"
static struct arm_boot_info syborg_binfo;
}
/* RAM at address zero. */
- ram_addr = qemu_ram_alloc(ram_size);
+ ram_addr = qemu_ram_alloc(NULL, "syborg.ram", ram_size);
cpu_register_physical_memory(0, ram_size, ram_addr | IO_MEM_RAM);
cpu_pic = arm_pic_init_cpu(env);
dev = sysbus_create_simple("syborg,interrupt", 0xC0000000,
cpu_pic[ARM_PIC_CPU_IRQ]);
for (i = 0; i < 64; i++) {
- pic[i] = qdev_get_irq_sink(dev, i);
+ pic[i] = qdev_get_gpio_in(dev, i);
}
sysbus_create_simple("syborg,rtc", 0xC0001000, NULL);
dev = qdev_create(NULL, "syborg,timer");
- qdev_set_prop_int(dev, "frequency", 1000000);
- qdev_init(dev);
+ qdev_prop_set_uint32(dev, "frequency", 1000000);
+ qdev_init_nofail(dev);
sysbus_mmio_map(sysbus_from_qdev(dev), 0, 0xC0002000);
sysbus_connect_irq(sysbus_from_qdev(dev), 0, pic[1]);
sysbus_create_simple("syborg,serial", 0xC0008000, pic[7]);
sysbus_create_simple("syborg,serial", 0xC0009000, pic[8]);
+ if (nd_table[0].vlan || nd_table[0].netdev) {
+ DeviceState *dev;
+ SysBusDevice *s;
+
+ qemu_check_nic_model(&nd_table[0], "virtio");
+ dev = qdev_create(NULL, "syborg,virtio-net");
+ qdev_set_nic_properties(dev, &nd_table[0]);
+ qdev_init_nofail(dev);
+ s = sysbus_from_qdev(dev);
+ sysbus_mmio_map(s, 0, 0xc000c000);
+ sysbus_connect_irq(s, 0, pic[9]);
+ }
+
syborg_binfo.ram_size = ram_size;
syborg_binfo.kernel_filename = kernel_filename;
syborg_binfo.kernel_cmdline = kernel_cmdline;
arm_load_kernel(env, &syborg_binfo);
}
-QEMUMachine syborg_machine = {
+static QEMUMachine syborg_machine = {
.name = "syborg",
.desc = "Syborg (Symbian Virtual Platform)",
.init = syborg_init,
};
+
+static void syborg_machine_init(void)
+{
+ qemu_register_machine(&syborg_machine);
+}
+
+machine_init(syborg_machine_init);