1 /*
2  * include/asm-i386/i387.h
3  *
4  * Copyright (C) 1994 Linus Torvalds
5  *
6  * Pentium III FXSR, SSE support
7  * General FPU state handling cleanups
8  *	Gareth Hughes <gareth@valinux.com>, May 2000
9  */
10 
11 #ifndef __ASM_I386_I387_H
12 #define __ASM_I386_I387_H
13 
14 #include <xen/types.h>
15 #include <xen/percpu.h>
16 
17 /* Byte offset of the stored word size within the FXSAVE area/portion. */
18 #define FPU_WORD_SIZE_OFFSET 511
19 
20 struct ix87_env {
21     uint16_t fcw, _res0;
22     uint16_t fsw, _res1;
23     uint16_t ftw, _res2;
24     uint32_t fip;
25     uint16_t fcs;
26     uint16_t fop;
27     uint32_t fdp;
28     uint16_t fds, _res6;
29 };
30 
31 void vcpu_restore_fpu_eager(struct vcpu *v);
32 void vcpu_restore_fpu_lazy(struct vcpu *v);
33 void vcpu_save_fpu(struct vcpu *v);
34 void save_fpu_enable(void);
35 
36 int vcpu_init_fpu(struct vcpu *v);
37 void vcpu_destroy_fpu(struct vcpu *v);
38 #endif /* __ASM_I386_I387_H */
39