aboutsummaryrefslogtreecommitdiff
path: root/target-arm/cpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'target-arm/cpu.c')
-rw-r--r--target-arm/cpu.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/target-arm/cpu.c b/target-arm/cpu.c
index 9b68b70c23..bd3aeb107c 100644
--- a/target-arm/cpu.c
+++ b/target-arm/cpu.c
@@ -45,6 +45,8 @@ static void arm_cpu_reset(CPUState *c)
env->cp15.c0_cpuid = id;
env->cp15.c15_config_base_address = tmp;
+ env->vfp.xregs[ARM_VFP_FPSID] = cpu->reset_fpsid;
+
#if defined(CONFIG_USER_ONLY)
env->uncached_cpsr = ARM_CPU_MODE_USR;
/* For user mode we must enable access to coprocessors */
@@ -166,6 +168,7 @@ static void arm926_initfn(Object *obj)
set_feature(&cpu->env, ARM_FEATURE_V5);
set_feature(&cpu->env, ARM_FEATURE_VFP);
cpu->env.cp15.c0_cpuid = 0x41069265;
+ cpu->reset_fpsid = 0x41011090;
arm_cpu_postconfig_init(cpu);
}
@@ -185,6 +188,7 @@ static void arm1026_initfn(Object *obj)
set_feature(&cpu->env, ARM_FEATURE_VFP);
set_feature(&cpu->env, ARM_FEATURE_AUXCR);
cpu->env.cp15.c0_cpuid = 0x4106a262;
+ cpu->reset_fpsid = 0x410110a0;
arm_cpu_postconfig_init(cpu);
}
@@ -194,6 +198,7 @@ static void arm1136_r2_initfn(Object *obj)
set_feature(&cpu->env, ARM_FEATURE_V6);
set_feature(&cpu->env, ARM_FEATURE_VFP);
cpu->env.cp15.c0_cpuid = 0x4107b362;
+ cpu->reset_fpsid = 0x410120b4;
arm_cpu_postconfig_init(cpu);
}
@@ -204,6 +209,7 @@ static void arm1136_initfn(Object *obj)
set_feature(&cpu->env, ARM_FEATURE_V6);
set_feature(&cpu->env, ARM_FEATURE_VFP);
cpu->env.cp15.c0_cpuid = 0x4117b363;
+ cpu->reset_fpsid = 0x410120b4;
arm_cpu_postconfig_init(cpu);
}
@@ -214,6 +220,7 @@ static void arm1176_initfn(Object *obj)
set_feature(&cpu->env, ARM_FEATURE_VFP);
set_feature(&cpu->env, ARM_FEATURE_VAPA);
cpu->env.cp15.c0_cpuid = 0x410fb767;
+ cpu->reset_fpsid = 0x410120b5;
arm_cpu_postconfig_init(cpu);
}
@@ -224,6 +231,7 @@ static void arm11mpcore_initfn(Object *obj)
set_feature(&cpu->env, ARM_FEATURE_VFP);
set_feature(&cpu->env, ARM_FEATURE_VAPA);
cpu->env.cp15.c0_cpuid = 0x410fb022;
+ cpu->reset_fpsid = 0x410120b4;
arm_cpu_postconfig_init(cpu);
}
@@ -244,6 +252,7 @@ static void cortex_a8_initfn(Object *obj)
set_feature(&cpu->env, ARM_FEATURE_NEON);
set_feature(&cpu->env, ARM_FEATURE_THUMB2EE);
cpu->env.cp15.c0_cpuid = 0x410fc080;
+ cpu->reset_fpsid = 0x410330c0;
arm_cpu_postconfig_init(cpu);
}
@@ -261,6 +270,7 @@ static void cortex_a9_initfn(Object *obj)
*/
set_feature(&cpu->env, ARM_FEATURE_V7MP);
cpu->env.cp15.c0_cpuid = 0x410fc090;
+ cpu->reset_fpsid = 0x41033090;
arm_cpu_postconfig_init(cpu);
}
@@ -276,6 +286,7 @@ static void cortex_a15_initfn(Object *obj)
set_feature(&cpu->env, ARM_FEATURE_V7MP);
set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER);
cpu->env.cp15.c0_cpuid = 0x412fc0f1;
+ cpu->reset_fpsid = 0x410430f0;
arm_cpu_postconfig_init(cpu);
}