Patchwork [v14,5/6] arm: store the config_base_register during cpu_reset

login
register
mail settings
Submitter Mark Langsdorf
Date Jan. 23, 2012, 4:05 p.m.
Message ID <1327334725-3145-6-git-send-email-mark.langsdorf@calxeda.com>
Download mbox | patch
Permalink /patch/137399/
State New
Headers show

Comments

Mark Langsdorf - Jan. 23, 2012, 4:05 p.m.
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.langsdorf@calxeda.com>
---
Changes from v13
	Make save/restore unconditional
Changes from v1-v12
        Skipped

 target-arm/helper.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
Peter Maydell - Jan. 23, 2012, 5:37 p.m.
On 23 January 2012 16:05, Mark Langsdorf <mark.langsdorf@calxeda.com> wrote:
> 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.langsdorf@calxeda.com>

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

-- PMM

Patch

diff --git a/target-arm/helper.c b/target-arm/helper.c
index 00458fc..a57b3b7 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,11 @@  void cpu_reset(CPUARMState *env)
     }
 
     id = env->cp15.c0_cpuid;
+    tmp = env->cp15.c15_config_base_address;
     memset(env, 0, offsetof(CPUARMState, breakpoints));
     if (id)
         cpu_reset_model_id(env, id);
+    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 */