Am 14.04.2012 18:42, schrieb Peter Maydell: > Move the setting of the feature bits from cpu_reset_model_id() > to each CPU's instance init function. This requires us to move > the features field in CPUARMState so that it is not cleared > on reset. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --- [...] > diff --git a/target-arm/cpu.c b/target-arm/cpu.c > index 3565472..958f5c5 100644 > --- a/target-arm/cpu.c > +++ b/target-arm/cpu.c [...] > static void pxa270c0_initfn(Object *obj) > { > ARMCPU *cpu = ARM_CPU(obj); > + set_feature(&cpu->env, ARM_FEATURE_V5); > + set_feature(&cpu->env, ARM_FEATURE_XSCALE); > + set_feature(&cpu->env, ARM_FEATURE_IWMMXT); > cpu->midr = ARM_CPUID_PXA270_C0; > } > > static void pxa270c5_initfn(Object *obj) > { > ARMCPU *cpu = ARM_CPU(obj); > + set_feature(&cpu->env, ARM_FEATURE_V7); > + set_feature(&cpu->env, ARM_FEATURE_VFP4); > + set_feature(&cpu->env, ARM_FEATURE_VFP_FP16); > + set_feature(&cpu->env, ARM_FEATURE_NEON); > + set_feature(&cpu->env, ARM_FEATURE_THUMB2EE); > + set_feature(&cpu->env, ARM_FEATURE_ARM_DIV); > + set_feature(&cpu->env, ARM_FEATURE_V7MP); > cpu->midr = ARM_CPUID_PXA270_C5; > }
Beep! Glad I took the time to compare each model... :) Once this is fixed, Acked-by. /-F > > static void arm_any_initfn(Object *obj) > { > ARMCPU *cpu = ARM_CPU(obj); > + set_feature(&cpu->env, ARM_FEATURE_V7); > + set_feature(&cpu->env, ARM_FEATURE_VFP4); > + set_feature(&cpu->env, ARM_FEATURE_VFP_FP16); > + set_feature(&cpu->env, ARM_FEATURE_NEON); > + set_feature(&cpu->env, ARM_FEATURE_THUMB2EE); > + set_feature(&cpu->env, ARM_FEATURE_ARM_DIV); > + set_feature(&cpu->env, ARM_FEATURE_V7MP); > cpu->midr = ARM_CPUID_ANY; > } > [...] > diff --git a/target-arm/helper.c b/target-arm/helper.c > index afcd68c..e495de6 100644 > --- a/target-arm/helper.c > +++ b/target-arm/helper.c [...] > @@ -220,17 +163,13 @@ static void cpu_reset_model_id(CPUARMState *env, > uint32_t id) > case ARM_CPUID_PXA270_B1: > case ARM_CPUID_PXA270_C0: > case ARM_CPUID_PXA270_C5: > - set_feature(env, ARM_FEATURE_V5); > - set_feature(env, ARM_FEATURE_XSCALE); > /* JTAG_ID is ((id << 28) | 0x09265013) */ > - set_feature(env, ARM_FEATURE_IWMMXT); > env->iwmmxt.cregs[ARM_IWMMXT_wCID] = 0x69051000 | 'Q'; > env->cp15.c0_cachetype = 0xd172172; > env->cp15.c1_sys = 0x00000078; > break; > case ARM_CPUID_SA1100: > case ARM_CPUID_SA1110: > - set_feature(env, ARM_FEATURE_STRONGARM); > env->cp15.c1_sys = 0x00000070; > break; > default: -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg