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 408770e9dbSTijl Coosemans #ifndef _MACHINE__STDINT_H_ 418770e9dbSTijl Coosemans #define _MACHINE__STDINT_H_ 428770e9dbSTijl Coosemans 438770e9dbSTijl Coosemans #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) 448770e9dbSTijl Coosemans 458770e9dbSTijl Coosemans #define INT8_C(c) (c) 468770e9dbSTijl Coosemans #define INT16_C(c) (c) 478770e9dbSTijl Coosemans #define INT32_C(c) (c) 488770e9dbSTijl Coosemans 498770e9dbSTijl Coosemans #define UINT8_C(c) (c) 508770e9dbSTijl Coosemans #define UINT16_C(c) (c) 518770e9dbSTijl Coosemans #define UINT32_C(c) (c ## U) 528770e9dbSTijl Coosemans 538bed40c9SDavid E. O'Brien #ifdef __LP64__ 548770e9dbSTijl Coosemans #define INT64_C(c) (c ## L) 558770e9dbSTijl Coosemans #define UINT64_C(c) (c ## UL) 568770e9dbSTijl Coosemans #else 578770e9dbSTijl Coosemans #define INT64_C(c) (c ## LL) 588770e9dbSTijl Coosemans #define UINT64_C(c) (c ## ULL) 598770e9dbSTijl Coosemans #endif 608770e9dbSTijl Coosemans 618770e9dbSTijl Coosemans #define INTMAX_C(c) INT64_C(c) 628770e9dbSTijl Coosemans #define UINTMAX_C(c) UINT64_C(c) 638770e9dbSTijl Coosemans 648770e9dbSTijl Coosemans #endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ 658770e9dbSTijl Coosemans 668770e9dbSTijl Coosemans #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 678770e9dbSTijl Coosemans 688770e9dbSTijl Coosemans /* 698770e9dbSTijl Coosemans * ISO/IEC 9899:1999 708770e9dbSTijl Coosemans * 7.18.2.1 Limits of exact-width integer types 718770e9dbSTijl Coosemans */ 728770e9dbSTijl Coosemans #define INT8_MIN (-0x7f-1) 738770e9dbSTijl Coosemans #define INT16_MIN (-0x7fff-1) 748770e9dbSTijl Coosemans #define INT32_MIN (-0x7fffffff-1) 758770e9dbSTijl Coosemans 768770e9dbSTijl Coosemans #define INT8_MAX 0x7f 778770e9dbSTijl Coosemans #define INT16_MAX 0x7fff 788770e9dbSTijl Coosemans #define INT32_MAX 0x7fffffff 798770e9dbSTijl Coosemans 808770e9dbSTijl Coosemans #define UINT8_MAX 0xff 818770e9dbSTijl Coosemans #define UINT16_MAX 0xffff 828770e9dbSTijl Coosemans #define UINT32_MAX 0xffffffffU 8321d0ce78STijl Coosemans 848bed40c9SDavid E. O'Brien #ifdef __LP64__ 8521d0ce78STijl Coosemans #define INT64_MIN (-0x7fffffffffffffff-1) 8621d0ce78STijl Coosemans #define INT64_MAX 0x7fffffffffffffff 8721d0ce78STijl Coosemans #define UINT64_MAX 0xffffffffffffffff 8821d0ce78STijl Coosemans #else 8921d0ce78STijl Coosemans #define INT64_MIN (-0x7fffffffffffffffLL-1) 9021d0ce78STijl Coosemans #define INT64_MAX 0x7fffffffffffffffLL 9121d0ce78STijl Coosemans #define UINT64_MAX 0xffffffffffffffffULL 9221d0ce78STijl Coosemans #endif 938770e9dbSTijl Coosemans 948770e9dbSTijl Coosemans /* 958770e9dbSTijl Coosemans * ISO/IEC 9899:1999 968770e9dbSTijl Coosemans * 7.18.2.2 Limits of minimum-width integer types 978770e9dbSTijl Coosemans */ 988770e9dbSTijl Coosemans /* Minimum values of minimum-width signed integer types. */ 998770e9dbSTijl Coosemans #define INT_LEAST8_MIN INT8_MIN 1008770e9dbSTijl Coosemans #define INT_LEAST16_MIN INT16_MIN 1018770e9dbSTijl Coosemans #define INT_LEAST32_MIN INT32_MIN 1028770e9dbSTijl Coosemans #define INT_LEAST64_MIN INT64_MIN 1038770e9dbSTijl Coosemans 1048770e9dbSTijl Coosemans /* Maximum values of minimum-width signed integer types. */ 1058770e9dbSTijl Coosemans #define INT_LEAST8_MAX INT8_MAX 1068770e9dbSTijl Coosemans #define INT_LEAST16_MAX INT16_MAX 1078770e9dbSTijl Coosemans #define INT_LEAST32_MAX INT32_MAX 1088770e9dbSTijl Coosemans #define INT_LEAST64_MAX INT64_MAX 1098770e9dbSTijl Coosemans 1108770e9dbSTijl Coosemans /* Maximum values of minimum-width unsigned integer types. */ 1118770e9dbSTijl Coosemans #define UINT_LEAST8_MAX UINT8_MAX 1128770e9dbSTijl Coosemans #define UINT_LEAST16_MAX UINT16_MAX 1138770e9dbSTijl Coosemans #define UINT_LEAST32_MAX UINT32_MAX 1148770e9dbSTijl Coosemans #define UINT_LEAST64_MAX UINT64_MAX 1158770e9dbSTijl Coosemans 1168770e9dbSTijl Coosemans /* 1178770e9dbSTijl Coosemans * ISO/IEC 9899:1999 1188770e9dbSTijl Coosemans * 7.18.2.3 Limits of fastest minimum-width integer types 1198770e9dbSTijl Coosemans */ 1208770e9dbSTijl Coosemans /* Minimum values of fastest minimum-width signed integer types. */ 1218770e9dbSTijl Coosemans #define INT_FAST8_MIN INT32_MIN 1228770e9dbSTijl Coosemans #define INT_FAST16_MIN INT32_MIN 1238770e9dbSTijl Coosemans #define INT_FAST32_MIN INT32_MIN 1248770e9dbSTijl Coosemans #define INT_FAST64_MIN INT64_MIN 1258770e9dbSTijl Coosemans 1268770e9dbSTijl Coosemans /* Maximum values of fastest minimum-width signed integer types. */ 1278770e9dbSTijl Coosemans #define INT_FAST8_MAX INT32_MAX 1288770e9dbSTijl Coosemans #define INT_FAST16_MAX INT32_MAX 1298770e9dbSTijl Coosemans #define INT_FAST32_MAX INT32_MAX 1308770e9dbSTijl Coosemans #define INT_FAST64_MAX INT64_MAX 1318770e9dbSTijl Coosemans 1328770e9dbSTijl Coosemans /* Maximum values of fastest minimum-width unsigned integer types. */ 1338770e9dbSTijl Coosemans #define UINT_FAST8_MAX UINT32_MAX 1348770e9dbSTijl Coosemans #define UINT_FAST16_MAX UINT32_MAX 1358770e9dbSTijl Coosemans #define UINT_FAST32_MAX UINT32_MAX 1368770e9dbSTijl Coosemans #define UINT_FAST64_MAX UINT64_MAX 1378770e9dbSTijl Coosemans 1388770e9dbSTijl Coosemans /* 1398770e9dbSTijl Coosemans * ISO/IEC 9899:1999 1408770e9dbSTijl Coosemans * 7.18.2.4 Limits of integer types capable of holding object pointers 1418770e9dbSTijl Coosemans */ 1428bed40c9SDavid E. O'Brien #ifdef __LP64__ 1438770e9dbSTijl Coosemans #define INTPTR_MIN INT64_MIN 1448770e9dbSTijl Coosemans #define INTPTR_MAX INT64_MAX 1458770e9dbSTijl Coosemans #define UINTPTR_MAX UINT64_MAX 1468770e9dbSTijl Coosemans #else 1478770e9dbSTijl Coosemans #define INTPTR_MIN INT32_MIN 1488770e9dbSTijl Coosemans #define INTPTR_MAX INT32_MAX 1498770e9dbSTijl Coosemans #define UINTPTR_MAX UINT32_MAX 1508770e9dbSTijl Coosemans #endif 1518770e9dbSTijl Coosemans 1528770e9dbSTijl Coosemans /* 1538770e9dbSTijl Coosemans * ISO/IEC 9899:1999 1548770e9dbSTijl Coosemans * 7.18.2.5 Limits of greatest-width integer types 1558770e9dbSTijl Coosemans */ 1568770e9dbSTijl Coosemans #define INTMAX_MIN INT64_MIN 1578770e9dbSTijl Coosemans #define INTMAX_MAX INT64_MAX 1588770e9dbSTijl Coosemans #define UINTMAX_MAX UINT64_MAX 1598770e9dbSTijl Coosemans 1608770e9dbSTijl Coosemans /* 1618770e9dbSTijl Coosemans * ISO/IEC 9899:1999 1628770e9dbSTijl Coosemans * 7.18.3 Limits of other integer types 1638770e9dbSTijl Coosemans */ 1648bed40c9SDavid E. O'Brien #ifdef __LP64__ 1658770e9dbSTijl Coosemans /* Limits of ptrdiff_t. */ 1668770e9dbSTijl Coosemans #define PTRDIFF_MIN INT64_MIN 1678770e9dbSTijl Coosemans #define PTRDIFF_MAX INT64_MAX 1688770e9dbSTijl Coosemans 1698770e9dbSTijl Coosemans /* Limits of sig_atomic_t. */ 170*eb232cffSBrooks Davis #define SIG_ATOMIC_MIN INT64_MIN 171*eb232cffSBrooks Davis #define SIG_ATOMIC_MAX INT64_MAX 1728770e9dbSTijl Coosemans 1738770e9dbSTijl Coosemans /* Limit of size_t. */ 1748770e9dbSTijl Coosemans #define SIZE_MAX UINT64_MAX 1758770e9dbSTijl Coosemans #else 1768770e9dbSTijl Coosemans #define PTRDIFF_MIN INT32_MIN 1778770e9dbSTijl Coosemans #define PTRDIFF_MAX INT32_MAX 1788770e9dbSTijl Coosemans #define SIG_ATOMIC_MIN INT32_MIN 1798770e9dbSTijl Coosemans #define SIG_ATOMIC_MAX INT32_MAX 1808770e9dbSTijl Coosemans #define SIZE_MAX UINT32_MAX 1818770e9dbSTijl Coosemans #endif 1828770e9dbSTijl Coosemans 1838770e9dbSTijl Coosemans /* Limits of wint_t. */ 1848770e9dbSTijl Coosemans #define WINT_MIN INT32_MIN 1858770e9dbSTijl Coosemans #define WINT_MAX INT32_MAX 1868770e9dbSTijl Coosemans 1878770e9dbSTijl Coosemans #endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ 1888770e9dbSTijl Coosemans 1898770e9dbSTijl Coosemans #endif /* !_MACHINE__STDINT_H_ */ 190