summaryrefslogtreecommitdiff
path: root/Python/pymath.c
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2009-10-24 13:28:38 +0000
committerMark Dickinson <dickinsm@gmail.com>2009-10-24 13:28:38 +0000
commitfbf33861c19e43ae8519aecc917e28e94cc783a1 (patch)
treebf23e23d009897b3b89b140d9223276d34cc4f2f /Python/pymath.c
parentd5a92874ae577e8b31b34bc41b4570dd94a849ff (diff)
downloadcpython-fbf33861c19e43ae8519aecc917e28e94cc783a1.tar.gz
Issue #7117 (backport py3k float repr) continued:
- add double endianness detection to configure script - add configure-time check to see whether we can use inline assembly to get and set x87 control word in configure script - add functions to get and set x87 control word in Python/pymath.c - add pyport.h logic to determine whether it's safe to use the short float repr or not
Diffstat (limited to 'Python/pymath.c')
-rw-r--r--Python/pymath.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/Python/pymath.c b/Python/pymath.c
index 643805856d..db2920ce20 100644
--- a/Python/pymath.c
+++ b/Python/pymath.c
@@ -13,6 +13,24 @@ double _Py_force_double(double x)
}
#endif
+#ifdef HAVE_GCC_ASM_FOR_X87
+
+/* inline assembly for getting and setting the 387 FPU control word on
+ gcc/x86 */
+
+unsigned short _Py_get_387controlword(void) {
+ unsigned short cw;
+ __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
+ return cw;
+}
+
+void _Py_set_387controlword(unsigned short cw) {
+ __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
+}
+
+#endif
+
+
#ifndef HAVE_HYPOT
double hypot(double x, double y)
{