diff options
author | Peter Maydell | 2014-04-04 18:42:34 +0200 |
---|---|---|
committer | Peter Maydell | 2014-04-04 19:01:09 +0200 |
commit | d097696eba076da781967827e59f66a7857c8ecb (patch) | |
tree | ec234211064b993e936d94db46d8c5db63b47a57 /hw/arm | |
parent | hw/arm/highbank: Don't segfault on unknown CPU names (diff) | |
download | qemu-d097696eba076da781967827e59f66a7857c8ecb.tar.gz qemu-d097696eba076da781967827e59f66a7857c8ecb.tar.xz qemu-d097696eba076da781967827e59f66a7857c8ecb.zip |
hw/arm/vexpress, hw/arm/highbank: Don't insist that CPU has reset-cbar property
For the machine models which can have a Cortex-A15 CPU (vexpress-a15 and
midway), silently continue if the CPU object has no reset-cbar property
rather than failing. This allows these boards to be used under KVM with
the "-cpu host" option, since the 'host' CPU object has no reset-cbar
property.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Rob Herring <rob.herring@linaro.org>
Diffstat (limited to 'hw/arm')
-rw-r--r-- | hw/arm/highbank.c | 14 | ||||
-rw-r--r-- | hw/arm/vexpress.c | 7 |
2 files changed, 10 insertions, 11 deletions
diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c index 2a88b843e9..46b9f1e0c0 100644 --- a/hw/arm/highbank.c +++ b/hw/arm/highbank.c @@ -230,6 +230,7 @@ static void calxeda_init(QEMUMachineInitArgs *args, enum cxmachines machine) for (n = 0; n < smp_cpus; n++) { ObjectClass *oc = cpu_class_by_name(TYPE_ARM_CPU, cpu_model); + Object *cpuobj; ARMCPU *cpu; Error *err = NULL; @@ -238,15 +239,14 @@ static void calxeda_init(QEMUMachineInitArgs *args, enum cxmachines machine) exit(1); } - cpu = ARM_CPU(object_new(object_class_get_name(oc))); + cpuobj = object_new(object_class_get_name(oc)); + cpu = ARM_CPU(cpuobj); - object_property_set_int(OBJECT(cpu), MPCORE_PERIPHBASE, "reset-cbar", - &err); - if (err) { - error_report("%s", error_get_pretty(err)); - exit(1); + if (object_property_find(cpuobj, "reset-cbar", NULL)) { + object_property_set_int(cpuobj, MPCORE_PERIPHBASE, + "reset-cbar", &error_abort); } - object_property_set_bool(OBJECT(cpu), true, "realized", &err); + object_property_set_bool(cpuobj, true, "realized", &err); if (err) { error_report("%s", error_get_pretty(err)); exit(1); diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 67628af588..169eb061a3 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -192,10 +192,9 @@ static void init_cpus(const char *cpu_model, const char *privdev, Object *cpuobj = object_new(object_class_get_name(cpu_oc)); Error *err = NULL; - object_property_set_int(cpuobj, periphbase, "reset-cbar", &err); - if (err) { - error_report("%s", error_get_pretty(err)); - exit(1); + if (object_property_find(cpuobj, "reset-cbar", NULL)) { + object_property_set_int(cpuobj, periphbase, + "reset-cbar", &error_abort); } object_property_set_bool(cpuobj, true, "realized", &err); if (err) { |