summaryrefslogtreecommitdiff
path: root/MacOSX/power/include/lib9.h
diff options
context:
space:
mode:
authorCharles Forsyth <charles.forsyth@gmail.com>2015-07-18 11:46:40 +0100
committerCharles Forsyth <charles.forsyth@gmail.com>2015-07-18 11:46:40 +0100
commit8e8fedb8e7cf4ae3a038c5ac8fbf1b6868e805f1 (patch)
treef02319a2ae87f6f23f3b6b025f20e6ec820d2ad9 /MacOSX/power/include/lib9.h
parent799f9c8c85c76c3ef40091c1f469049343650f16 (diff)
move fp control to lib9
Diffstat (limited to 'MacOSX/power/include/lib9.h')
-rw-r--r--MacOSX/power/include/lib9.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/MacOSX/power/include/lib9.h b/MacOSX/power/include/lib9.h
index b00716b1..88ee728f 100644
--- a/MacOSX/power/include/lib9.h
+++ b/MacOSX/power/include/lib9.h
@@ -487,3 +487,51 @@ extern char *argv0;
#define setbinmode()
+
+/* FPSCR */
+#define FPSFX (1<<31) /* exception summary (sticky) */
+#define FPSEX (1<<30) /* enabled exception summary */
+#define FPSVX (1<<29) /* invalid operation exception summary */
+#define FPSOX (1<<28) /* overflow exception OX (sticky) */
+#define FPSUX (1<<27) /* underflow exception UX (sticky) */
+#define FPSZX (1<<26) /* zero divide exception ZX (sticky) */
+#define FPSXX (1<<25) /* inexact exception XX (sticky) */
+#define FPSVXSNAN (1<<24) /* invalid operation exception for SNaN (sticky) */
+#define FPSVXISI (1<<23) /* invalid operation exception for ∞-∞ (sticky) */
+#define FPSVXIDI (1<<22) /* invalid operation exception for ∞/∞ (sticky) */
+#define FPSVXZDZ (1<<21) /* invalid operation exception for 0/0 (sticky) */
+#define FPSVXIMZ (1<<20) /* invalid operation exception for ∞*0 (sticky) */
+#define FPSVXVC (1<<19) /* invalid operation exception for invalid compare (sticky) */
+#define FPSFR (1<<18) /* fraction rounded */
+#define FPSFI (1<<17) /* fraction inexact */
+#define FPSFPRF (1<<16) /* floating point result class */
+#define FPSFPCC (0xF<<12) /* <, >, =, unordered */
+#define FPVXCVI (1<<8) /* enable exception for invalid integer convert (sticky) */
+
+/* FCR */
+#define FPVE (1<<7) /* invalid operation exception enable */
+#define FPOVFL (1<<6) /* enable overflow exceptions */
+#define FPUNFL (1<<5) /* enable underflow */
+#define FPZDIV (1<<4) /* enable zero divide */
+#define FPINEX (1<<3) /* enable inexact exceptions */
+#define FPRMASK (3<<0) /* rounding mode */
+#define FPRNR (0<<0)
+#define FPRZ (1<<0)
+#define FPRPINF (2<<0)
+#define FPRNINF (3<<0)
+#define FPPEXT 0
+#define FPPSGL 0
+#define FPPDBL 0
+#define FPPMASK 0
+#define FPINVAL FPVE
+/* FSR */
+#define FPAOVFL FPSOX
+#define FPAINEX FPSXX
+#define FPAUNFL FPSUX
+#define FPAZDIV FPSZX
+#define FPAINVAL FPSVX
+
+extern void setfcr(ulong);
+extern void setfsr(ulong);
+extern ulong getfcr(void):
+extern ulong getfsr(void);