aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/arm/collie.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/hw/arm/collie.c b/hw/arm/collie.c
index 4992084a3f..4b35ef4bed 100644
--- a/hw/arm/collie.c
+++ b/hw/arm/collie.c
@@ -19,6 +19,16 @@
#include "exec/address-spaces.h"
#include "cpu.h"
+typedef struct {
+ MachineState parent;
+
+ StrongARMState *sa1110;
+} CollieMachineState;
+
+#define TYPE_COLLIE_MACHINE MACHINE_TYPE_NAME("collie")
+#define COLLIE_MACHINE(obj) \
+ OBJECT_CHECK(CollieMachineState, obj, TYPE_COLLIE_MACHINE)
+
static struct arm_boot_info collie_binfo = {
.loader_start = SA_SDCS0,
.ram_size = 0x20000000,
@@ -26,9 +36,9 @@ static struct arm_boot_info collie_binfo = {
static void collie_init(MachineState *machine)
{
- StrongARMState *s;
DriveInfo *dinfo;
MachineClass *mc = MACHINE_GET_CLASS(machine);
+ CollieMachineState *cms = COLLIE_MACHINE(machine);
if (machine->ram_size != mc->default_ram_size) {
char *sz = size_to_str(mc->default_ram_size);
@@ -37,7 +47,7 @@ static void collie_init(MachineState *machine)
exit(EXIT_FAILURE);
}
- s = sa1110_init(machine->cpu_type);
+ cms->sa1110 = sa1110_init(machine->cpu_type);
memory_region_add_subregion(get_system_memory(), SA_SDCS0, machine->ram);
@@ -54,11 +64,13 @@ static void collie_init(MachineState *machine)
sysbus_create_simple("scoop", 0x40800000, NULL);
collie_binfo.board_id = 0x208;
- arm_load_kernel(s->cpu, machine, &collie_binfo);
+ arm_load_kernel(cms->sa1110->cpu, machine, &collie_binfo);
}
-static void collie_machine_init(MachineClass *mc)
+static void collie_machine_class_init(ObjectClass *oc, void *data)
{
+ MachineClass *mc = MACHINE_CLASS(oc);
+
mc->desc = "Sharp SL-5500 (Collie) PDA (SA-1110)";
mc->init = collie_init;
mc->ignore_memory_transaction_failures = true;
@@ -67,4 +79,15 @@ static void collie_machine_init(MachineClass *mc)
mc->default_ram_id = "strongarm.sdram";
}
-DEFINE_MACHINE("collie", collie_machine_init)
+static const TypeInfo collie_machine_typeinfo = {
+ .name = TYPE_COLLIE_MACHINE,
+ .parent = TYPE_MACHINE,
+ .class_init = collie_machine_class_init,
+ .instance_size = sizeof(CollieMachineState),
+};
+
+static void collie_machine_register_types(void)
+{
+ type_register_static(&collie_machine_typeinfo);
+}
+type_init(collie_machine_register_types);