1 1.4 dsl /* $NetBSD: fpu.h,v 1.4 2014/02/15 22:20:42 dsl Exp $ */ 2 1.1 dsl 3 1.2 dsl #ifndef _X86_FPU_H_ 4 1.2 dsl #define _X86_FPU_H_ 5 1.1 dsl 6 1.1 dsl #include <x86/cpu_extended_state.h> 7 1.1 dsl 8 1.1 dsl #ifdef _KERNEL 9 1.2 dsl 10 1.3 dsl struct cpu_info; 11 1.3 dsl struct lwp; 12 1.1 dsl struct trapframe; 13 1.1 dsl 14 1.1 dsl void fpuinit(struct cpu_info *); 15 1.1 dsl void fpusave_lwp(struct lwp *, bool); 16 1.1 dsl void fpusave_cpu(bool); 17 1.1 dsl 18 1.2 dsl void fputrap(struct trapframe *); 19 1.2 dsl void fpudna(struct trapframe *); 20 1.2 dsl 21 1.2 dsl void process_xmm_to_s87(const struct fxsave *, struct save87 *); 22 1.2 dsl void process_s87_to_xmm(const struct save87 *, struct fxsave *); 23 1.2 dsl 24 1.3 dsl /* Set all to defaults (eg during exec) */ 25 1.3 dsl void fpu_save_area_clear(struct lwp *, unsigned int); 26 1.3 dsl /* Reset control words only - for signal handlers */ 27 1.3 dsl void fpu_save_area_reset(struct lwp *); 28 1.3 dsl 29 1.4 dsl /* Load FP registers with user-supplied values */ 30 1.4 dsl void process_write_fpregs_xmm(struct lwp *lwp, const struct fxsave *fpregs); 31 1.4 dsl void process_write_fpregs_s87(struct lwp *lwp, const struct save87 *fpregs); 32 1.4 dsl 33 1.4 dsl /* Save FP registers for copy to userspace */ 34 1.4 dsl void process_read_fpregs_xmm(struct lwp *lwp, struct fxsave *fpregs); 35 1.4 dsl void process_read_fpregs_s87(struct lwp *lwp, struct save87 *fpregs); 36 1.4 dsl 37 1.1 dsl #endif 38 1.1 dsl 39 1.2 dsl #endif /* _X86_FPU_H_ */ 40