On Thu, 6 Mar 2008, David Schultz wrote:
On Thu, Mar 06, 2008, Peter Jeremy wrote:
On Wed, Mar 05, 2008 at 10:32:46PM -0500, David Schultz wrote:
gcc doesn't get any of this right. FreeBSD/i386 fixes the problem
for /doubles/ by setting the i387 to use 53-bit precision.
Note that FreeBSD/amd64 does not do this when running i386 binaries
so you can get discrepancies between running the same program natively
vs running it in compatibility mode.
On my list of things to fix.
Good point. I don't think i386 ever got fixed to do the
appropriate mode change for Linux binaries, either, BTW.
Actually, someone named das fixed this on 2005/02/06 in rev.1.136 of
i386/linux/linux_sysvec.c, but the fix is buggy -- it accesses the
i387 directly and thus causes npxdna() traps which should cause panics
since direct access to the i387 is not permitted (it should use
npxinit(), which was originally for the corresponding initialization
in setregs() but is no longer used there since the normal initialization
is now virtual).
Bruce
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"