From fbf33861c19e43ae8519aecc917e28e94cc783a1 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Sat, 24 Oct 2009 13:28:38 +0000 Subject: 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 --- Python/pymath.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'Python/pymath.c') 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) { -- cgit v1.2.1