1479f8d22SDavid Schultz /* 2479f8d22SDavid Schultz * Written by J.T. Conklin, Apr 10, 1995 3479f8d22SDavid Schultz * Public domain. 4479f8d22SDavid Schultz */ 5479f8d22SDavid Schultz 6479f8d22SDavid Schultz #include <float.h> 7479f8d22SDavid Schultz 8479f8d22SDavid Schultz static const int map[] = { 9479f8d22SDavid Schultz 1, /* round to nearest */ 10479f8d22SDavid Schultz 3, /* round to zero */ 11479f8d22SDavid Schultz 2, /* round to negative infinity */ 12479f8d22SDavid Schultz 0 /* round to positive infinity */ 13479f8d22SDavid Schultz }; 14479f8d22SDavid Schultz 15479f8d22SDavid Schultz int __flt_rounds(void)16479f8d22SDavid Schultz__flt_rounds(void) 17479f8d22SDavid Schultz { 18479f8d22SDavid Schultz int x; 19479f8d22SDavid Schultz 20479f8d22SDavid Schultz __asm("fnstcw %0" : "=m" (x)); 21479f8d22SDavid Schultz return (map[(x >> 10) & 0x03]); 22479f8d22SDavid Schultz } 23