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