Standard Libraries for EDK II.

This set of three packages: AppPkg, StdLib, StdLibPrivateInternalFiles; contains the implementation of libraries based upon non-UEFI standards such as ISO/IEC-9899, the library portion of the C Language Standard, POSIX, etc.

AppPkg contains applications that make use of the standard libraries defined in the StdLib Package.

StdLib contains header (include) files and the implementations of the standard libraries.

StdLibPrivateInternalFiles contains files for the exclusive use of the library implementations in StdLib.  These files should never be directly referenced from applications or other code.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11600 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
darylm503
2011-04-27 21:42:16 +00:00
parent 98790d8148
commit 2aa62f2bc9
503 changed files with 67344 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
/* $NetBSD: float.h,v 1.5 2003/10/23 23:26:06 kleink Exp $ */
#ifndef _X86_FLOAT_H_
#define _X86_FLOAT_H_
#if 0 /* Force all compilers to have the same limits */
/* long double and double are the same in Microsoft compilers. */
#if !defined(_MSC_VER) /* Non-Microsoft compiler specifics. */
#define LDBL_MANT_DIG 64
#define LDBL_EPSILON 1.0842021724855044340E-19L
#define LDBL_DIG 18
#define LDBL_MIN_EXP (-16381)
#define LDBL_MIN 3.3621031431120935063E-4932L
#define LDBL_MIN_10_EXP (-4931)
#define LDBL_MAX_EXP 16384
#define LDBL_MAX 1.1897314953572317650E+4932L
#define LDBL_MAX_10_EXP 4932
#define DECIMAL_DIG 21
#endif // !defined(_MSC_VER)
#endif // if 0
#include <sys/float_ieee754.h>
#endif /* _X86_FLOAT_H_ */

107
StdLib/Include/x86/ieee.h Normal file
View File

@@ -0,0 +1,107 @@
/* $NetBSD: ieee.h,v 1.9.32.1 2007/05/07 19:49:10 pavel Exp $ */
/*
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
* This software was developed by the Computer Systems Engineering group
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
* contributed to Berkeley.
*
* All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Lawrence Berkeley Laboratory.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)ieee.h 8.1 (Berkeley) 6/11/93
*/
/*
* ieee.h defines the machine-dependent layout of the machine's IEEE
* floating point. It does *not* define (yet?) any of the rounding
* mode bits, exceptions, and so forth.
*/
#include <sys/ieee754.h>
#define EXT_EXPBITS 15
#define EXT_FRACHBITS 32
#define EXT_FRACLBITS 32
#define EXT_FRACBITS (EXT_FRACLBITS + EXT_FRACHBITS)
#define EXT_TO_ARRAY32(u, a) do { \
(a)[0] = (uint32_t)(u).extu_ext.ext_fracl; \
(a)[1] = (uint32_t)(u).extu_ext.ext_frach; \
} while(/*CONSTCOND*/0)
/*
* struct ieee_ext is the raw storage layout of the 80-bit
* extended-precision type as implemented by the FPU. Per the
* respective ABI specifications, it is followed by a tail padding of
*
* amd64: 48 bits,
* i386: 16 bits.
*/
struct ieee_ext {
u_int ext_fracl:EXT_FRACLBITS;
u_int ext_frach:EXT_FRACHBITS;
#if 0
u_int ext_int:1;
#endif
u_int ext_exp:EXT_EXPBITS;
u_int ext_sign:1;
};
/*
* Floats whose exponent is in [1..INFNAN) (of whatever type) are
* `normal'. Floats whose exponent is INFNAN are either Inf or NaN.
* Floats whose exponent is zero are either zero (iff all fraction
* bits are zero) or subnormal values.
*
* A NaN is a `signalling NaN' if its QUIETNAN bit is clear in its
* high fraction; if the bit is set, it is a `quiet NaN'.
*/
#define EXT_EXP_INFNAN 32767
#if 0
#define SNG_QUIETNAN (1 << 22)
#define DBL_QUIETNAN (1 << 19)
#define EXT_QUIETNAN (1 << 30)
#endif
/*
* Exponent biases.
*/
#define EXT_EXP_BIAS 16383
/*
* Convenience data structures.
*/
union ieee_ext_u {
long double extu_ld;
struct ieee_ext extu_ext;
};

View File

@@ -0,0 +1,77 @@
/** @file
Machine specific values for <limits.h>.
Within this file, the ^ character is used in comments to represent exponentiation.
Thus, 2^7 means "2 to the 7th power", NOT "2 XOR 7".
Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _MACHINE_LIMITS_H
#define _MACHINE_LIMITS_H
/** Number of bits for smallest object that is not a bit-field (byte). **/
#define __CHAR_BIT 8
/** minimum value for an object of type signed char **/
#define __SCHAR_MIN -128 // -(2^7 - 1)
/** maximum value for an object of type signed char **/
#define __SCHAR_MAX +127 // 2^7 - 1
/** maximum value for an object of type unsigned char **/
#define __UCHAR_MAX 255 // 2^8 - 1
/** minimum value for an object of type short int **/
#define __SHRT_MIN -32768 // -(2^15 - 1)
/** maximum value for an object of type short int **/
#define __SHRT_MAX +32767 // 2^15 - 1
/** maximum value for an object of type unsigned short int **/
#define __USHRT_MAX 65535 // 2^16 - 1
/** maximum value for an object of type int **/
#define __INT_MAX +2147483647 // 2^31 - 1
/** minimum value for an object of type int **/
#define __INT_MIN (-2147483647 - 1) // -(2^31 - 1)
/** maximum value for an object of type unsigned int **/
#define __UINT_MAX 0xffffffff // 2^32 - 1
/** minimum value for an object of type long int **/
#define __LONG_MIN (-2147483647L - 1L) // -(2^31 - 1)
/** maximum value for an object of type long int **/
#define __LONG_MAX +2147483647L // 2^31 - 1
/** maximum value for an object of type unsigned long int **/
#define __ULONG_MAX 0xffffffff // 2^32 - 1
/** minimum value for an object of type long long int **/
//#define __LLONG_MIN -9223372036854775808LL // -(2^63 - 1)
//#define __LLONG_MIN ((-9223372036854775807LL)-1) // -(2^63 - 1)
#define __LLONG_MIN (-9223372036854775807LL - 1LL) // -(2^63 - 1)
/** maximum value for an object of type long long int **/
#define __LLONG_MAX 9223372036854775807LL // 2^63 - 1
/** maximum value for an object of type unsigned long long int **/
//#define __ULLONG_MAX 18446744073709551615ULL // 2^64 - 1
#define __ULLONG_MAX 0xFFFFFFFFFFFFFFFFULL // 2^64 - 1
/* Intel extensions to <limits.h> for UEFI */
#define __SHORT_BIT 16
#define __WCHAR_BIT 16
#define __INT_BIT 32
#define __LONG_BIT 32 /* Compiler dependent */
#define __LONG_LONG_BIT 64
#endif /* _MACHINE_LIMITS_H */

View File

@@ -0,0 +1,4 @@
/* $NetBSD: math.h,v 1.2 2003/10/28 00:55:28 kleink Exp $ */
#define __HAVE_LONG_DOUBLE
#define __HAVE_NANF