summaryrefslogtreecommitdiffstats
path: root/hw/arm/armv7m.c
diff options
context:
space:
mode:
authorPeter Maydell2018-03-02 11:45:36 +0100
committerPeter Maydell2018-03-02 12:03:45 +0100
commitc60c1b0d5af1a3568922611afc8a9d9bce31c200 (patch)
treeec152211a27d92dad88ddea1b21dc163e5a0d95d /hw/arm/armv7m.c
parenttarget/arm: Define an IDAU interface (diff)
downloadqemu-c60c1b0d5af1a3568922611afc8a9d9bce31c200.tar.gz
qemu-c60c1b0d5af1a3568922611afc8a9d9bce31c200.tar.xz
qemu-c60c1b0d5af1a3568922611afc8a9d9bce31c200.zip
armv7m: Forward idau property to CPU object
Create an "idau" property on the armv7m container object which we can forward to the CPU object. Annoyingly, we can't use object_property_add_alias() because the CPU object we want to forward to doesn't exist until the armv7m container is realized. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20180220180325.29818-6-peter.maydell@linaro.org
Diffstat (limited to 'hw/arm/armv7m.c')
-rw-r--r--hw/arm/armv7m.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
index facc536b07..9f38d3b254 100644
--- a/hw/arm/armv7m.c
+++ b/hw/arm/armv7m.c
@@ -19,6 +19,7 @@
#include "sysemu/qtest.h"
#include "qemu/error-report.h"
#include "exec/address-spaces.h"
+#include "target/arm/idau.h"
/* Bitbanded IO. Each word corresponds to a single bit. */
@@ -162,6 +163,13 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
object_property_set_link(OBJECT(s->cpu), OBJECT(&s->container), "memory",
&error_abort);
+ if (object_property_find(OBJECT(s->cpu), "idau", NULL)) {
+ object_property_set_link(OBJECT(s->cpu), s->idau, "idau", &err);
+ if (err != NULL) {
+ error_propagate(errp, err);
+ return;
+ }
+ }
object_property_set_bool(OBJECT(s->cpu), true, "realized", &err);
if (err != NULL) {
error_propagate(errp, err);
@@ -217,6 +225,7 @@ static Property armv7m_properties[] = {
DEFINE_PROP_STRING("cpu-type", ARMv7MState, cpu_type),
DEFINE_PROP_LINK("memory", ARMv7MState, board_memory, TYPE_MEMORY_REGION,
MemoryRegion *),
+ DEFINE_PROP_LINK("idau", ARMv7MState, idau, TYPE_IDAU_INTERFACE, Object *),
DEFINE_PROP_END_OF_LIST(),
};