xref: /csrg-svn/sys/i386/include/npx.h (revision 40456)
1*40456Sbill /*
2*40456Sbill  * 287/387 Floating Point Data Structures and Constants
3*40456Sbill  * W. Jolitz 1/90
4*40456Sbill  */
5*40456Sbill 
6*40456Sbill #ifndef	___FPU87___
7*40456Sbill #define	___FPU87___
8*40456Sbill 
9*40456Sbill /* Environment information of floating point unit */
10*40456Sbill struct	env87 {
11*40456Sbill 	long	en_cw;		/* control word (16bits) */
12*40456Sbill 	long	en_sw;		/* status word (16bits) */
13*40456Sbill 	long	en_tw;		/* tag word (16bits) */
14*40456Sbill 	long	en_fip;		/* floating point instruction pointer */
15*40456Sbill 	u_short	en_fcs;		/* floating code segment selector */
16*40456Sbill 	u_short	en_opcode;	/* opcode last executed (11 bits ) */
17*40456Sbill 	long	en_foo;		/* floating operand offset */
18*40456Sbill 	long	en_fos;		/* floating operand segment selector */
19*40456Sbill };
20*40456Sbill 
21*40456Sbill /* Contents of each floating point accumulator */
22*40456Sbill struct	fpacc87 {
23*40456Sbill 	u_long	fp_mantlo;	/* mantissa low (31:0) */
24*40456Sbill 	u_long	fp_manthi;	/* mantissa high (63:32) */
25*40456Sbill 	int	fp_exp:15;	/* exponent */
26*40456Sbill 	int	fp_sgn:1;	/* mantissa sign */
27*40456Sbill };
28*40456Sbill 
29*40456Sbill /* Floating point context */
30*40456Sbill struct	save87 {
31*40456Sbill 	struct	env87 sv_env;		/* floating point control/status */
32*40456Sbill 	struct	fpacc87	sv_ac[8];	/* accumulator contents, 0-7 */
33*40456Sbill };
34*40456Sbill 
35*40456Sbill #endif	___FPU87___
36