Long term, the config_base_register will be a QDM parameter. In the meantime, models that use it need to be able to preserve it across cpu_reset() calls.
Signed-off-by: Mark Langsdorf <mark.langsd...@calxeda.com> --- Changes from v1-v12 Skipped target-arm/helper.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/target-arm/helper.c b/target-arm/helper.c index 00458fc..a14db43 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -255,6 +255,7 @@ static void cpu_reset_model_id(CPUARMState *env, uint32_t id) void cpu_reset(CPUARMState *env) { uint32_t id; + uint32_t tmp = 0; if (qemu_loglevel_mask(CPU_LOG_RESET)) { qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); @@ -262,9 +263,15 @@ void cpu_reset(CPUARMState *env) } id = env->cp15.c0_cpuid; + if (env->cp15.c15_config_base_address) { + tmp = env->cp15.c15_config_base_address; + } memset(env, 0, offsetof(CPUARMState, breakpoints)); if (id) cpu_reset_model_id(env, id); + if (tmp) { + env->cp15.c15_config_base_address = tmp; + } #if defined (CONFIG_USER_ONLY) env->uncached_cpsr = ARM_CPU_MODE_USR; /* For user mode we must enable access to coprocessors */ -- 1.7.5.4