home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / arm / include / asm / fpstate.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.7 KB  |  94 lines

  1. /*
  2.  *  arch/arm/include/asm/fpstate.h
  3.  *
  4.  *  Copyright (C) 1995 Russell King
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  */
  10.  
  11. #ifndef __ASM_ARM_FPSTATE_H
  12. #define __ASM_ARM_FPSTATE_H
  13.  
  14.  
  15. #ifndef __ASSEMBLY__
  16.  
  17. /*
  18.  * VFP storage area has:
  19.  *  - FPEXC, FPSCR, FPINST and FPINST2.
  20.  *  - 16 or 32 double precision data registers
  21.  *  - an implementation-dependant word of state for FLDMX/FSTMX (pre-ARMv6)
  22.  * 
  23.  *  FPEXC will always be non-zero once the VFP has been used in this process.
  24.  */
  25.  
  26. struct vfp_hard_struct {
  27. #ifdef CONFIG_VFPv3
  28.     __u64 fpregs[32];
  29. #else
  30.     __u64 fpregs[16];
  31. #endif
  32. #if __LINUX_ARM_ARCH__ < 6
  33.     __u32 fpmx_state;
  34. #endif
  35.     __u32 fpexc;
  36.     __u32 fpscr;
  37.     /*
  38.      * VFP implementation specific state
  39.      */
  40.     __u32 fpinst;
  41.     __u32 fpinst2;
  42.  
  43. #ifdef CONFIG_SMP
  44.     __u32 cpu;
  45. #endif
  46. };
  47.  
  48. union vfp_state {
  49.     struct vfp_hard_struct    hard;
  50. };
  51.  
  52. extern void vfp_flush_thread(union vfp_state *);
  53. extern void vfp_release_thread(union vfp_state *);
  54.  
  55. #define FP_HARD_SIZE 35
  56.  
  57. struct fp_hard_struct {
  58.     unsigned int save[FP_HARD_SIZE];        /* as yet undefined */
  59. };
  60.  
  61. #define FP_SOFT_SIZE 35
  62.  
  63. struct fp_soft_struct {
  64.     unsigned int save[FP_SOFT_SIZE];        /* undefined information */
  65. };
  66.  
  67. #define IWMMXT_SIZE    0x98
  68.  
  69. struct iwmmxt_struct {
  70.     unsigned int save[IWMMXT_SIZE / sizeof(unsigned int)];
  71. };
  72.  
  73. union fp_state {
  74.     struct fp_hard_struct    hard;
  75.     struct fp_soft_struct    soft;
  76. #ifdef CONFIG_IWMMXT
  77.     struct iwmmxt_struct    iwmmxt;
  78. #endif
  79. };
  80.  
  81. #define FP_SIZE (sizeof(union fp_state) / sizeof(int))
  82.  
  83. struct crunch_state {
  84.     unsigned int    mvdx[16][2];
  85.     unsigned int    mvax[4][3];
  86.     unsigned int    dspsc[2];
  87. };
  88.  
  89. #define CRUNCH_SIZE    sizeof(struct crunch_state)
  90.  
  91. #endif
  92.  
  93. #endif
  94.