Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / x86 / fpu.h @ 14

History | View | Annotate | Download (1.24 KB)

1 13 up20180614
/*        $NetBSD: fpu.h,v 1.6 2014/02/25 22:16:52 dsl 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 fpusave_lwp(struct lwp *, bool);
16
void fpusave_cpu(bool);
17
18
void fpu_set_default_cw(struct lwp *, unsigned int);
19
20
void fputrap(struct trapframe *);
21
void fpudna(struct trapframe *);
22
23
void process_xmm_to_s87(const struct fxsave *, struct save87 *);
24
void process_s87_to_xmm(const struct save87 *, struct fxsave *);
25
26
/* Set all to defaults (eg during exec) */
27
void fpu_save_area_clear(struct lwp *, unsigned int);
28
/* Reset control words only - for signal handlers */
29
void fpu_save_area_reset(struct lwp *);
30
31
/* Copy data outside pcb during fork */
32
void fpu_save_area_fork(struct pcb *, const struct pcb *);
33
34
/* Load FP registers with user-supplied values */
35
void process_write_fpregs_xmm(struct lwp *lwp, const struct fxsave *fpregs);
36
void process_write_fpregs_s87(struct lwp *lwp, const struct save87 *fpregs);
37
38
/* Save FP registers for copy to userspace */
39
void process_read_fpregs_xmm(struct lwp *lwp, struct fxsave *fpregs);
40
void process_read_fpregs_s87(struct lwp *lwp, struct save87 *fpregs);
41
42
#endif
43
44
#endif /* _X86_FPU_H_ */