[comp.unix.i386] 80486 floating point problems with ISC UNIX 2.0.2

pim@cti-software.nl (Pim Zandbergen) (08/04/90)

Some time ago, ctisbv turned from an Intel 302 (ISA, 25Mhz '386)
into an Intel 401 (ISA, 25Mhz '486). I just swapped the disks
and turned the new machine on.

Everything has run just fine (and a lot faster too), except
there's this real strange thing with floating point exceptions.

Whenever a floating point exception should be generated,
whether exceptions are caught or not,
the process doing the floating point just hangs.
Every other process continues normally.
When I press <DEL>, the process just dies gracefully.

I first found this out running Steven Pemberton's config
program, which tests compiler and hardware properties.
The same binary runs normally on the '386, but hangs
on the '486 with the same OS.

What gives? Do I have a buggy OS or a buggy '486 chip?
Please follow up to the appropriate newsgroup.
-- 
Pim Zandbergen                            domain : pim@cti-software.nl
CTI Software BV                           uucp   : uunet!mcsun!hp4nl!ctisbv!pim
Laan Copes van Cattenburch 70             phone  : +31 70 3542302
2585 GD The Hague, The Netherlands        fax    : +31 70 3512837

amull@Morgan.COM (Andrew P. Mullhaupt) (08/12/90)

In article <1990Aug3.174510.899@cti-software.nl>, pim@cti-software.nl (Pim Zandbergen) writes:
> Everything has run just fine (and a lot faster too), except
> there's this real strange thing with floating point exceptions.
> 
> Whenever a floating point exception should be generated,
> whether exceptions are caught or not,
> the process doing the floating point just hangs.
> Every other process continues normally.
> When I press <DEL>, the process just dies gracefully.

I bet you have the step B5 i486 chip. The thing has a bug where 
it doesn't properly handle floating point exceptions. Your board
is probably not properly designed for the B5 chip, and you may be
thankful for that. "Properly" designed boards for the step B5
include a hardware device which translates any floating point
exception into a parity error so there is no chance that you will
miss that it happened. If you run SCO UNIX, there is _no_ way
you will miss a parity error. It panics the kernel, and swoons
dead away. Now there is no way in UNIX to disable floating point
exceptions without modifying source so you may very well be out of luck
on code where you don't want to modify source.

Intel made deals with vendors to swap the B5 chips with the B6
chips, but the swap program hasn't started yet as far as I can 
tell. (I'm waiting too...)

In order to disable floating point exceptions, you should also
properly set the sticky bits. There should be functions in your
UNIX to do this. In SCO they are something like ieeefpsetsticky()
etc.

Later,
Andrew Mullhaupt