diff options
Diffstat (limited to 'include/asm-arm/fpstate.h')
-rw-r--r-- | include/asm-arm/fpstate.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/include/asm-arm/fpstate.h b/include/asm-arm/fpstate.h new file mode 100644 index 000000000000..f7430e3aa55d --- /dev/null +++ b/include/asm-arm/fpstate.h | |||
@@ -0,0 +1,74 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/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 | #include <linux/config.h> | ||
15 | |||
16 | #ifndef __ASSEMBLY__ | ||
17 | |||
18 | /* | ||
19 | * VFP storage area has: | ||
20 | * - FPEXC, FPSCR, FPINST and FPINST2. | ||
21 | * - 16 double precision data registers | ||
22 | * - an implementation-dependant word of state for FLDMX/FSTMX | ||
23 | * | ||
24 | * FPEXC will always be non-zero once the VFP has been used in this process. | ||
25 | */ | ||
26 | |||
27 | struct vfp_hard_struct { | ||
28 | __u64 fpregs[16]; | ||
29 | __u32 fpmx_state; | ||
30 | __u32 fpexc; | ||
31 | __u32 fpscr; | ||
32 | /* | ||
33 | * VFP implementation specific state | ||
34 | */ | ||
35 | __u32 fpinst; | ||
36 | __u32 fpinst2; | ||
37 | }; | ||
38 | |||
39 | union vfp_state { | ||
40 | struct vfp_hard_struct hard; | ||
41 | }; | ||
42 | |||
43 | extern void vfp_flush_thread(union vfp_state *); | ||
44 | extern void vfp_release_thread(union vfp_state *); | ||
45 | |||
46 | #define FP_HARD_SIZE 35 | ||
47 | |||
48 | struct fp_hard_struct { | ||
49 | unsigned int save[FP_HARD_SIZE]; /* as yet undefined */ | ||
50 | }; | ||
51 | |||
52 | #define FP_SOFT_SIZE 35 | ||
53 | |||
54 | struct fp_soft_struct { | ||
55 | unsigned int save[FP_SOFT_SIZE]; /* undefined information */ | ||
56 | }; | ||
57 | |||
58 | struct iwmmxt_struct { | ||
59 | unsigned int save[0x98/sizeof(int) + 1]; | ||
60 | }; | ||
61 | |||
62 | union fp_state { | ||
63 | struct fp_hard_struct hard; | ||
64 | struct fp_soft_struct soft; | ||
65 | #ifdef CONFIG_IWMMXT | ||
66 | struct iwmmxt_struct iwmmxt; | ||
67 | #endif | ||
68 | }; | ||
69 | |||
70 | #define FP_SIZE (sizeof(union fp_state) / sizeof(int)) | ||
71 | |||
72 | #endif | ||
73 | |||
74 | #endif | ||