1a9643ea8Slogwang /*- 2*22ce4affSfengbojiang * SPDX-License-Identifier: BSD-4-Clause 3*22ce4affSfengbojiang * 4a9643ea8Slogwang * Copyright (c) 2001, 2002 Mike Barcroft <[email protected]> 5a9643ea8Slogwang * Copyright (c) 2001 The NetBSD Foundation, Inc. 6a9643ea8Slogwang * All rights reserved. 7a9643ea8Slogwang * 8a9643ea8Slogwang * This code is derived from software contributed to The NetBSD Foundation 9a9643ea8Slogwang * by Klaus Klein. 10a9643ea8Slogwang * 11a9643ea8Slogwang * Redistribution and use in source and binary forms, with or without 12a9643ea8Slogwang * modification, are permitted provided that the following conditions 13a9643ea8Slogwang * are met: 14a9643ea8Slogwang * 1. Redistributions of source code must retain the above copyright 15a9643ea8Slogwang * notice, this list of conditions and the following disclaimer. 16a9643ea8Slogwang * 2. Redistributions in binary form must reproduce the above copyright 17a9643ea8Slogwang * notice, this list of conditions and the following disclaimer in the 18a9643ea8Slogwang * documentation and/or other materials provided with the distribution. 19a9643ea8Slogwang * 3. All advertising materials mentioning features or use of this software 20a9643ea8Slogwang * must display the following acknowledgement: 21a9643ea8Slogwang * This product includes software developed by the NetBSD 22a9643ea8Slogwang * Foundation, Inc. and its contributors. 23a9643ea8Slogwang * 4. Neither the name of The NetBSD Foundation nor the names of its 24a9643ea8Slogwang * contributors may be used to endorse or promote products derived 25a9643ea8Slogwang * from this software without specific prior written permission. 26a9643ea8Slogwang * 27a9643ea8Slogwang * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 28a9643ea8Slogwang * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 29a9643ea8Slogwang * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 30a9643ea8Slogwang * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 31a9643ea8Slogwang * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 32a9643ea8Slogwang * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 33a9643ea8Slogwang * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 34a9643ea8Slogwang * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 35a9643ea8Slogwang * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 36a9643ea8Slogwang * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 37a9643ea8Slogwang * POSSIBILITY OF SUCH DAMAGE. 38a9643ea8Slogwang * 39a9643ea8Slogwang * from: src/sys/i386/include/_stdint.h,v 1.2 2004/05/18 16:04:57 stefanf 40a9643ea8Slogwang * $FreeBSD$ 41a9643ea8Slogwang */ 42a9643ea8Slogwang 43a9643ea8Slogwang #ifndef _MACHINE__STDINT_H_ 44a9643ea8Slogwang #define _MACHINE__STDINT_H_ 45a9643ea8Slogwang 46a9643ea8Slogwang #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) 47a9643ea8Slogwang 48a9643ea8Slogwang #define INT8_C(c) (c) 49a9643ea8Slogwang #define INT16_C(c) (c) 50a9643ea8Slogwang #define INT32_C(c) (c) 51a9643ea8Slogwang 52a9643ea8Slogwang #define UINT8_C(c) (c) 53a9643ea8Slogwang #define UINT16_C(c) (c) 54a9643ea8Slogwang #define UINT32_C(c) (c ## U) 55a9643ea8Slogwang 56a9643ea8Slogwang #ifdef __mips_n64 57a9643ea8Slogwang #define INT64_C(c) (c ## L) 58a9643ea8Slogwang #define UINT64_C(c) (c ## UL) 59a9643ea8Slogwang #else 60a9643ea8Slogwang #define INT64_C(c) (c ## LL) 61a9643ea8Slogwang #define UINT64_C(c) (c ## ULL) 62a9643ea8Slogwang #endif 63a9643ea8Slogwang 64a9643ea8Slogwang #define INTMAX_C(c) INT64_C(c) 65a9643ea8Slogwang #define UINTMAX_C(c) UINT64_C(c) 66a9643ea8Slogwang 67a9643ea8Slogwang #endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ 68a9643ea8Slogwang 69a9643ea8Slogwang #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) 70a9643ea8Slogwang 71a9643ea8Slogwang #ifndef __INT64_C 72a9643ea8Slogwang #ifdef __mips_n64 73a9643ea8Slogwang #define __INT64_C(c) (c ## L) 74a9643ea8Slogwang #define __UINT64_C(c) (c ## UL) 75a9643ea8Slogwang #else 76a9643ea8Slogwang #define __INT64_C(c) (c ## LL) 77a9643ea8Slogwang #define __UINT64_C(c) (c ## ULL) 78a9643ea8Slogwang #endif 79a9643ea8Slogwang #endif 80a9643ea8Slogwang 81a9643ea8Slogwang /* 82a9643ea8Slogwang * ISO/IEC 9899:1999 83a9643ea8Slogwang * 7.18.2.1 Limits of exact-width integer types 84a9643ea8Slogwang */ 85a9643ea8Slogwang /* Minimum values of exact-width signed integer types. */ 86a9643ea8Slogwang #define INT8_MIN (-0x7f-1) 87a9643ea8Slogwang #define INT16_MIN (-0x7fff-1) 88a9643ea8Slogwang #define INT32_MIN (-0x7fffffff-1) 89a9643ea8Slogwang #define INT64_MIN (-__INT64_C(0x7fffffffffffffff)-1) 90a9643ea8Slogwang 91a9643ea8Slogwang /* Maximum values of exact-width signed integer types. */ 92a9643ea8Slogwang #define INT8_MAX 0x7f 93a9643ea8Slogwang #define INT16_MAX 0x7fff 94a9643ea8Slogwang #define INT32_MAX 0x7fffffff 95a9643ea8Slogwang #define INT64_MAX __INT64_C(0x7fffffffffffffff) 96a9643ea8Slogwang 97a9643ea8Slogwang /* Maximum values of exact-width unsigned integer types. */ 98a9643ea8Slogwang #define UINT8_MAX 0xff 99a9643ea8Slogwang #define UINT16_MAX 0xffff 100a9643ea8Slogwang #define UINT32_MAX 0xffffffff 101a9643ea8Slogwang #define UINT64_MAX __UINT64_C(0xffffffffffffffff) 102a9643ea8Slogwang 103a9643ea8Slogwang /* 104a9643ea8Slogwang * ISO/IEC 9899:1999 105a9643ea8Slogwang * 7.18.2.2 Limits of minimum-width integer types 106a9643ea8Slogwang */ 107a9643ea8Slogwang /* Minimum values of minimum-width signed integer types. */ 108a9643ea8Slogwang #define INT_LEAST8_MIN INT8_MIN 109a9643ea8Slogwang #define INT_LEAST16_MIN INT16_MIN 110a9643ea8Slogwang #define INT_LEAST32_MIN INT32_MIN 111a9643ea8Slogwang #define INT_LEAST64_MIN INT64_MIN 112a9643ea8Slogwang 113a9643ea8Slogwang /* Maximum values of minimum-width signed integer types. */ 114a9643ea8Slogwang #define INT_LEAST8_MAX INT8_MAX 115a9643ea8Slogwang #define INT_LEAST16_MAX INT16_MAX 116a9643ea8Slogwang #define INT_LEAST32_MAX INT32_MAX 117a9643ea8Slogwang #define INT_LEAST64_MAX INT64_MAX 118a9643ea8Slogwang 119a9643ea8Slogwang /* Maximum values of minimum-width unsigned integer types. */ 120a9643ea8Slogwang #define UINT_LEAST8_MAX UINT8_MAX 121a9643ea8Slogwang #define UINT_LEAST16_MAX UINT16_MAX 122a9643ea8Slogwang #define UINT_LEAST32_MAX UINT32_MAX 123a9643ea8Slogwang #define UINT_LEAST64_MAX UINT64_MAX 124a9643ea8Slogwang 125a9643ea8Slogwang /* 126a9643ea8Slogwang * ISO/IEC 9899:1999 127a9643ea8Slogwang * 7.18.2.3 Limits of fastest minimum-width integer types 128a9643ea8Slogwang */ 129a9643ea8Slogwang /* Minimum values of fastest minimum-width signed integer types. */ 130a9643ea8Slogwang #define INT_FAST8_MIN INT32_MIN 131a9643ea8Slogwang #define INT_FAST16_MIN INT32_MIN 132a9643ea8Slogwang #define INT_FAST32_MIN INT32_MIN 133a9643ea8Slogwang #define INT_FAST64_MIN INT64_MIN 134a9643ea8Slogwang 135a9643ea8Slogwang /* Maximum values of fastest minimum-width signed integer types. */ 136a9643ea8Slogwang #define INT_FAST8_MAX INT32_MAX 137a9643ea8Slogwang #define INT_FAST16_MAX INT32_MAX 138a9643ea8Slogwang #define INT_FAST32_MAX INT32_MAX 139a9643ea8Slogwang #define INT_FAST64_MAX INT64_MAX 140a9643ea8Slogwang 141a9643ea8Slogwang /* Maximum values of fastest minimum-width unsigned integer types. */ 142a9643ea8Slogwang #define UINT_FAST8_MAX UINT32_MAX 143a9643ea8Slogwang #define UINT_FAST16_MAX UINT32_MAX 144a9643ea8Slogwang #define UINT_FAST32_MAX UINT32_MAX 145a9643ea8Slogwang #define UINT_FAST64_MAX UINT64_MAX 146a9643ea8Slogwang 147a9643ea8Slogwang /* 148a9643ea8Slogwang * ISO/IEC 9899:1999 149a9643ea8Slogwang * 7.18.2.4 Limits of integer types capable of holding object pointers 150a9643ea8Slogwang */ 151a9643ea8Slogwang #ifdef __mips_n64 152a9643ea8Slogwang #define INTPTR_MIN INT64_MIN 153a9643ea8Slogwang #define INTPTR_MAX INT64_MAX 154a9643ea8Slogwang #define UINTPTR_MAX UINT64_MAX 155a9643ea8Slogwang #else 156a9643ea8Slogwang #define INTPTR_MIN INT32_MIN 157a9643ea8Slogwang #define INTPTR_MAX INT32_MAX 158a9643ea8Slogwang #define UINTPTR_MAX UINT32_MAX 159a9643ea8Slogwang #endif 160a9643ea8Slogwang 161a9643ea8Slogwang /* 162a9643ea8Slogwang * ISO/IEC 9899:1999 163a9643ea8Slogwang * 7.18.2.5 Limits of greatest-width integer types 164a9643ea8Slogwang */ 165a9643ea8Slogwang #define INTMAX_MIN INT64_MIN 166a9643ea8Slogwang #define INTMAX_MAX INT64_MAX 167a9643ea8Slogwang #define UINTMAX_MAX UINT64_MAX 168a9643ea8Slogwang 169a9643ea8Slogwang /* 170a9643ea8Slogwang * ISO/IEC 9899:1999 171a9643ea8Slogwang * 7.18.3 Limits of other integer types 172a9643ea8Slogwang */ 173a9643ea8Slogwang #ifdef __mips_n64 174a9643ea8Slogwang /* Limits of ptrdiff_t. */ 175a9643ea8Slogwang #define PTRDIFF_MIN INT64_MIN 176a9643ea8Slogwang #define PTRDIFF_MAX INT64_MAX 177a9643ea8Slogwang 178a9643ea8Slogwang /* Limit of size_t. */ 179a9643ea8Slogwang #define SIZE_MAX UINT64_MAX 180a9643ea8Slogwang #else 181a9643ea8Slogwang /* Limits of ptrdiff_t. */ 182a9643ea8Slogwang #define PTRDIFF_MIN INT32_MIN 183a9643ea8Slogwang #define PTRDIFF_MAX INT32_MAX 184a9643ea8Slogwang 185a9643ea8Slogwang /* Limit of size_t. */ 186a9643ea8Slogwang #define SIZE_MAX UINT32_MAX 187a9643ea8Slogwang #endif 188a9643ea8Slogwang 189a9643ea8Slogwang /* Limits of sig_atomic_t. */ 190a9643ea8Slogwang #define SIG_ATOMIC_MIN INT32_MIN 191a9643ea8Slogwang #define SIG_ATOMIC_MAX INT32_MAX 192a9643ea8Slogwang 193a9643ea8Slogwang /* Limits of wint_t. */ 194a9643ea8Slogwang #define WINT_MIN INT32_MIN 195a9643ea8Slogwang #define WINT_MAX INT32_MAX 196a9643ea8Slogwang 197a9643ea8Slogwang #endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ 198a9643ea8Slogwang 199a9643ea8Slogwang #endif /* !_MACHINE__STDINT_H_ */ 200