Message ID | 1290181007-12545-1-git-send-email-peter.maydell@linaro.org |
---|---|
State | New |
Headers | show |
On 19 November 2010 15:36, Peter Maydell <peter.maydell@linaro.org> wrote: > In linux-user mode, the XScale/iWMMXT coprocessors must be enabled > at reset so that we can run code that uses these instructions. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> This patch fixes the same issue as this patch submitted by Lars Munch back in May: http://patchwork.ozlabs.org/patch/51970/ but I preferred to put the enabling of the XScale coprocessors in the same part of the code as the existing enabling of the VFP for linux-user mode. -- PMM
diff --git a/target-arm/helper.c b/target-arm/helper.c index 996d40d..94aef39 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -203,7 +203,13 @@ void cpu_reset(CPUARMState *env) cpu_reset_model_id(env, id); #if defined (CONFIG_USER_ONLY) env->uncached_cpsr = ARM_CPU_MODE_USR; + /* For user mode we must enable access to coprocessors */ env->vfp.xregs[ARM_VFP_FPEXC] = 1 << 30; + if (arm_feature(env, ARM_FEATURE_IWMMXT)) { + env->cp15.c15_cpar = 3; + } else if (arm_feature(env, ARM_FEATURE_XSCALE)) { + env->cp15.c15_cpar = 1; + } #else /* SVC mode with interrupts disabled. */ env->uncached_cpsr = ARM_CPU_MODE_SVC | CPSR_A | CPSR_F | CPSR_I;
In linux-user mode, the XScale/iWMMXT coprocessors must be enabled at reset so that we can run code that uses these instructions. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- target-arm/helper.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)