xref: /rk3399_ARM-atf/include/lib/libc/stdint.h (revision b382ac6887b864ff4252022cbeb13f0405daff79)
127989a8eSAntonio Nino Diaz /*
227989a8eSAntonio Nino Diaz  * Copyright (c) 2012-2017 Roberto E. Vargas Caballero
327989a8eSAntonio Nino Diaz  *
427989a8eSAntonio Nino Diaz  * SPDX-License-Identifier: BSD-3-Clause
527989a8eSAntonio Nino Diaz  */
67c0ff9c4SAntonio Nino Diaz /*
7*b382ac68SBence Szépkúti  * Portions copyright (c) 2018-2019, ARM Limited and Contributors.
87c0ff9c4SAntonio Nino Diaz  * All rights reserved.
97c0ff9c4SAntonio Nino Diaz  */
1027989a8eSAntonio Nino Diaz 
112fb88cb2SAntonio Nino Diaz #ifndef STDINT_H
122fb88cb2SAntonio Nino Diaz #define STDINT_H
1327989a8eSAntonio Nino Diaz 
14*b382ac68SBence Szépkúti #include <limits.h>
15*b382ac68SBence Szépkúti 
16*b382ac68SBence Szépkúti #define INT8_MAX  CHAR_MAX
17*b382ac68SBence Szépkúti #define INT8_MIN  CHAR_MIN
18*b382ac68SBence Szépkúti #define UINT8_MAX UCHAR_MAX
19*b382ac68SBence Szépkúti 
20*b382ac68SBence Szépkúti #define INT16_MAX  SHRT_MAX
21*b382ac68SBence Szépkúti #define INT16_MIN  SHRT_MIN
22*b382ac68SBence Szépkúti #define UINT16_MAX USHRT_MAX
23*b382ac68SBence Szépkúti 
24*b382ac68SBence Szépkúti #define INT32_MAX  INT_MAX
25*b382ac68SBence Szépkúti #define INT32_MIN  INT_MIN
26*b382ac68SBence Szépkúti #define UINT32_MAX UINT_MAX
27*b382ac68SBence Szépkúti 
28*b382ac68SBence Szépkúti #define INT64_MAX  LLONG_MAX
29*b382ac68SBence Szépkúti #define INT64_MIN  LLONG_MIN
30*b382ac68SBence Szépkúti #define UINT64_MAX ULLONG_MAX
31*b382ac68SBence Szépkúti 
32*b382ac68SBence Szépkúti #define INT_LEAST8_MIN  INT8_MIN
33*b382ac68SBence Szépkúti #define INT_LEAST8_MAX  INT8_MAX
34*b382ac68SBence Szépkúti #define UINT_LEAST8_MAX UINT8_MAX
35*b382ac68SBence Szépkúti 
36*b382ac68SBence Szépkúti #define INT_LEAST16_MIN  INT16_MIN
37*b382ac68SBence Szépkúti #define INT_LEAST16_MAX  INT16_MAX
38*b382ac68SBence Szépkúti #define UINT_LEAST16_MAX UINT16_MAX
39*b382ac68SBence Szépkúti 
40*b382ac68SBence Szépkúti #define INT_LEAST32_MIN  INT32_MIN
41*b382ac68SBence Szépkúti #define INT_LEAST32_MAX  INT32_MAX
42*b382ac68SBence Szépkúti #define UINT_LEAST32_MAX UINT32_MAX
43*b382ac68SBence Szépkúti 
44*b382ac68SBence Szépkúti #define INT_LEAST64_MIN  INT64_MIN
45*b382ac68SBence Szépkúti #define INT_LEAST64_MAX  INT64_MAX
46*b382ac68SBence Szépkúti #define UINT_LEAST64_MAX UINT64_MAX
47*b382ac68SBence Szépkúti 
48*b382ac68SBence Szépkúti #define INT_FAST8_MIN  INT32_MIN
49*b382ac68SBence Szépkúti #define INT_FAST8_MAX  INT32_MAX
50*b382ac68SBence Szépkúti #define UINT_FAST8_MAX UINT32_MAX
51*b382ac68SBence Szépkúti 
52*b382ac68SBence Szépkúti #define INT_FAST16_MIN  INT32_MIN
53*b382ac68SBence Szépkúti #define INT_FAST16_MAX  INT32_MAX
54*b382ac68SBence Szépkúti #define UINT_FAST16_MAX UINT32_MAX
55*b382ac68SBence Szépkúti 
56*b382ac68SBence Szépkúti #define INT_FAST32_MIN  INT32_MIN
57*b382ac68SBence Szépkúti #define INT_FAST32_MAX  INT32_MAX
58*b382ac68SBence Szépkúti #define UINT_FAST32_MAX UINT32_MAX
59*b382ac68SBence Szépkúti 
60*b382ac68SBence Szépkúti #define INT_FAST64_MIN  INT64_MIN
61*b382ac68SBence Szépkúti #define INT_FAST64_MAX  INT64_MAX
62*b382ac68SBence Szépkúti #define UINT_FAST64_MAX UINT64_MAX
63*b382ac68SBence Szépkúti 
64*b382ac68SBence Szépkúti #define INTPTR_MIN  LONG_MIN
65*b382ac68SBence Szépkúti #define INTPTR_MAX  LONG_MAX
66*b382ac68SBence Szépkúti #define UINTPTR_MAX ULONG_MAX
67*b382ac68SBence Szépkúti 
68*b382ac68SBence Szépkúti #define INTMAX_MIN  LLONG_MIN
69*b382ac68SBence Szépkúti #define INTMAX_MAX  LLONG_MAX
70*b382ac68SBence Szépkúti #define UINTMAX_MAX ULLONG_MAX
71*b382ac68SBence Szépkúti 
72*b382ac68SBence Szépkúti #define PTRDIFF_MIN LONG_MIN
73*b382ac68SBence Szépkúti #define PTRDIFF_MAX LONG_MAX
74*b382ac68SBence Szépkúti 
75*b382ac68SBence Szépkúti #define SIZE_MAX UINT64_MAX
76*b382ac68SBence Szépkúti 
77*b382ac68SBence Szépkúti #define INT8_C(x)  x
78*b382ac68SBence Szépkúti #define INT16_C(x) x
79*b382ac68SBence Szépkúti #define INT32_C(x) x
80*b382ac68SBence Szépkúti #define INT64_C(x) x ## LL
81*b382ac68SBence Szépkúti 
82*b382ac68SBence Szépkúti #define UINT8_C(x)  x
83*b382ac68SBence Szépkúti #define UINT16_C(x) x
84*b382ac68SBence Szépkúti #define UINT32_C(x) x ## U
85*b382ac68SBence Szépkúti #define UINT64_C(x) x ## ULL
86*b382ac68SBence Szépkúti 
87*b382ac68SBence Szépkúti #define INTMAX_C(x)  x ## LL
88*b382ac68SBence Szépkúti #define UINTMAX_C(x) x ## ULL
89*b382ac68SBence Szépkúti 
90*b382ac68SBence Szépkúti typedef signed char int8_t;
91*b382ac68SBence Szépkúti typedef short int16_t;
92*b382ac68SBence Szépkúti typedef int int32_t;
93*b382ac68SBence Szépkúti typedef long long int64_t;
94*b382ac68SBence Szépkúti 
95*b382ac68SBence Szépkúti typedef unsigned char uint8_t;
96*b382ac68SBence Szépkúti typedef unsigned short uint16_t;
97*b382ac68SBence Szépkúti typedef unsigned int uint32_t;
98*b382ac68SBence Szépkúti typedef unsigned long long uint64_t;
99*b382ac68SBence Szépkúti 
100*b382ac68SBence Szépkúti typedef signed char int8_least_t;
101*b382ac68SBence Szépkúti typedef short int16_least_t;
102*b382ac68SBence Szépkúti typedef int int32_least_t;
103*b382ac68SBence Szépkúti typedef long long int64_least_t;
104*b382ac68SBence Szépkúti 
105*b382ac68SBence Szépkúti typedef unsigned char uint8_least_t;
106*b382ac68SBence Szépkúti typedef unsigned short uint16_least_t;
107*b382ac68SBence Szépkúti typedef unsigned int uint32_least_t;
108*b382ac68SBence Szépkúti typedef unsigned long long uint64_least_t;
109*b382ac68SBence Szépkúti 
110*b382ac68SBence Szépkúti typedef int int8_fast_t;
111*b382ac68SBence Szépkúti typedef int int16_fast_t;
112*b382ac68SBence Szépkúti typedef int int32_fast_t;
113*b382ac68SBence Szépkúti typedef long long int64_fast_t;
114*b382ac68SBence Szépkúti 
115*b382ac68SBence Szépkúti typedef unsigned int uint8_fast_t;
116*b382ac68SBence Szépkúti typedef unsigned int uint16_fast_t;
117*b382ac68SBence Szépkúti typedef unsigned int uint32_fast_t;
118*b382ac68SBence Szépkúti typedef unsigned long long uint64_fast_t;
119*b382ac68SBence Szépkúti 
120*b382ac68SBence Szépkúti typedef long intptr_t;
121*b382ac68SBence Szépkúti typedef unsigned long uintptr_t;
122*b382ac68SBence Szépkúti 
123*b382ac68SBence Szépkúti /*
124*b382ac68SBence Szépkúti * Conceptually, these are supposed to be the largest integers representable in C,
125*b382ac68SBence Szépkúti * but GCC and Clang define them as long long for compatibility.
126*b382ac68SBence Szépkúti */
127*b382ac68SBence Szépkúti typedef long long intmax_t;
128*b382ac68SBence Szépkúti typedef unsigned long long uintmax_t;
129*b382ac68SBence Szépkúti 
130*b382ac68SBence Szépkúti typedef long register_t;
131*b382ac68SBence Szépkúti typedef unsigned long u_register_t;
132*b382ac68SBence Szépkúti 
133*b382ac68SBence Szépkúti #ifdef __aarch64__
134*b382ac68SBence Szépkúti typedef __int128 int128_t;
135*b382ac68SBence Szépkúti typedef unsigned __int128 uint128_t;
136*b382ac68SBence Szépkúti #endif /* __aarch64__ */
13727989a8eSAntonio Nino Diaz 
1382fb88cb2SAntonio Nino Diaz #endif /* STDINT_H */
139