Initial revision
[kopensolaris-gnu/glibc.git] / sysdeps / m68k / fpu / fl.h
1 /* Floating-point constants for the 68881.
2    Copyright (C) 1992 Free Software Foundation, Inc.  */
3
4 /* IGNORE($ This is used internally in the library.  */
5 #include <sysdeps/ieee754/fl.h>
6 /* ansidecl.m4 here inserts the ieee file.  Kludge o rama.
7    $) ENDCOMMENT INCLUDE($sysdeps/ieee754/fl.h$) STARTCOMMENT */
8
9 #if     defined(FLT_ROUNDS) && defined(__GNUC__)
10 #undef  FLT_ROUNDS
11
12 /* Interrogate the 68881 to find the current rounding mode.  */
13
14 static __const __inline int
15 DEFUN_VOID(__flt_rounds)
16 {
17   unsigned long int __fpcr;
18   __asm("fmove%.l fpcr, %0" : "=g" (__fpcr));
19   switch (__fpcr & (1 | 2))
20     {
21     case 0:
22       return _FLT_ROUNDS_TONEAREST;
23     case 1:
24       return _FLT_ROUNDS_TOZERO;
25     case 2:
26       return _FLT_ROUNDS_TONEGINF;
27     case 3:
28       return _FLT_ROUNDS_TOPOSINF;
29     default:
30       return _FLT_ROUNDS_INDETERMINATE;
31     }
32 }
33
34 #define FLT_ROUNDS      (__flt_rounds())
35
36 #endif