Thank you! Im working on it El 16/6/2015 8:21, "Peter Maydell" <peter.mayd...@linaro.org> escribió:
> On 15 June 2015 at 21:31, Aurelio C. Remonda <aurelioremo...@gmail.com> > wrote: > > This patch adds the Cortex-M4 CPU. The M4 is basically the same as the > M3, > > the main differences being the DSP instructions and an optional FPU. > > OK, I've checked through the v7M ARM ARM, and I'm happy that > we don't need any further changes to the core code to support > a no-FPU Cortex-M4. so this patch is functionally good, and just > needs a few tweaks. > > > Created an ARM_FEATURE_THUMB_DSP to be added to any non-M > thumb2-compatible > > CPU that uses DSP instructions, and manually added it to the M4 in its > initfn. > > This commit message could use updating: > * the THUMB_DSP feature was created in a different patch > * it's worth mentioning that we're implementing the no-FPU M4 > here, and why (because the core target-arm code doesn't support > the M-profile FPU model yet) > > > Signed-off-by: Aurelio C. Remonda <aurelioremo...@gmail.com> > > --- > > * Changes in V3: Add the ARM_FEATURE_THUMB_DSP in a separate patch and > create > > just the CPU init on this one. > > target-arm/cpu.c | 17 +++++++++++++++++ > > 1 file changed, 17 insertions(+) > > > > diff --git a/target-arm/cpu.c b/target-arm/cpu.c > > index 4a888ab..4950897 100644 > > --- a/target-arm/cpu.c > > +++ b/target-arm/cpu.c > > @@ -783,6 +783,21 @@ static void cortex_m3_initfn(Object *obj) > > cpu->midr = 0x410fc231; > > } > > > > +static void cortex_m4_initfn(Object *obj) > > +{ > > + ARMCPU *cpu = ARM_CPU(obj); > > You want a blank line here. Compare the other CPU initfns. > > > + set_feature(&cpu->env, ARM_FEATURE_V7); > > + set_feature(&cpu->env, ARM_FEATURE_M); > > + set_feature(&cpu->env, ARM_FEATURE_THUMB_DSP); > > + cpu->midr = 0x410fc240; > > + /*main id register CPUID bit assignments > > + Bits NAME Function > > + [31:24] IMPLEMENTER Indicates implementor: 0x41 = ARM > > + [23:20] VARIANT Indicates processor revision: 0x0 = Revision 0 > > + [19:16] (Constant) Reads as 0xF > > + [15:4] PARTNO Indicates part number: 0xC24 = Cortex-M4 > > + [3:0] REVISION Indicates patch release: 0x0 = Patch 0.*/ > > This whole comment is unnecessary -- the MIDR is the standard > format for all ARM CPUs, and no other initfn spells out the > various fields of it. You can say > cpu->midr = 0x410fc240; /* r0p0 */ > if you like. > > > +} > > static void arm_v7m_class_init(ObjectClass *oc, void *data) > > { > > CPUClass *cc = CPU_CLASS(oc); > > @@ -1185,6 +1200,8 @@ static const ARMCPUInfo arm_cpus[] = { > > { .name = "arm11mpcore", .initfn = arm11mpcore_initfn }, > > { .name = "cortex-m3", .initfn = cortex_m3_initfn, > > .class_init = arm_v7m_class_init }, > > + { .name = "cortex-m4", .initfn = cortex_m4_initfn, > > + .class_init = arm_v7m_class_init }, > > { .name = "cortex-a8", .initfn = cortex_a8_initfn }, > > { .name = "cortex-a9", .initfn = cortex_a9_initfn }, > > { .name = "cortex-a15", .initfn = cortex_a15_initfn }, > > If you can make those tweaks and resend I think we can > get this into QEMU for 2.4. > > thanks > -- PMM >