18770e9dbSTijl Coosemans /*- 2ebf5747bSPedro F. Giffuni * SPDX-License-Identifier: BSD-4-Clause 3ebf5747bSPedro F. Giffuni * 48770e9dbSTijl Coosemans * Copyright (c) 2001, 2002 Mike Barcroft <mike@FreeBSD.org> 58770e9dbSTijl Coosemans * Copyright (c) 2001 The NetBSD Foundation, Inc. 68770e9dbSTijl Coosemans * All rights reserved. 78770e9dbSTijl Coosemans * 88770e9dbSTijl Coosemans * This code is derived from software contributed to The NetBSD Foundation 98770e9dbSTijl Coosemans * by Klaus Klein. 108770e9dbSTijl Coosemans * 118770e9dbSTijl Coosemans * Redistribution and use in source and binary forms, with or without 128770e9dbSTijl Coosemans * modification, are permitted provided that the following conditions 138770e9dbSTijl Coosemans * are met: 148770e9dbSTijl Coosemans * 1. Redistributions of source code must retain the above copyright 158770e9dbSTijl Coosemans * notice, this list of conditions and the following disclaimer. 168770e9dbSTijl Coosemans * 2. Redistributions in binary form must reproduce the above copyright 178770e9dbSTijl Coosemans * notice, this list of conditions and the following disclaimer in the 188770e9dbSTijl Coosemans * documentation and/or other materials provided with the distribution. 198770e9dbSTijl Coosemans * 3. All advertising materials mentioning features or use of this software 208770e9dbSTijl Coosemans * must display the following acknowledgement: 218770e9dbSTijl Coosemans * This product includes software developed by the NetBSD 228770e9dbSTijl Coosemans * Foundation, Inc. and its contributors. 238770e9dbSTijl Coosemans * 4. Neither the name of The NetBSD Foundation nor the names of its 248770e9dbSTijl Coosemans * contributors may be used to endorse or promote products derived 258770e9dbSTijl Coosemans * from this software without specific prior written permission. 268770e9dbSTijl Coosemans * 278770e9dbSTijl Coosemans * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 288770e9dbSTijl Coosemans * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 298770e9dbSTijl Coosemans * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 308770e9dbSTijl Coosemans * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 318770e9dbSTijl Coosemans * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 328770e9dbSTijl Coosemans * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 338770e9dbSTijl Coosemans * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 348770e9dbSTijl Coosemans * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 358770e9dbSTijl Coosemans * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 368770e9dbSTijl Coosemans * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 378770e9dbSTijl Coosemans * POSSIBILITY OF SUCH DAMAGE. 388770e9dbSTijl Coosemans * 398770e9dbSTijl Coosemans * $FreeBSD$ 408770e9dbSTijl Coosemans */ 418770e9dbSTijl Coosemans 428770e9dbSTijl Coosemans #ifndef _MACHINE__STDINT_H_ 438770e9dbSTijl Coosemans #define _MACHINE__STDINT_H_ 448770e9dbSTijl Coosemans 458770e9dbSTijl Coosemans #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) 468770e9dbSTijl Coosemans 478770e9dbSTijl Coosemans #define INT8_C(c) (c) 488770e9dbSTijl Coosemans #define INT16_C(c) (c) 498770e9dbSTijl Coosemans #define INT32_C(c) (c) 508770e9dbSTijl Coosemans 518770e9dbSTijl Coosemans #define UINT8_C(c) (c) 528770e9dbSTijl Coosemans #define UINT16_C(c) (c) 538770e9dbSTijl Coosemans #define UINT32_C(c) (c ## U) 548770e9dbSTijl Coosemans 558bed40c9SDavid E. O'Brien #ifdef __LP64__ 568770e9dbSTijl Coosemans #define INT64_C(c) (c ## L) 578770e9dbSTijl Coosemans #define UINT64_C(c) (c ## UL) 588770e9dbSTijl Coosemans #else 598770e9dbSTijl Coosemans #define INT64_C(c) (c ## LL) 608770e9dbSTijl Coosemans #define UINT64_C(c) (c ## ULL) 618770e9dbSTijl Coosemans #endif 628770e9dbSTijl Coosemans 638770e9dbSTijl Coosemans #define INTMAX_C(c) INT64_C(c) 648770e9dbSTijl Coosemans #define UINTMAX_C(c) UINT64_C(c) 658770e9dbSTijl Coosemans 668770e9dbSTijl Coosemans #endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ 678770e9dbSTijl Coosemans 688770e9dbSTijl Coosemans #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 698770e9dbSTijl Coosemans 708770e9dbSTijl Coosemans /* 718770e9dbSTijl Coosemans * ISO/IEC 9899:1999 728770e9dbSTijl Coosemans * 7.18.2.1 Limits of exact-width integer types 738770e9dbSTijl Coosemans */ 748770e9dbSTijl Coosemans #define INT8_MIN (-0x7f-1) 758770e9dbSTijl Coosemans #define INT16_MIN (-0x7fff-1) 768770e9dbSTijl Coosemans #define INT32_MIN (-0x7fffffff-1) 778770e9dbSTijl Coosemans 788770e9dbSTijl Coosemans #define INT8_MAX 0x7f 798770e9dbSTijl Coosemans #define INT16_MAX 0x7fff 808770e9dbSTijl Coosemans #define INT32_MAX 0x7fffffff 818770e9dbSTijl Coosemans 828770e9dbSTijl Coosemans #define UINT8_MAX 0xff 838770e9dbSTijl Coosemans #define UINT16_MAX 0xffff 848770e9dbSTijl Coosemans #define UINT32_MAX 0xffffffffU 8521d0ce78STijl Coosemans 868bed40c9SDavid E. O'Brien #ifdef __LP64__ 8721d0ce78STijl Coosemans #define INT64_MIN (-0x7fffffffffffffff-1) 8821d0ce78STijl Coosemans #define INT64_MAX 0x7fffffffffffffff 8921d0ce78STijl Coosemans #define UINT64_MAX 0xffffffffffffffff 9021d0ce78STijl Coosemans #else 9121d0ce78STijl Coosemans #define INT64_MIN (-0x7fffffffffffffffLL-1) 9221d0ce78STijl Coosemans #define INT64_MAX 0x7fffffffffffffffLL 9321d0ce78STijl Coosemans #define UINT64_MAX 0xffffffffffffffffULL 9421d0ce78STijl Coosemans #endif 958770e9dbSTijl Coosemans 968770e9dbSTijl Coosemans /* 978770e9dbSTijl Coosemans * ISO/IEC 9899:1999 988770e9dbSTijl Coosemans * 7.18.2.2 Limits of minimum-width integer types 998770e9dbSTijl Coosemans */ 1008770e9dbSTijl Coosemans /* Minimum values of minimum-width signed integer types. */ 1018770e9dbSTijl Coosemans #define INT_LEAST8_MIN INT8_MIN 1028770e9dbSTijl Coosemans #define INT_LEAST16_MIN INT16_MIN 1038770e9dbSTijl Coosemans #define INT_LEAST32_MIN INT32_MIN 1048770e9dbSTijl Coosemans #define INT_LEAST64_MIN INT64_MIN 1058770e9dbSTijl Coosemans 1068770e9dbSTijl Coosemans /* Maximum values of minimum-width signed integer types. */ 1078770e9dbSTijl Coosemans #define INT_LEAST8_MAX INT8_MAX 1088770e9dbSTijl Coosemans #define INT_LEAST16_MAX INT16_MAX 1098770e9dbSTijl Coosemans #define INT_LEAST32_MAX INT32_MAX 1108770e9dbSTijl Coosemans #define INT_LEAST64_MAX INT64_MAX 1118770e9dbSTijl Coosemans 1128770e9dbSTijl Coosemans /* Maximum values of minimum-width unsigned integer types. */ 1138770e9dbSTijl Coosemans #define UINT_LEAST8_MAX UINT8_MAX 1148770e9dbSTijl Coosemans #define UINT_LEAST16_MAX UINT16_MAX 1158770e9dbSTijl Coosemans #define UINT_LEAST32_MAX UINT32_MAX 1168770e9dbSTijl Coosemans #define UINT_LEAST64_MAX UINT64_MAX 1178770e9dbSTijl Coosemans 1188770e9dbSTijl Coosemans /* 1198770e9dbSTijl Coosemans * ISO/IEC 9899:1999 1208770e9dbSTijl Coosemans * 7.18.2.3 Limits of fastest minimum-width integer types 1218770e9dbSTijl Coosemans */ 1228770e9dbSTijl Coosemans /* Minimum values of fastest minimum-width signed integer types. */ 1238770e9dbSTijl Coosemans #define INT_FAST8_MIN INT32_MIN 1248770e9dbSTijl Coosemans #define INT_FAST16_MIN INT32_MIN 1258770e9dbSTijl Coosemans #define INT_FAST32_MIN INT32_MIN 1268770e9dbSTijl Coosemans #define INT_FAST64_MIN INT64_MIN 1278770e9dbSTijl Coosemans 1288770e9dbSTijl Coosemans /* Maximum values of fastest minimum-width signed integer types. */ 1298770e9dbSTijl Coosemans #define INT_FAST8_MAX INT32_MAX 1308770e9dbSTijl Coosemans #define INT_FAST16_MAX INT32_MAX 1318770e9dbSTijl Coosemans #define INT_FAST32_MAX INT32_MAX 1328770e9dbSTijl Coosemans #define INT_FAST64_MAX INT64_MAX 1338770e9dbSTijl Coosemans 1348770e9dbSTijl Coosemans /* Maximum values of fastest minimum-width unsigned integer types. */ 1358770e9dbSTijl Coosemans #define UINT_FAST8_MAX UINT32_MAX 1368770e9dbSTijl Coosemans #define UINT_FAST16_MAX UINT32_MAX 1378770e9dbSTijl Coosemans #define UINT_FAST32_MAX UINT32_MAX 1388770e9dbSTijl Coosemans #define UINT_FAST64_MAX UINT64_MAX 1398770e9dbSTijl Coosemans 1408770e9dbSTijl Coosemans /* 1418770e9dbSTijl Coosemans * ISO/IEC 9899:1999 1428770e9dbSTijl Coosemans * 7.18.2.4 Limits of integer types capable of holding object pointers 1438770e9dbSTijl Coosemans */ 1448bed40c9SDavid E. O'Brien #ifdef __LP64__ 1458770e9dbSTijl Coosemans #define INTPTR_MIN INT64_MIN 1468770e9dbSTijl Coosemans #define INTPTR_MAX INT64_MAX 1478770e9dbSTijl Coosemans #define UINTPTR_MAX UINT64_MAX 1488770e9dbSTijl Coosemans #else 1498770e9dbSTijl Coosemans #define INTPTR_MIN INT32_MIN 1508770e9dbSTijl Coosemans #define INTPTR_MAX INT32_MAX 1518770e9dbSTijl Coosemans #define UINTPTR_MAX UINT32_MAX 1528770e9dbSTijl Coosemans #endif 1538770e9dbSTijl Coosemans 1548770e9dbSTijl Coosemans /* 1558770e9dbSTijl Coosemans * ISO/IEC 9899:1999 1568770e9dbSTijl Coosemans * 7.18.2.5 Limits of greatest-width integer types 1578770e9dbSTijl Coosemans */ 1588770e9dbSTijl Coosemans #define INTMAX_MIN INT64_MIN 1598770e9dbSTijl Coosemans #define INTMAX_MAX INT64_MAX 1608770e9dbSTijl Coosemans #define UINTMAX_MAX UINT64_MAX 1618770e9dbSTijl Coosemans 1628770e9dbSTijl Coosemans /* 1638770e9dbSTijl Coosemans * ISO/IEC 9899:1999 1648770e9dbSTijl Coosemans * 7.18.3 Limits of other integer types 1658770e9dbSTijl Coosemans */ 1668bed40c9SDavid E. O'Brien #ifdef __LP64__ 1678770e9dbSTijl Coosemans /* Limits of ptrdiff_t. */ 1688770e9dbSTijl Coosemans #define PTRDIFF_MIN INT64_MIN 1698770e9dbSTijl Coosemans #define PTRDIFF_MAX INT64_MAX 1708770e9dbSTijl Coosemans 1718770e9dbSTijl Coosemans /* Limits of sig_atomic_t. */ 172*eb232cffSBrooks Davis #define SIG_ATOMIC_MIN INT64_MIN 173*eb232cffSBrooks Davis #define SIG_ATOMIC_MAX INT64_MAX 1748770e9dbSTijl Coosemans 1758770e9dbSTijl Coosemans /* Limit of size_t. */ 1768770e9dbSTijl Coosemans #define SIZE_MAX UINT64_MAX 1778770e9dbSTijl Coosemans #else 1788770e9dbSTijl Coosemans #define PTRDIFF_MIN INT32_MIN 1798770e9dbSTijl Coosemans #define PTRDIFF_MAX INT32_MAX 1808770e9dbSTijl Coosemans #define SIG_ATOMIC_MIN INT32_MIN 1818770e9dbSTijl Coosemans #define SIG_ATOMIC_MAX INT32_MAX 1828770e9dbSTijl Coosemans #define SIZE_MAX UINT32_MAX 1838770e9dbSTijl Coosemans #endif 1848770e9dbSTijl Coosemans 1858770e9dbSTijl Coosemans /* Limits of wint_t. */ 1868770e9dbSTijl Coosemans #define WINT_MIN INT32_MIN 1878770e9dbSTijl Coosemans #define WINT_MAX INT32_MAX 1888770e9dbSTijl Coosemans 1898770e9dbSTijl Coosemans #endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ 1908770e9dbSTijl Coosemans 1918770e9dbSTijl Coosemans #endif /* !_MACHINE__STDINT_H_ */ 192