1 | /* $NetBSD: fpu.h,v 1.17 2019/06/26 12:30:13 mgorny Exp $ */ |
2 | |
3 | #ifndef _X86_FPU_H_ |
4 | #define _X86_FPU_H_ |
5 | |
6 | #include <x86/cpu_extended_state.h> |
7 | |
8 | #ifdef _KERNEL |
9 | |
10 | struct cpu_info; |
11 | struct lwp; |
12 | struct trapframe; |
13 | |
14 | void fpuinit(struct cpu_info *); |
15 | void fpuinit_mxcsr_mask(void); |
16 | |
17 | void fpu_area_save(void *, uint64_t); |
18 | void fpu_area_restore(void *, uint64_t); |
19 | |
20 | void fpusave_lwp(struct lwp *, bool); |
21 | void fpusave_cpu(bool); |
22 | |
23 | void fpu_eagerswitch(struct lwp *, struct lwp *); |
24 | |
25 | void fpu_set_default_cw(struct lwp *, unsigned int); |
26 | |
27 | void fputrap(struct trapframe *); |
28 | void fpudna(struct trapframe *); |
29 | |
30 | void fpu_clear(struct lwp *, unsigned int); |
31 | void fpu_sigreset(struct lwp *); |
32 | |
33 | void fpu_save_area_fork(struct pcb *, const struct pcb *); |
34 | |
35 | void process_write_fpregs_xmm(struct lwp *, const struct fxsave *); |
36 | void process_write_fpregs_s87(struct lwp *, const struct save87 *); |
37 | |
38 | void process_read_fpregs_xmm(struct lwp *, struct fxsave *); |
39 | void process_read_fpregs_s87(struct lwp *, struct save87 *); |
40 | |
41 | int process_read_xstate(struct lwp *, struct xstate *); |
42 | int process_verify_xstate(const struct xstate *); |
43 | int process_write_xstate(struct lwp *, const struct xstate *); |
44 | |
45 | #endif |
46 | |
47 | #endif /* _X86_FPU_H_ */ |
48 | |