[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 6 of 6] arm: Enable VFP at boot
On Thu, 2012-05-31 at 17:40 +0100, Tim Deegan wrote: > # HG changeset patch > # User Tim Deegan <tim@xxxxxxx> > # Date 1338482127 -3600 > # Node ID d12d5fcf152bffda41de51f9919b3211d69f955b > # Parent 9570c43c07f397d8d4a8e725698c17c10c034d80 > arm: Enable VFP at boot. Thanks, this should mean I can remove "cluster.cpu0.vfp-enable_at_reset=1" from my fast model cfg file! ... tries it... yes it works, sweeet! > > Signed-off-by: Tim Deegan <tim@xxxxxxx> > > diff -r 9570c43c07f3 -r d12d5fcf152b xen/arch/arm/Rules.mk > --- a/xen/arch/arm/Rules.mk Thu May 31 17:35:27 2012 +0100 > +++ b/xen/arch/arm/Rules.mk Thu May 31 17:35:27 2012 +0100 > @@ -24,7 +24,7 @@ ifneq ($(call cc-option,$(CC),-fvisibili > CFLAGS += -DGCC_HAS_VISIBILITY_ATTRIBUTE > endif > > -CFLAGS += -march=armv7-a -mcpu=cortex-a15 > +CFLAGS += -march=armv7-a -mcpu=cortex-a15 -mfpu=vfpv3 -mfloat-abi=softfp This might have been worthy of a comment... http://wiki.debian.org/ArmHardFloatPort has some discussion, including: * soft: Full software floating point. * softfp: Use the FPU, but remain compatible with soft-float code. * hard: Full hardware floating point. and "The combination of -mfpu=vfp and -mfloat-abi=hard is not available in FSF GCC 4.4". (there's a reference to a TODO section which seems to not exist anymore...). I think Debian's armhf does actually use hard (the page seems to imply it) Anyway softfp does seem like the right option, at least until -mfloat-abi=hard. Since this is all internal to the hypervisor (guests can do whatever they want, I'm happily running armhf binaries) I don't think this is a big deal to change as and when the compiler will let us. > > # Require GCC v3.4+ (to avoid issues with alignment constraints in Xen > headers) > check-$(gcc) = $(call cc-ver-check,CC,0x030400,"Xen requires at least > gcc-3.4") > diff -r 9570c43c07f3 -r d12d5fcf152b xen/arch/arm/setup.c > --- a/xen/arch/arm/setup.c Thu May 31 17:35:27 2012 +0100 > +++ b/xen/arch/arm/setup.c Thu May 31 17:35:27 2012 +0100 > @@ -36,6 +36,7 @@ > #include <asm/page.h> > #include <asm/current.h> > #include <asm/setup.h> > +#include <asm/vfp.h> > #include "gic.h" > > static __attribute_used__ void init_done(void) > @@ -192,6 +193,8 @@ void __init start_xen(unsigned long boot > > processor_id(); > > + enable_vfp(); > + > softirq_init(); > > tasklet_subsys_init(); > diff -r 9570c43c07f3 -r d12d5fcf152b xen/arch/arm/smpboot.c > --- a/xen/arch/arm/smpboot.c Thu May 31 17:35:27 2012 +0100 > +++ b/xen/arch/arm/smpboot.c Thu May 31 17:35:27 2012 +0100 > @@ -26,6 +26,7 @@ > #include <xen/sched.h> > #include <xen/smp.h> > #include <xen/softirq.h> > +#include <asm/vfp.h> > #include "gic.h" > > cpumask_t cpu_online_map; > @@ -106,6 +107,8 @@ void __cpuinit start_secondary(unsigned > WRITE_CP32((uint32_t) hyp_traps_vector, HVBAR); > > mmu_init_secondary_cpu(); > + enable_vfp(); > + > gic_init_secondary_cpu(); > init_timer_interrupt(); > gic_route_irqs(); > diff -r 9570c43c07f3 -r d12d5fcf152b xen/include/asm-arm/vfp.h > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/xen/include/asm-arm/vfp.h Thu May 31 17:35:27 2012 +0100 > @@ -0,0 +1,35 @@ > +#ifndef __ARM_VFP_H_ > +#define __ARM_VFP_H_ > + > +#include <xen/types.h> > + > +#define FPEXC_EN (1u << 30) > + > +/* Save and restore FP state. > + * Ought to be using the new vmrs/vmsr names, but older binutils has a > + * bug where it only allows them to target fpscr (and not, say, fpexc). */ > +#define READ_FP(reg) ({ \ > + uint32_t val; \ > + asm volatile ("fmrx %0, fp" #reg : "=r" (val)); \ > + val; }) > + > +#define WRITE_FP(reg, val) do { \ > + asm volatile ("fmxr fp" #reg ", %0" : : "r" (val)); \ > +} while (0) > + > + > +/* Start-of-day: Turn on VFP */ > +static inline void enable_vfp(void) > +{ > + WRITE_FP(exc, READ_FP(exc) | FPEXC_EN); > +} > + > +#endif > +/* > + * Local variables: > + * mode: C > + * c-set-style: "BSD" > + * c-basic-offset: 4 > + * indent-tabs-mode: nil > + * End: > + */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |