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