Annotation of sys/lib/libkern/milieu.h, Revision 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