[BACK]Return to milieu.h CVS log [TXT][DIR] Up to [local] / sys / lib / libkern

Annotation of sys/lib/libkern/milieu.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: milieu.h,v 1.1 2002/04/28 20:55:14 pvalchev Exp $     */
                      2: /*     $NetBSD: milieu.h,v 1.1 2001/04/26 03:10:47 ross Exp $  */
                      3:
                      4: /* This is a derivative work. */
                      5:
                      6: /*-
                      7:  * Copyright (c) 2001 The NetBSD Foundation, Inc.
                      8:  * All rights reserved.
                      9:  *
                     10:  * This code is derived from software contributed to The NetBSD Foundation
                     11:  * by Ross Harvey.
                     12:  *
                     13:  * Redistribution and use in source and binary forms, with or without
                     14:  * modification, are permitted provided that the following conditions
                     15:  * are met:
                     16:  * 1. Redistributions of source code must retain the above copyright
                     17:  *    notice, this list of conditions and the following disclaimer.
                     18:  * 2. Redistributions in binary form must reproduce the above copyright
                     19:  *    notice, this list of conditions and the following disclaimer in the
                     20:  *    documentation and/or other materials provided with the distribution.
                     21:  * 3. All advertising materials mentioning features or use of this software
                     22:  *    must display the following acknowledgement:
                     23:  *        This product includes software developed by the NetBSD
                     24:  *        Foundation, Inc. and its contributors.
                     25:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     26:  *    contributors may be used to endorse or promote products derived
                     27:  *    from this software without specific prior written permission.
                     28:  *
                     29:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     30:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     31:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     32:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     33:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     34:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     35:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     36:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     37:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     38:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     39:  * POSSIBILITY OF SUCH DAMAGE.
                     40:  */
                     41:
                     42: /*
                     43: ===============================================================================
                     44:
                     45: This C header file is part of TestFloat, Release 2a, a package of programs
                     46: for testing the correctness of floating-point arithmetic complying to the
                     47: IEC/IEEE Standard for Floating-Point.
                     48:
                     49: Written by John R. Hauser.  More information is available through the Web
                     50: page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
                     51:
                     52: THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE.  Although reasonable
                     53: effort has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT
                     54: WILL AT TIMES RESULT IN INCORRECT BEHAVIOR.  USE OF THIS SOFTWARE IS
                     55: RESTRICTED TO PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL
                     56: RESPONSIBILITY FOR ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM
                     57: THEIR OWN USE OF THE SOFTWARE, AND WHO ALSO EFFECTIVELY INDEMNIFY
                     58: (possibly via similar legal warning) JOHN HAUSER AND THE INTERNATIONAL
                     59: COMPUTER SCIENCE INSTITUTE AGAINST ALL LOSSES, COSTS, OR OTHER PROBLEMS
                     60: ARISING FROM THE USE OF THE SOFTWARE BY THEIR CUSTOMERS AND CLIENTS.
                     61:
                     62: Derivative works are acceptable, even for commercial purposes, so long as
                     63: (1) they include prominent notice that the work is derivative, and (2) they
                     64: include prominent notice akin to these four paragraphs for those parts of
                     65: this code that are retained.
                     66:
                     67: ===============================================================================
                     68: */
                     69:
                     70: #ifndef NO_IEEE
                     71:
                     72: #ifndef MILIEU_H
                     73: #define MILIEU_H
                     74:
                     75: #include <sys/types.h>
                     76: #include <sys/endian.h>
                     77:
                     78: enum {
                     79:     FALSE = 0,
                     80:     TRUE  = 1
                     81: };
                     82:
                     83:
                     84: /*
                     85: -------------------------------------------------------------------------------
                     86: One of the macros `BIGENDIAN' or `LITTLEENDIAN' must be defined.
                     87: -------------------------------------------------------------------------------
                     88: */
                     89:
                     90: #if _BYTE_ORDER == _LITTLE_ENDIAN
                     91: #define LITTLEENDIAN
                     92: #else
                     93: #define BIGENDIAN
                     94: #endif
                     95:
                     96: #define BITS64
                     97:
                     98: /*
                     99: -------------------------------------------------------------------------------
                    100: Each of the following `typedef's defines the most convenient type that holds
                    101: integers of at least as many bits as specified.  For example, `uint8' should
                    102: be the most convenient type that can hold unsigned integers of as many as
                    103: 8 bits.  The `flag' type must be able to hold either a 0 or 1.  For most
                    104: implementations of C, `flag', `uint8', and `int8' should all be `typedef'ed
                    105: to the same as `int'.
                    106: -------------------------------------------------------------------------------
                    107: */
                    108: typedef int flag;
                    109: typedef unsigned int uint8;
                    110: typedef signed int int8;
                    111: typedef unsigned int uint16;
                    112: typedef int int16;
                    113: typedef unsigned int uint32;
                    114: typedef signed int int32;
                    115: #ifdef BITS64
                    116: typedef uint64_t uint64;
                    117: typedef int64_t int64;
                    118: #endif
                    119:
                    120: /*
                    121: -------------------------------------------------------------------------------
                    122: Each of the following `typedef's defines a type that holds integers
                    123: of _exactly_ the number of bits specified.  For instance, for most
                    124: implementation of C, `bits16' and `sbits16' should be `typedef'ed to
                    125: `unsigned short int' and `signed short int' (or `short int'), respectively.
                    126: -------------------------------------------------------------------------------
                    127: */
                    128: typedef uint8_t bits8;
                    129: typedef int8_t sbits8;
                    130: typedef uint16_t bits16;
                    131: typedef int16_t sbits16;
                    132: typedef uint32_t bits32;
                    133: typedef int32_t sbits32;
                    134: #ifdef BITS64
                    135: typedef uint64_t bits64;
                    136: typedef int64_t sbits64;
                    137: #endif
                    138:
                    139: #ifdef BITS64
                    140: /*
                    141: -------------------------------------------------------------------------------
                    142: The `LIT64' macro takes as its argument a textual integer literal and
                    143: if necessary ``marks'' the literal as having a 64-bit integer type.
                    144: For example, the GNU C Compiler (`gcc') requires that 64-bit literals be
                    145: appended with the letters `LL' standing for `long long', which is `gcc's
                    146: name for the 64-bit integer type.  Some compilers may allow `LIT64' to be
                    147: defined as the identity macro:  `#define LIT64( a ) a'.
                    148: -------------------------------------------------------------------------------
                    149: */
                    150: #define LIT64( a ) a##LL
                    151: #endif
                    152:
                    153: /*
                    154: -------------------------------------------------------------------------------
                    155: The macro `INLINE' can be used before functions that should be inlined.  If
                    156: a compiler does not support explicit inlining, this macro should be defined
                    157: to be `static'.
                    158: -------------------------------------------------------------------------------
                    159: */
                    160: #define INLINE static inline
                    161:
                    162: #endif
                    163: #endif /* !NO_IEEE */

CVSweb