Adjust cache_add calls.
[kopensolaris-gnu/glibc.git] / soft-fp / soft-fp.h
index 3c5072e..3cc8433 100644 (file)
@@ -1,5 +1,6 @@
 /* Software floating-point emulation.
-   Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,1999,2000,2002,2003,2005,2006,2007
+       Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson (rth@cygnus.com),
                  Jakub Jelinek (jj@ultra.linux.cz),
@@ -7,28 +8,45 @@
                  Peter Maydell (pmaydell@chiark.greenend.org.uk).
 
    The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file into
+   combinations with other programs, and to distribute those
+   combinations without any restriction coming from the use of this
+   file.  (The Lesser General Public License restrictions do apply in
+   other respects; for example, they cover modification of the file,
+   and distribution when not linked into a combine executable.)
 
    The GNU C Library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
+   Lesser General Public License for more details.
 
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, write to the Free Software Foundation, Inc.,
-   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
 
 #ifndef SOFT_FP_H
 #define SOFT_FP_H
 
+#ifdef _LIBC
+#include <sfp-machine.h>
+#else
 #include "sfp-machine.h"
+#endif
 
 /* Allow sfp-machine to have its own byte order definitions. */
 #ifndef __BYTE_ORDER
+#ifdef _LIBC
 #include <endian.h>
+#else
+#error "endianness not defined by sfp-machine.h"
+#endif
 #endif
 
 #define _FP_WORKBITS           3
 # define FP_RND_ZERO           1
 # define FP_RND_PINF           2
 # define FP_RND_MINF           3
+#endif
 #ifndef FP_ROUNDMODE
 # define FP_ROUNDMODE          FP_RND_NEAREST
 #endif
-#endif
 
 /* By default don't care about exceptions. */
 #ifndef FP_EX_INVALID
@@ -55,7 +73,7 @@
 #define FP_EX_OVERFLOW         0
 #endif
 #ifndef FP_EX_UNDERFLOW
-#define FP_EX_UNDERFLOW                
+#define FP_EX_UNDERFLOW                0
 #endif
 #ifndef FP_EX_DIVZERO
 #define FP_EX_DIVZERO          0
@@ -74,7 +92,7 @@
 #else
 #define FP_DECL_EX int _fex = 0
 #endif
-  
+
 #ifndef FP_INIT_ROUNDMODE
 #define FP_INIT_ROUNDMODE do {} while (0)
 #endif
 
 #define FP_SET_EXCEPTION(ex)                           \
   _fex |= (ex)
-  
+
 #define FP_UNSET_EXCEPTION(ex)                         \
   _fex &= ~(ex)
 
@@ -107,7 +125,7 @@ do {                                                        \
       _FP_FRAC_ADDI_##wc(X, _FP_WORK_ROUND);           \
 } while (0)
 
-#define _FP_ROUND_ZERO(wc, X)          0
+#define _FP_ROUND_ZERO(wc, X)          (void)0
 
 #define _FP_ROUND_PINF(wc, X)                          \
 do {                                                   \
@@ -159,8 +177,10 @@ do {                                               \
 #define UWtype         _FP_W_TYPE
 #define W_TYPE_SIZE    _FP_W_TYPE_SIZE
 
+typedef int QItype __attribute__((mode(QI)));
 typedef int SItype __attribute__((mode(SI)));
 typedef int DItype __attribute__((mode(DI)));
+typedef unsigned int UQItype __attribute__((mode(QI)));
 typedef unsigned int USItype __attribute__((mode(SI)));
 typedef unsigned int UDItype __attribute__((mode(DI)));
 #if _FP_W_TYPE_SIZE == 32
@@ -169,8 +189,25 @@ typedef unsigned int UHWtype __attribute__((mode(HI)));
 typedef USItype UHWtype;
 #endif
 
+#ifndef CMPtype
+#define CMPtype                int
+#endif
+
+#define SI_BITS                (__CHAR_BIT__ * (int)sizeof(SItype))
+#define DI_BITS                (__CHAR_BIT__ * (int)sizeof(DItype))
+
 #ifndef umul_ppmm
+#ifdef _LIBC
 #include <stdlib/longlong.h>
+#else
+#include "longlong.h"
+#endif
+#endif
+
+#ifdef _LIBC
+#include <stdlib.h>
+#else
+extern void abort (void);
 #endif
 
 #endif