fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / asm-arm / fpstate.h
index 7492cfa..f31cda5 100644 (file)
@@ -11,7 +11,6 @@
 #ifndef __ASM_ARM_FPSTATE_H
 #define __ASM_ARM_FPSTATE_H
 
-#define FP_SIZE 35
 
 #ifndef __ASSEMBLY__
 
@@ -26,7 +25,9 @@
 
 struct vfp_hard_struct {
        __u64 fpregs[16];
+#if __LINUX_ARM_ARCH__ < 6
        __u32 fpmx_state;
+#endif
        __u32 fpexc;
        __u32 fpscr;
        /*
@@ -34,6 +35,9 @@ struct vfp_hard_struct {
         */
        __u32 fpinst;
        __u32 fpinst2;
+#ifdef CONFIG_SMP
+       __u32 cpu;
+#endif
 };
 
 union vfp_state {
@@ -43,19 +47,42 @@ union vfp_state {
 extern void vfp_flush_thread(union vfp_state *);
 extern void vfp_release_thread(union vfp_state *);
 
+#define FP_HARD_SIZE 35
+
 struct fp_hard_struct {
-       unsigned int save[FP_SIZE];             /* as yet undefined */
+       unsigned int save[FP_HARD_SIZE];                /* as yet undefined */
 };
 
+#define FP_SOFT_SIZE 35
+
 struct fp_soft_struct {
-       unsigned int save[FP_SIZE];             /* undefined information */
+       unsigned int save[FP_SOFT_SIZE];                /* undefined information */
+};
+
+#define IWMMXT_SIZE    0x98
+
+struct iwmmxt_struct {
+       unsigned int save[IWMMXT_SIZE / sizeof(unsigned int)];
 };
 
 union fp_state {
        struct fp_hard_struct   hard;
        struct fp_soft_struct   soft;
+#ifdef CONFIG_IWMMXT
+       struct iwmmxt_struct    iwmmxt;
+#endif
+};
+
+#define FP_SIZE (sizeof(union fp_state) / sizeof(int))
+
+struct crunch_state {
+       unsigned int    mvdx[16][2];
+       unsigned int    mvax[4][3];
+       unsigned int    dspsc[2];
 };
 
+#define CRUNCH_SIZE    sizeof(struct crunch_state)
+
 #endif
 
 #endif