cvs commit: src/lib/libc/amd64/gen _setjmp.S setjmp.S
David Schultz
das at FreeBSD.org
Sat Jun 28 17:55:48 UTC 2008
das 2008-06-28 17:55:43 UTC
FreeBSD src repository
Modified files:
lib/libc/amd64/gen _setjmp.S setjmp.S
Log:
SVN rev 180080 on 2008-06-28 17:55:43Z by das
Two FP-related setjmp/longjmp changes:
1. Save and restore the control part of the MXCSR in addition to the
i387 control word to ensure that the two are consistent.
Note that standards don't require longjmp to restore either control
word, and none of Linux, MacOS X 10.3 and earlier, NetBSD, OpenBSD,
or Solaris do it. However, it is historical FreeBSD behavior, and
bde points out that it is needed to make longjmping out of a signal
handler work properly, given the way FreeBSD clobbers the FPU state
on signal handler entry.
2. Don't clobber the FPU exception flags in longjmp. C99 requires them
to remain unchanged.
Revision Changes Path
1.20 +10 -1 src/lib/libc/amd64/gen/_setjmp.S
1.28 +10 -1 src/lib/libc/amd64/gen/setjmp.S
More information about the cvs-src
mailing list