Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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 
  This page was automatically generated by the LXR engine.