[BACK]Return to fpu.h CVS log [TXT][DIR] Up to [local] / sys / arch / amd64 / include

Annotation of sys/arch/amd64/include/fpu.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: fpu.h,v 1.3 2006/10/01 10:52:10 kettenis Exp $        */
        !             2: /*     $NetBSD: fpu.h,v 1.1 2003/04/26 18:39:40 fvdl Exp $     */
        !             3:
        !             4: #ifndef        _AMD64_FPU_H_
        !             5: #define        _AMD64_FPU_H_
        !             6:
        !             7: #include <sys/types.h>
        !             8:
        !             9: /*
        !            10:  * amd64 only uses the extended save/restore format used
        !            11:  * by fxsave/fsrestore, to always deal with the SSE registers,
        !            12:  * which are part of the ABI to pass floating point values.
        !            13:  * Must be stored in memory on a 16-byte boundary.
        !            14:  */
        !            15:
        !            16: struct fxsave64 {
        !            17:        u_int16_t  fx_fcw;
        !            18:        u_int16_t  fx_fsw;
        !            19:        u_int8_t   fx_ftw;
        !            20:        u_int8_t   fx_unused1;
        !            21:        u_int16_t  fx_fop;
        !            22:        u_int64_t  fx_rip;
        !            23:        u_int64_t  fx_rdp;
        !            24:        u_int32_t  fx_mxcsr;
        !            25:        u_int32_t  fx_mxcsr_mask;
        !            26:        u_int64_t  fx_st[8][2];   /* 8 normal FP regs */
        !            27:        u_int64_t  fx_xmm[16][2]; /* 16 SSE2 registers */
        !            28:        u_int8_t   fx_unused3[96];
        !            29: } __attribute__((packed));
        !            30:
        !            31: struct savefpu {
        !            32:        struct fxsave64 fp_fxsave;      /* see above */
        !            33:        u_int16_t fp_ex_sw;             /* saved status from last exception */
        !            34:        u_int16_t fp_ex_tw;             /* saved tag from last exception */
        !            35: };
        !            36:
        !            37: /*
        !            38:  * The i387 defaults to Intel extended precision mode and round to nearest,
        !            39:  * with all exceptions masked.
        !            40:  */
        !            41: #define        __INITIAL_NPXCW__       0x037f
        !            42: #define __INITIAL_MXCSR__      0x1f80
        !            43: #define __INITIAL_MXCSR_MASK__ 0xffbf
        !            44:
        !            45: #ifdef _KERNEL
        !            46: /*
        !            47:  * XXX
        !            48:  */
        !            49: struct trapframe;
        !            50: struct cpu_info;
        !            51:
        !            52: void fpuinit(struct cpu_info *);
        !            53: void fpudrop(void);
        !            54: void fpusave(struct proc *);
        !            55: void fpudiscard(struct proc *);
        !            56: void fputrap(struct trapframe *);
        !            57: void fpusave_proc(struct proc *, int);
        !            58: void fpusave_cpu(struct cpu_info *, int);
        !            59:
        !            60: #endif
        !            61:
        !            62: #endif /* _AMD64_FPU_H_ */

CVSweb