summaryrefslogtreecommitdiffstats
path: root/winsup/mingw/mingwex/fesetexceptflag.c
diff options
context:
space:
mode:
authorDanny Smith <dannysmith@users.sourceforge.net>2002-06-13 10:20:48 +0000
committerDanny Smith <dannysmith@users.sourceforge.net>2002-06-13 10:20:48 +0000
commitdc8971488e7c174ab4084cbdb0a8f12c39b738d7 (patch)
treed679387fa379b6d5feb9756bdd7237347614453b /winsup/mingw/mingwex/fesetexceptflag.c
parent5f74ae83e5fba1ceb73a8d822cbe2b48c619127f (diff)
downloadcygnal-dc8971488e7c174ab4084cbdb0a8f12c39b738d7.tar.gz
cygnal-dc8971488e7c174ab4084cbdb0a8f12c39b738d7.tar.bz2
cygnal-dc8971488e7c174ab4084cbdb0a8f12c39b738d7.zip
* include/_mingw.h: Increment version to 2.0.
* Makefile.in: Ditto. Merge in mingwex branch.
Diffstat (limited to 'winsup/mingw/mingwex/fesetexceptflag.c')
-rw-r--r--winsup/mingw/mingwex/fesetexceptflag.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/winsup/mingw/mingwex/fesetexceptflag.c b/winsup/mingw/mingwex/fesetexceptflag.c
new file mode 100644
index 000000000..7f4b8e562
--- /dev/null
+++ b/winsup/mingw/mingwex/fesetexceptflag.c
@@ -0,0 +1,22 @@
+#include <fenv.h>
+
+/* 7.6.2.4
+ The fesetexceptflag function sets the complete status for those
+ exception flags indicated by the argument excepts, according to the
+ representation in the object pointed to by flagp. The value of
+ *flagp shall have been set by a previous call to fegetexceptflag
+ whose second argument represented at least those exceptions
+ represented by the argument excepts. This function does not raise
+ exceptions, but only sets the state of the flags. */
+
+int fesetexceptflag (const fexcept_t * flagp, int excepts)
+{
+ fenv_t _env;
+
+ excepts &= FE_ALL_EXCEPT;
+ __asm__ volatile ("fnstenv %0;" : "=m" (_env));
+ _env.__status_word &= ~excepts;
+ _env.__status_word |= (*flagp & excepts);
+ __asm__ volatile ("fldenv %0;" : : "m" (_env));
+ return 0;
+}