target/arm/cpu: Allow init-svtor property to be set after realize
Make the M-profile "init-svtor" property be settable after realize. This matches the hardware, where this is a config signal which is sampled on CPU reset and can thus be changed between one reset and another. To do this we have to change the API we use to add the property. (We will need this capability for the SSE-200.) Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20190219125808.25174-4-peter.maydell@linaro.org
This commit is contained in:
parent
68d6b36f7f
commit
f9f62e4c37
@ -22,6 +22,7 @@
|
||||
#include "target/arm/idau.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qapi/visitor.h"
|
||||
#include "cpu.h"
|
||||
#include "internals.h"
|
||||
#include "qemu-common.h"
|
||||
@ -771,9 +772,21 @@ static Property arm_cpu_pmsav7_dregion_property =
|
||||
pmsav7_dregion,
|
||||
qdev_prop_uint32, uint32_t);
|
||||
|
||||
/* M profile: initial value of the Secure VTOR */
|
||||
static Property arm_cpu_initsvtor_property =
|
||||
DEFINE_PROP_UINT32("init-svtor", ARMCPU, init_svtor, 0);
|
||||
static void arm_get_init_svtor(Object *obj, Visitor *v, const char *name,
|
||||
void *opaque, Error **errp)
|
||||
{
|
||||
ARMCPU *cpu = ARM_CPU(obj);
|
||||
|
||||
visit_type_uint32(v, name, &cpu->init_svtor, errp);
|
||||
}
|
||||
|
||||
static void arm_set_init_svtor(Object *obj, Visitor *v, const char *name,
|
||||
void *opaque, Error **errp)
|
||||
{
|
||||
ARMCPU *cpu = ARM_CPU(obj);
|
||||
|
||||
visit_type_uint32(v, name, &cpu->init_svtor, errp);
|
||||
}
|
||||
|
||||
void arm_cpu_post_init(Object *obj)
|
||||
{
|
||||
@ -845,8 +858,14 @@ void arm_cpu_post_init(Object *obj)
|
||||
qdev_prop_allow_set_link_before_realize,
|
||||
OBJ_PROP_LINK_STRONG,
|
||||
&error_abort);
|
||||
qdev_property_add_static(DEVICE(obj), &arm_cpu_initsvtor_property,
|
||||
&error_abort);
|
||||
/*
|
||||
* M profile: initial value of the Secure VTOR. We can't just use
|
||||
* a simple DEFINE_PROP_UINT32 for this because we want to permit
|
||||
* the property to be set after realize.
|
||||
*/
|
||||
object_property_add(obj, "init-svtor", "uint32",
|
||||
arm_get_init_svtor, arm_set_init_svtor,
|
||||
NULL, NULL, &error_abort);
|
||||
}
|
||||
|
||||
qdev_property_add_static(DEVICE(obj), &arm_cpu_cfgend_property,
|
||||
|
Loading…
Reference in New Issue
Block a user