From: torvalds@klaava.Helsinki.FI (Linus Torvalds) Subject: Re: HELP: make won't work. Date: 7 Jul 1993 01:23:54 +0300
In article <21c0spINNqop@mojo.eng.umd.edu> rensin@eng.umd.edu (David Rensin) writes:
>
>
>I have a very weird error with make. I am running SLS on a 386 25 with a 287
>co-processor and a 212 mb seagate drive. When I try to use make with a
>Makefile I get "floating point exception(core dumped)". Yet if I try to compile
>the individual programs by hand, (ie. gcc foo.c bar.c baz.c -o biff), it all
>compiles fine. For example, I cannot compile the vgatest program that comes as
>part of the vgalib with the Makefile I CAN do it by hand with both gcc and cc.
While I did put in some hooks to make linux support a 287 coprocessor,
they are not really enough to make the 387 look like a 387. Sorry.
Your best bet is either to use the "no387" flag to lilo at bootup which
will cause you to use math emulation, or to get a 387 if your
motherboard supports it (and if it supports a 287, I can't imagine that
they didn't at least put in the 387 support as well no matter *how* rare
the 387 was at the time of making the motherboard).
As to why you are seeing the above behaviour... I can't be sure, as
there are a number of differences in the behaviour of 287/387
coprocessors: ranging from the format of state saved to various changes
in the control and status words. My guess in this case would be the
coprocessor state saving problems: both make and gcc use the
coprocessor, so running them at the same time could result in the kernel
having to save/restore the coprocessor state, and this may not work as
expected on a 287. I wouldn't be surprised if the 287 gets terminally
confused by being asked to give the coprocessor state in the 32-bit 387
format that linux saves it in..
Linus