summaryrefslogtreecommitdiffstats
path: root/hw/arm/collie.c
diff options
context:
space:
mode:
authorPeter Maydell2020-04-06 13:36:45 +0200
committerPeter Maydell2020-04-06 13:36:45 +0200
commit53ef8a92eb04ee19640f5aad3bff36cd4a36c250 (patch)
tree5db1c4ec1df69727ff55a7adc5d381333781ece9 /hw/arm/collie.c
parentMerge remote-tracking branch 'remotes/armbru/tags/pull-error-2020-04-04' into... (diff)
parentdma/xlnx-zdma: Reorg to fix CUR_DSCR (diff)
downloadqemu-53ef8a92eb04ee19640f5aad3bff36cd4a36c250.tar.gz
qemu-53ef8a92eb04ee19640f5aad3bff36cd4a36c250.tar.xz
qemu-53ef8a92eb04ee19640f5aad3bff36cd4a36c250.zip
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20200406' into staging
target-arm queue: * don't expose "ieee_half" via gdbstub (prevents gdb crashes or errors with older GDB versions) * hw/arm/collie: Put StrongARMState* into a CollieMachineState struct * PSTATE.PAN should not clear exec bits * hw/gpio/aspeed_gpio.c: Don't directly include assert.h (fixes compilation on some Windows build scenarios) * dump: Fix writing of ELF section * dma/xlnx-zdma: various bug fixes * target/arm/helperc. delete obsolete TODO comment # gpg: Signature made Mon 06 Apr 2020 11:04:01 BST # gpg: using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE # gpg: issuer "peter.maydell@linaro.org" # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [ultimate] # gpg: aka "Peter Maydell <pmaydell@gmail.com>" [ultimate] # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [ultimate] # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE * remotes/pmaydell/tags/pull-target-arm-20200406: dma/xlnx-zdma: Reorg to fix CUR_DSCR dma/xlnx-zdma: Advance the descriptor address when stopping dma/xlnx-zdma: Clear DMA_DONE when halting dma/xlnx-zdma: Populate DBG0.CMN_BUF_FREE dma/xlnx-zdma: Remove comment dump: Fix writing of ELF section hw/gpio/aspeed_gpio.c: Don't directly include assert.h target/arm: Remove obsolete TODO note from get_phys_addr_lpae() target/arm: PSTATE.PAN should not clear exec bits hw/arm/collie: Put StrongARMState* into a CollieMachineState struct target/arm: don't expose "ieee_half" via gdbstub Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/arm/collie.c')
-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);