diff options
author | Julien Grall <julien.grall@linaro.org> | 2013-06-17 14:47:13 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2013-07-04 11:10:06 +0100 |
commit | b9fa02b9011f8baf753e1539c921804a32b228a8 (patch) | |
tree | 5162f056491f8ea4b13fa7fd0e0f6bf45b826e16 /xen/include/asm-arm/arm32 | |
parent | acd7c3f1bb2bf8ce67bb21737f566806a10e9630 (diff) | |
download | xen-b9fa02b9011f8baf753e1539c921804a32b228a8.tar.gz xen-b9fa02b9011f8baf753e1539c921804a32b228a8.tar.bz2 xen-b9fa02b9011f8baf753e1539c921804a32b228a8.zip |
xen/arm32: implement VFP context switch
Add support for VFP context switch on arm32 and a dummy support for arm64
Signed-off-by: Julien Grall <julien.grall@linaro.org>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'xen/include/asm-arm/arm32')
-rw-r--r-- | xen/include/asm-arm/arm32/vfp.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/xen/include/asm-arm/arm32/vfp.h b/xen/include/asm-arm/arm32/vfp.h new file mode 100644 index 0000000000..bade3bc66e --- /dev/null +++ b/xen/include/asm-arm/arm32/vfp.h @@ -0,0 +1,41 @@ +#ifndef _ARM_ARM32_VFP_H +#define _ARM_ARM32_VFP_H + +#define FPEXC_EX (1u << 31) +#define FPEXC_EN (1u << 30) +#define FPEXC_FP2V (1u << 28) + +#define MVFR0_A_SIMD_MASK (0xf << 0) + + +#define FPSID_IMPLEMENTER_BIT (24) +#define FPSID_IMPLEMENTER_MASK (0xff << FPSID_IMPLEMENTER_BIT) +#define FPSID_ARCH_BIT (16) +#define FPSID_ARCH_MASK (0xf << FPSID_ARCH_BIT) +#define FPSID_PART_BIT (8) +#define FPSID_PART_MASK (0xff << FPSID_PART_BIT) +#define FPSID_VARIANT_BIT (4) +#define FPSID_VARIANT_MASK (0xf << FPSID_VARIANT_BIT) +#define FPSID_REV_BIT (0) +#define FPSID_REV_MASK (0xf << FPSID_REV_BIT) + +struct vfp_state +{ + uint64_t fpregs1[16]; /* {d0-d15} */ + uint64_t fpregs2[16]; /* {d16-d31} */ + uint32_t fpexc; + uint32_t fpscr; + /* VFP implementation specific state */ + uint32_t fpinst; + uint32_t fpinst2; +}; + +#endif /* _ARM_ARM32_VFP_H */ +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ |