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