Commit e1bbf446 authored by Peter Maydell's avatar Peter Maydell Committed by Aurelien Jarno
Browse files

target-arm: Add CPU feature flag for v7MP



Add a CPU feature flag for v7MP (the multiprocessing extensions); some
instructions exist only for v7MP and not for the base v7 architecture.
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarAurelien Jarno <aurelien@aurel32.net>
parent 4fef930a
...@@ -362,7 +362,8 @@ enum arm_features { ...@@ -362,7 +362,8 @@ enum arm_features {
ARM_FEATURE_DIV, ARM_FEATURE_DIV,
ARM_FEATURE_M, /* Microcontroller profile. */ ARM_FEATURE_M, /* Microcontroller profile. */
ARM_FEATURE_OMAPCP, /* OMAP specific CP15 ops handling. */ ARM_FEATURE_OMAPCP, /* OMAP specific CP15 ops handling. */
ARM_FEATURE_THUMB2EE ARM_FEATURE_THUMB2EE,
ARM_FEATURE_V7MP /* v7 Multiprocessing Extensions */
}; };
static inline int arm_feature(CPUARMState *env, int feature) static inline int arm_feature(CPUARMState *env, int feature)
......
...@@ -123,6 +123,11 @@ static void cpu_reset_model_id(CPUARMState *env, uint32_t id) ...@@ -123,6 +123,11 @@ static void cpu_reset_model_id(CPUARMState *env, uint32_t id)
set_feature(env, ARM_FEATURE_VFP_FP16); set_feature(env, ARM_FEATURE_VFP_FP16);
set_feature(env, ARM_FEATURE_NEON); set_feature(env, ARM_FEATURE_NEON);
set_feature(env, ARM_FEATURE_THUMB2EE); set_feature(env, ARM_FEATURE_THUMB2EE);
/* Note that A9 supports the MP extensions even for
* A9UP and single-core A9MP (which are both different
* and valid configurations; we don't model A9UP).
*/
set_feature(env, ARM_FEATURE_V7MP);
env->vfp.xregs[ARM_VFP_FPSID] = 0x41034000; /* Guess */ env->vfp.xregs[ARM_VFP_FPSID] = 0x41034000; /* Guess */
env->vfp.xregs[ARM_VFP_MVFR0] = 0x11110222; env->vfp.xregs[ARM_VFP_MVFR0] = 0x11110222;
env->vfp.xregs[ARM_VFP_MVFR1] = 0x01111111; env->vfp.xregs[ARM_VFP_MVFR1] = 0x01111111;
...@@ -152,6 +157,7 @@ static void cpu_reset_model_id(CPUARMState *env, uint32_t id) ...@@ -152,6 +157,7 @@ static void cpu_reset_model_id(CPUARMState *env, uint32_t id)
set_feature(env, ARM_FEATURE_NEON); set_feature(env, ARM_FEATURE_NEON);
set_feature(env, ARM_FEATURE_THUMB2EE); set_feature(env, ARM_FEATURE_THUMB2EE);
set_feature(env, ARM_FEATURE_DIV); set_feature(env, ARM_FEATURE_DIV);
set_feature(env, ARM_FEATURE_V7MP);
break; break;
case ARM_CPUID_TI915T: case ARM_CPUID_TI915T:
case ARM_CPUID_TI925T: case ARM_CPUID_TI925T:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment