summaryrefslogtreecommitdiff
path: root/newlib/libc/sys/sysvi386/fpx.c
diff options
context:
space:
mode:
authorChristopher Faylor <cgf@redhat.com>2000-02-17 19:39:46 +0000
committerChristopher Faylor <cgf@redhat.com>2000-02-17 19:39:46 +0000
commit6d491d8ad9122891d1a48447e8c49702eb678921 (patch)
tree45619a131b9f211ceca9fce7a866328344bf00ec /newlib/libc/sys/sysvi386/fpx.c
parentbd592806f45307757c24ec3f75bdefe13abfd51f (diff)
downloadgdb-cvs/SNAPSHOT.tar.gz
import newlib-2000-02-17 snapshotcvs/SNAPSHOT
Diffstat (limited to 'newlib/libc/sys/sysvi386/fpx.c')
-rw-r--r--newlib/libc/sys/sysvi386/fpx.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/newlib/libc/sys/sysvi386/fpx.c b/newlib/libc/sys/sysvi386/fpx.c
new file mode 100644
index 00000000000..d55a1e30ff4
--- /dev/null
+++ b/newlib/libc/sys/sysvi386/fpx.c
@@ -0,0 +1,73 @@
+#include <ieeefp.h>
+#include <machine/registers.h>
+
+
+fp_except _DEFUN(fpsetmask,(newmask),
+ fp_except newmask)
+
+{
+ fp_except oldmask;
+ v60_tkcw_type tkcw;
+
+ sysv60(0, 8, &tkcw);
+ oldmask = tkcw.fp_trap;
+ tkcw.fp_trap = newmask;
+ sysv60(0, 8, &tkcw);
+ return oldmask;
+
+}
+
+fp_except _DEFUN_VOID(fpgetmask)
+{
+ v60_tkcw_type tkcw;
+ sysv60(0, 8, &tkcw);
+ return tkcw.fp_trap;
+}
+
+
+fp_rnd _DEFUN_VOID(fpgetround)
+{
+ v60_tkcw_type tkcw;
+ sysv60(0, 8, &tkcw);
+ return tkcw.fp_rounding;
+}
+
+fp_rnd _DEFUN(fpsetround,(rnd),
+ fp_rnd rnd)
+{
+ fp_rnd oldrnd;
+ v60_tkcw_type tkcw;
+
+ sysv60(0, 8, &tkcw);
+ oldrnd = tkcw.fp_rounding;
+ tkcw.fp_rounding = rnd;
+ sysv60(0, 8, &tkcw);
+ return oldrnd;
+}
+
+
+
+
+
+fp_rdi _DEFUN_VOID(fpgetroundtoi)
+{
+ v60_tkcw_type tkcw;
+ sysv60(0, 8, &tkcw);
+ return tkcw.integer_rounding;
+}
+
+fp_rdi _DEFUN(fpsetroundtoi,(rnd),
+ fp_rdi rnd)
+{
+ fp_rdi oldrnd;
+ v60_tkcw_type tkcw;
+
+ sysv60(0, 8, &tkcw);
+ oldrnd = tkcw.integer_rounding;
+ tkcw.integer_rounding = rnd;
+ sysv60(0, 8, &tkcw);
+ return oldrnd;
+}
+
+
+