Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought


     80387(HW)                            UNIX System V



     Name
          80387 - math coprocessor


     Description
          The 80387 is the INTEL math co-processor for the 80386.  The
          kernel tests for the presence of an 80387 at startup.

          If your system has an 80387, you must turn off a  switch  on
          the  main  system board in order to enable 80387 interrupts.
          Check your hardware manual to determine  the  proper  switch
          and  setting.  If your system does not have an 80387, or the
          switch is on, the kernel will run a set of emulator routines
          which are much slower.

          The  C  compiler  available  with  the  program  development
          package generates the appropriate 80387 opcodes.  C routines
          compiled with this compiler have run as much as 200 times as
          fast as the emulated code.  In particular, the standard math
          library routines run considerably  faster  if  you  have  an
          80387.

          The  overflow,  division  by  zero,  and   invalid   operand
          exceptions  return  a  SIGFPE  signal.   This  signal can be
          caught.  The rest of the  80387  floating  point  exceptions
          (underflow,  denormalized  operand, and precision error) are
          masked.


     Notes
          The emulator returns meaningless information  on  divide  by
          zero.

          There is no  obvious  way  to  tell  which  80387  exception
          generated the SIGFPE.

          Because  of  design  defects  in  Intel's  80386  chip   (B1
          stepping), the Intel 80387 math co-processor may not operate
          correctly in some computers.  The problem causes the CPU  to
          hang  when DMA/paging/coprocessor accesses are occurring.  A
          workaround for this problem  has  been  engineered  that  is
          engaged by using a special string at boot time:
          Boot
          : unix a31
          This workaround may not work on all machines; some  hardware
          is   designed  such  that  it  will  not  work.   If  it  is
          successful, the following message is displayed:  A31 CPU bug
          workaround  in  effect  If  unsuccessful,  the  following is
          displayed:  A31 CPU bug workaround  not  possible  for  this
          machine  The  bootstring may also be added to the end of the
          default bootstring (DEFBOOTSTR) found in /etc/default/boot.

          If you cannot use this workaround,  you  have  two  options.
          You may replace the 386 chip with a newer release of the 386
          chip (a D-step part), or you can  bypass  the  387  chip  by
          adding  the  ignorefpu  keyword  in  your  boot  command  as
          follows:
          Boot
          : unix ignorefpu
          This means that the operating system will not  use  the  387
          chip, but you need not remove it physically; the coprocessor
          is still usable from DOS.  To automatically bypass  the  387
          chip  every  time  you  boot  your system, add the ignorefpu
          keyword to the /etc/default/boot  file.   See  boot(HW)  for
          more information.

          For further information, see the Intel  publication:   Intel
          80387 Programmer's Reference Manual.


     (printed 2/15/90)                                  80387(HW)











































































































































































































































































































































































































































































































































Typewritten Software • bear@typewritten.org • Edmonds, WA 98026