
The following is a kludge:

I made the enclosed changes to npx.c to force the npx driver
to fail to detect the FPU.  This results in the kernel using
software FPU emulation, and the attached program no longer
freezes the system.

For those interested, if you have an FPU the npx driver will
use it regardless of the GPL_MATH_EMULATE or MATH_EMULATE
options being present in your config.

how to apply the patch:

cd /usr/src
patch <thepatchbelow
cd sys/i386/conf
add
options         NOFPU
options         GPL_MATH_EMULATE        #Support for x87 emulation 
or
options         NOFPU
options         MATH_EMULATE            #Support for x87 emulation  
(see LINT for a description of the difference)
to your config file
and then config and build a new kernel.

-- 
Brian Litzinger
brian@mediacity.com

----------------------The 'evil' program------------------
/* I lost who posted this, but his credit belongs here */
#include <sys/types.h>
#include <signal.h>
void blech() { exit(3); }
main()
{
        int i32;
        double f;
        int result = 0;
        signal(SIGFPE, blech);
        f = (double) 0x7fffffff;
        f = 10 * f;
        i32  = (int) f;
        if (i32 != (int) f)
                result |= 1;
        exit(result);
}
-----------------The patch to sys/i386/isa/npx.c--------------
*** sys/i386/isa/npx.c.orig	Thu Jan 23 14:33:20 1997
--- sys/i386/isa/npx.c	Thu Jan 23 12:51:36 1997
***************
*** 271,276 ****
--- 271,277 ----
  npxprobe1(dvp)
  	struct isa_device *dvp;
  {
+ #ifndef NOFPU
  	u_short control;
  	u_short status;
  
***************
*** 368,373 ****
--- 369,375 ----
  			 */
  		}
  	}
+ #endif /* !NOFPU */
  	/*
  	 * Probe failed, but we want to get to npxattach to initialize the
  	 * emulator and say that it has been installed.  XXX handle devices
-------------------cut here---------------------------
