Deleted Added
full compact
fpu.h (55205) fpu.h (57890)
1/*-
2 * Copyright (c) 1990 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * William Jolitz.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 20 unchanged lines hidden (view full) ---

29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * from: @(#)npx.h 5.3 (Berkeley) 1/18/91
1/*-
2 * Copyright (c) 1990 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * William Jolitz.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 20 unchanged lines hidden (view full) ---

29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * from: @(#)npx.h 5.3 (Berkeley) 1/18/91
37 * $FreeBSD: head/sys/amd64/include/fpu.h 55205 1999-12-29 04:46:21Z peter $
37 * $FreeBSD: head/sys/amd64/include/fpu.h 57890 2000-03-10 17:56:33Z cracauer $
38 */
39
40/*
41 * 287/387 NPX Coprocessor Data Structures and Constants
42 * W. Jolitz 1/90
43 */
44
45#ifndef _MACHINE_NPX_H_

--- 36 unchanged lines hidden (view full) ---

82 * before it is inspected for ptracing or for core dumps. Some
83 * emulators overwrite the whole struct. We have no good way of
84 * knowing how much padding to leave. Leave just enough for the
85 * GPL emulator's i387_union (176 bytes total).
86 */
87 u_char sv_pad[64]; /* padding; used by emulators */
88};
89
38 */
39
40/*
41 * 287/387 NPX Coprocessor Data Structures and Constants
42 * W. Jolitz 1/90
43 */
44
45#ifndef _MACHINE_NPX_H_

--- 36 unchanged lines hidden (view full) ---

82 * before it is inspected for ptracing or for core dumps. Some
83 * emulators overwrite the whole struct. We have no good way of
84 * knowing how much padding to leave. Leave just enough for the
85 * GPL emulator's i387_union (176 bytes total).
86 */
87 u_char sv_pad[64]; /* padding; used by emulators */
88};
89
90/* Intel prefers long real (53 bit) precision */
91#define __iBCS_NPXCW__ 0x262
92/* wfj prefers temporary real (64 bit) precision */
93#define __386BSD_NPXCW__ 0x362
94/*
90/*
95 * bde prefers 53 bit precision and all exceptions masked.
91 * The hardware default control word for i387's and later coprocessors is
92 * 0x37F, giving:
96 *
93 *
97 * The standard control word from finit is 0x37F, giving:
98 *
99 * round to nearest
100 * 64-bit precision
101 * all exceptions masked.
102 *
94 * round to nearest
95 * 64-bit precision
96 * all exceptions masked.
97 *
103 * Now I want:
98 * We modify the affine mode bit and precision bits in this to give:
104 *
105 * affine mode for 287's (if they work at all) (1 in bitfield 1<<12)
106 * 53-bit precision (2 in bitfield 3<<8)
99 *
100 * affine mode for 287's (if they work at all) (1 in bitfield 1<<12)
101 * 53-bit precision (2 in bitfield 3<<8)
107 * overflow exception unmasked (0 in bitfield 1<<3)
108 * zero divide exception unmasked (0 in bitfield 1<<2)
109 * invalid-operand exception unmasked (0 in bitfield 1<<0).
110 *
111 * 64-bit precision often gives bad results with high level languages
112 * because it makes the results of calculations depend on whether
113 * intermediate values are stored in memory or in FPU registers.
102 *
103 * 64-bit precision often gives bad results with high level languages
104 * because it makes the results of calculations depend on whether
105 * intermediate values are stored in memory or in FPU registers.
114 *
115 * The "Intel" and wfj control words have:
116 *
117 * underflow exception unmasked (0 in bitfield 1<<4)
118 *
119 * but that causes an unexpected exception in the test program 'paranoia'
120 * and makes denormals useless (DBL_MIN / 2 underflows). It doesn't make
121 * a lot of sense to trap underflow without trapping denormals.
122 *
123 * Later I will want the IEEE default of all exceptions masked. See the
124 * 0.0 math manpage for why this is better. The 0.1 math manpage is empty.
125 */
106 */
126#define __BDE_NPXCW__ 0x1272
127#define __BETTER_BDE_NPXCW__ 0x127f
107#define __INITIAL_NPXCW__ 0x127F
128
108
129#ifdef __BROKEN_NPXCW__
130#ifdef __FreeBSD__
131#define __INITIAL_NPXCW__ __386BSD_NPXCW__
132#else
133#define __INITIAL_NPXCW__ __iBCS_NPXCW__
134#endif
135#else
136#define __INITIAL_NPXCW__ __BDE_NPXCW__
137#endif
138
139#ifdef _KERNEL
140#ifndef npxproc
141extern struct proc *npxproc;
142#endif
143
144int npxdna __P((void));
145void npxexit __P((struct proc *p));
146void npxinit __P((int control));
147void npxsave __P((struct save87 *addr));
148#endif
149
150#endif /* !_MACHINE_NPX_H_ */
109#ifdef _KERNEL
110#ifndef npxproc
111extern struct proc *npxproc;
112#endif
113
114int npxdna __P((void));
115void npxexit __P((struct proc *p));
116void npxinit __P((int control));
117void npxsave __P((struct save87 *addr));
118#endif
119
120#endif /* !_MACHINE_NPX_H_ */