164 lines
4.9 KiB
Groff
164 lines
4.9 KiB
Groff
.\"
|
|
.\" Copyright (c) 1993 Christopher G. Demetriou
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by Christopher G. Demetriou.
|
|
.\" 3. The name of the author may not be used to endorse or promote products
|
|
.\" derived from this software without specific prior written permission
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.\" $Id: npx.4,v 1.1 1993/08/06 10:58:03 cgd Exp $
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd August 28, 1993
|
|
.Dt NPX 4 i386
|
|
.Os
|
|
.Sh NAME
|
|
.Nm npx
|
|
.Nd Numeric Processing Extension coprocessor and emulator
|
|
.Sh SYNOPSIS
|
|
.Cd "device npx"
|
|
.Cd hint.npx.0.at="nexus"
|
|
.Cd hint.npx.0.port="0x0F0"
|
|
.Cd hint.npx.0.flags="0x0"
|
|
.Cd hint.npx.0.irq="13"
|
|
.Pp
|
|
For hosts without a FPU coprocessor add:
|
|
.Cd "options MATH_EMULATE"
|
|
or
|
|
.Cd "options GPL_MATH_EMULATE"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
driver enables the use of the system's Numeric Processing Extension
|
|
coprocessor,
|
|
if one is present.
|
|
Numeric processing extensions are present in
|
|
systems with
|
|
.Tn 486DX
|
|
CPUs and in systems with
|
|
.Tn 387
|
|
or
|
|
.Tn 487SX
|
|
coprocessors.
|
|
The
|
|
.Nm
|
|
driver is required for proper system functioning regardless
|
|
of whether or not a NPX is present.
|
|
.Pp
|
|
If there is no NPX present in the system, the
|
|
.Dv MATH_EMULATE
|
|
or
|
|
.Dv GPL_MATH_EMULATE
|
|
option must be defined in the kernel configuration
|
|
file.
|
|
It will provide support for the instructions normally executed by the NPX.
|
|
If there is no NPX in the system and the kernel is not built with math
|
|
emulation, the system will not boot.
|
|
.Pp
|
|
You can choose to use a much more fully-featured math emulator (under the
|
|
GPL license) by including the
|
|
.Cd "options GPL_MATH_EMULATE"
|
|
in your kernel
|
|
configuration file instead of the
|
|
.Dv MATH_EMULATE
|
|
option.
|
|
.Pp
|
|
The
|
|
.Pa GENERIC
|
|
kernel configuration uses the
|
|
.Dv MATH_EMULATE
|
|
option.
|
|
.Pp
|
|
The flags for
|
|
.Pa npx0
|
|
are:
|
|
.Pp
|
|
.Bl -tag -width indent -compact
|
|
.It 0x01
|
|
do not use the NPX registers to optimize bcopy.
|
|
.It 0x02
|
|
do not use the NPX registers to optimize bzero.
|
|
.It 0x04
|
|
do not use the NPX registers to optimize copyin or copyout.
|
|
.It 0x08
|
|
use emulator even if hardware FPU is available.
|
|
.El
|
|
.Pp
|
|
The NPX registers are normally used
|
|
to optimize copying and zeroing
|
|
when all of the following conditions are satisfied:
|
|
.Pp
|
|
.Bl -enum -compact
|
|
.It
|
|
.Cd "cpu I586_CPU"
|
|
is an option
|
|
.It
|
|
the CPU is an i586 (perhaps not a Pentium)
|
|
.It
|
|
the probe for
|
|
.Pa npx0
|
|
succeeds
|
|
.It
|
|
INT 16 exception handling works.
|
|
.El
|
|
.Pp
|
|
Then copying and zeroing
|
|
using the NPX registers
|
|
is normally 30-100% faster.
|
|
.Pp
|
|
The flags can be used
|
|
to control cases
|
|
where it does not work or is slower.
|
|
Setting them at boot time
|
|
using userconfig works correctly
|
|
(the optimizations are not used
|
|
until later in the bootstrap
|
|
when
|
|
.Pa npx0
|
|
is attached).
|
|
Flag 0x08 automatically disables the i586 optimized routines.
|
|
.Sh CAVEATS
|
|
The emulator is much slower than the NPX coprocessor.
|
|
This will result in poor floating-point math performance
|
|
if the emulator must be used.
|
|
.Pp
|
|
The non-GPL emulator does not support the whole set of NPX
|
|
instructions.
|
|
It is sufficient for booting and configuring a system, but it cannot
|
|
support a system with normal workload unless care is taken to compile
|
|
the whole system (including third-party packages) with compiler
|
|
options that avoid the use of the non-emulated instructions.
|
|
.Sh BUGS
|
|
There are lots of them, especially on old cheap motherboards.
|
|
In particular, some motherboards do not have the interrupt lines from
|
|
the NPX to the CPU wired properly.
|
|
If this is the case, the emulator must be used if consistent system
|
|
operation is desired.
|
|
.Pp
|
|
When using the default
|
|
.Dv MATH_EMULATE
|
|
option,
|
|
transcendental function instructions are not implemented.
|
|
Emulation of other instructions is suspect.
|