Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Feb 1995 06:39:12 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        freebsd-bugs@FreeBSD.org, seb@erix.ericsson.se
Subject:   Re: npxprobe1() machine freezes
Message-ID:  <199502211939.GAA21457@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>The probing for npx0 causes my machine to completely lock up. The
>cause seems to be the fnop() that has been added in npxprobe1() (in
>i386/isa/npx.c) since 2.0-RELEASE. (I am running 950210-SNAP now). It
>works just fine if you comment out the fnop(). My machine is an old
>386 (Chips&Technologies chipset, AMI BIOS, and no math co-processor).
                                                ??

This should be fixed, sort of, in the current sources.  The `outb(0xf0,
0);' instruction should be before the group of 3 floating point
instructions ending with the fnop() instead of after.  It's interesting
that removing the fnop() also fixes the problem.  The `no-wait' floating
point instructions apparently work like they are supposed to.  Does
replacing the fnop() by an fwait() also fix the problem?  I expect not.

The fnop() is wrong for another reason.  It messes up the FPU cs:eip and
opcode so you can't see where the exception occurred.  Deleting it
entirely is a good fix.  I may delete the other two floating point
instructions too.  They only allow signal handlers to do the wrong
thing (to return so that execution continues with bogus values on the
FPU stack).

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199502211939.GAA21457>