xref: /openbmc/u-boot/include/inttypes.h (revision d94604d5)
1*bcb514acSSimon Glass /* SPDX-License-Identifier: GPL-2.0+ */
2*bcb514acSSimon Glass /*
3*bcb514acSSimon Glass  * Copyright (C) 1997-2001, 2004, 2007 Free Software Foundation, Inc.
4*bcb514acSSimon Glass  *
5*bcb514acSSimon Glass  * This file is taken from the GNU C Library v2.15, with the unimplemented
6*bcb514acSSimon Glass  * functions removed and a few style fixes.
7*bcb514acSSimon Glass  */
8*bcb514acSSimon Glass 
9*bcb514acSSimon Glass /*
10*bcb514acSSimon Glass  *	ISO C99: 7.8 Format conversion of integer types	<inttypes.h>
11*bcb514acSSimon Glass  */
12*bcb514acSSimon Glass 
13*bcb514acSSimon Glass #ifndef _INTTYPES_H
14*bcb514acSSimon Glass #define _INTTYPES_H	1
15*bcb514acSSimon Glass 
16*bcb514acSSimon Glass #include <linux/compiler.h>
17*bcb514acSSimon Glass 
18*bcb514acSSimon Glass /* Get a definition for wchar_t.  But we must not define wchar_t itself.  */
19*bcb514acSSimon Glass #ifndef ____gwchar_t_defined
20*bcb514acSSimon Glass # ifdef __cplusplus
21*bcb514acSSimon Glass #  define __gwchar_t wchar_t
22*bcb514acSSimon Glass # elif defined __WCHAR_TYPE__
23*bcb514acSSimon Glass typedef __WCHAR_TYPE__ __gwchar_t;
24*bcb514acSSimon Glass # else
25*bcb514acSSimon Glass #  define __need_wchar_t
26*bcb514acSSimon Glass #  include <linux/stddef.h>
27*bcb514acSSimon Glass typedef wchar_t __gwchar_t;
28*bcb514acSSimon Glass # endif
29*bcb514acSSimon Glass # define ____gwchar_t_defined	1
30*bcb514acSSimon Glass #endif
31*bcb514acSSimon Glass 
32*bcb514acSSimon Glass /*
33*bcb514acSSimon Glass  * The ISO C99 standard specifies that these macros must only be defined if
34*bcb514acSSimon Glass  * explicitly requested
35*bcb514acSSimon Glass  */
36*bcb514acSSimon Glass #if !defined __cplusplus || defined __STDC_FORMAT_MACROS
37*bcb514acSSimon Glass 
38*bcb514acSSimon Glass /* linux/types.h always uses long long for 64-bit and long for uintptr_t */
39*bcb514acSSimon Glass # define __PRI64_PREFIX	"ll"
40*bcb514acSSimon Glass # define __PRIPTR_PREFIX	"l"
41*bcb514acSSimon Glass 
42*bcb514acSSimon Glass /* Macros for printing format specifiers.  */
43*bcb514acSSimon Glass 
44*bcb514acSSimon Glass /* Decimal notation.  */
45*bcb514acSSimon Glass # define PRId8		"d"
46*bcb514acSSimon Glass # define PRId16		"d"
47*bcb514acSSimon Glass # define PRId32		"d"
48*bcb514acSSimon Glass # define PRId64		__PRI64_PREFIX "d"
49*bcb514acSSimon Glass 
50*bcb514acSSimon Glass # define PRIdLEAST8	"d"
51*bcb514acSSimon Glass # define PRIdLEAST16	"d"
52*bcb514acSSimon Glass # define PRIdLEAST32	"d"
53*bcb514acSSimon Glass # define PRIdLEAST64	__PRI64_PREFIX "d"
54*bcb514acSSimon Glass 
55*bcb514acSSimon Glass # define PRIdFAST8	"d"
56*bcb514acSSimon Glass # define PRIdFAST16	__PRIPTR_PREFIX "d"
57*bcb514acSSimon Glass # define PRIdFAST32	__PRIPTR_PREFIX "d"
58*bcb514acSSimon Glass # define PRIdFAST64	__PRI64_PREFIX "d"
59*bcb514acSSimon Glass 
60*bcb514acSSimon Glass # define PRIi8		"i"
61*bcb514acSSimon Glass # define PRIi16		"i"
62*bcb514acSSimon Glass # define PRIi32		"i"
63*bcb514acSSimon Glass # define PRIi64		__PRI64_PREFIX "i"
64*bcb514acSSimon Glass 
65*bcb514acSSimon Glass # define PRIiLEAST8	"i"
66*bcb514acSSimon Glass # define PRIiLEAST16	"i"
67*bcb514acSSimon Glass # define PRIiLEAST32	"i"
68*bcb514acSSimon Glass # define PRIiLEAST64	__PRI64_PREFIX "i"
69*bcb514acSSimon Glass 
70*bcb514acSSimon Glass # define PRIiFAST8	"i"
71*bcb514acSSimon Glass # define PRIiFAST16	__PRIPTR_PREFIX "i"
72*bcb514acSSimon Glass # define PRIiFAST32	__PRIPTR_PREFIX "i"
73*bcb514acSSimon Glass # define PRIiFAST64	__PRI64_PREFIX "i"
74*bcb514acSSimon Glass 
75*bcb514acSSimon Glass /* Octal notation.  */
76*bcb514acSSimon Glass # define PRIo8		"o"
77*bcb514acSSimon Glass # define PRIo16		"o"
78*bcb514acSSimon Glass # define PRIo32		"o"
79*bcb514acSSimon Glass # define PRIo64		__PRI64_PREFIX "o"
80*bcb514acSSimon Glass 
81*bcb514acSSimon Glass # define PRIoLEAST8	"o"
82*bcb514acSSimon Glass # define PRIoLEAST16	"o"
83*bcb514acSSimon Glass # define PRIoLEAST32	"o"
84*bcb514acSSimon Glass # define PRIoLEAST64	__PRI64_PREFIX "o"
85*bcb514acSSimon Glass 
86*bcb514acSSimon Glass # define PRIoFAST8	"o"
87*bcb514acSSimon Glass # define PRIoFAST16	__PRIPTR_PREFIX "o"
88*bcb514acSSimon Glass # define PRIoFAST32	__PRIPTR_PREFIX "o"
89*bcb514acSSimon Glass # define PRIoFAST64	__PRI64_PREFIX "o"
90*bcb514acSSimon Glass 
91*bcb514acSSimon Glass /* Unsigned integers.  */
92*bcb514acSSimon Glass # define PRIu8		"u"
93*bcb514acSSimon Glass # define PRIu16		"u"
94*bcb514acSSimon Glass # define PRIu32		"u"
95*bcb514acSSimon Glass # define PRIu64		__PRI64_PREFIX "u"
96*bcb514acSSimon Glass 
97*bcb514acSSimon Glass # define PRIuLEAST8	"u"
98*bcb514acSSimon Glass # define PRIuLEAST16	"u"
99*bcb514acSSimon Glass # define PRIuLEAST32	"u"
100*bcb514acSSimon Glass # define PRIuLEAST64	__PRI64_PREFIX "u"
101*bcb514acSSimon Glass 
102*bcb514acSSimon Glass # define PRIuFAST8	"u"
103*bcb514acSSimon Glass # define PRIuFAST16	__PRIPTR_PREFIX "u"
104*bcb514acSSimon Glass # define PRIuFAST32	__PRIPTR_PREFIX "u"
105*bcb514acSSimon Glass # define PRIuFAST64	__PRI64_PREFIX "u"
106*bcb514acSSimon Glass 
107*bcb514acSSimon Glass /* lowercase hexadecimal notation.  */
108*bcb514acSSimon Glass # define PRIx8		"x"
109*bcb514acSSimon Glass # define PRIx16		"x"
110*bcb514acSSimon Glass # define PRIx32		"x"
111*bcb514acSSimon Glass # define PRIx64		__PRI64_PREFIX "x"
112*bcb514acSSimon Glass 
113*bcb514acSSimon Glass # define PRIxLEAST8	"x"
114*bcb514acSSimon Glass # define PRIxLEAST16	"x"
115*bcb514acSSimon Glass # define PRIxLEAST32	"x"
116*bcb514acSSimon Glass # define PRIxLEAST64	__PRI64_PREFIX "x"
117*bcb514acSSimon Glass 
118*bcb514acSSimon Glass # define PRIxFAST8	"x"
119*bcb514acSSimon Glass # define PRIxFAST16	__PRIPTR_PREFIX "x"
120*bcb514acSSimon Glass # define PRIxFAST32	__PRIPTR_PREFIX "x"
121*bcb514acSSimon Glass # define PRIxFAST64	__PRI64_PREFIX "x"
122*bcb514acSSimon Glass 
123*bcb514acSSimon Glass /* UPPERCASE hexadecimal notation.  */
124*bcb514acSSimon Glass # define PRIX8		"X"
125*bcb514acSSimon Glass # define PRIX16		"X"
126*bcb514acSSimon Glass # define PRIX32		"X"
127*bcb514acSSimon Glass # define PRIX64		__PRI64_PREFIX "X"
128*bcb514acSSimon Glass 
129*bcb514acSSimon Glass # define PRIXLEAST8	"X"
130*bcb514acSSimon Glass # define PRIXLEAST16	"X"
131*bcb514acSSimon Glass # define PRIXLEAST32	"X"
132*bcb514acSSimon Glass # define PRIXLEAST64	__PRI64_PREFIX "X"
133*bcb514acSSimon Glass 
134*bcb514acSSimon Glass # define PRIXFAST8	"X"
135*bcb514acSSimon Glass # define PRIXFAST16	__PRIPTR_PREFIX "X"
136*bcb514acSSimon Glass # define PRIXFAST32	__PRIPTR_PREFIX "X"
137*bcb514acSSimon Glass # define PRIXFAST64	__PRI64_PREFIX "X"
138*bcb514acSSimon Glass 
139*bcb514acSSimon Glass /* Macros for printing `intmax_t' and `uintmax_t'.  */
140*bcb514acSSimon Glass # define PRIdMAX	__PRI64_PREFIX "d"
141*bcb514acSSimon Glass # define PRIiMAX	__PRI64_PREFIX "i"
142*bcb514acSSimon Glass # define PRIoMAX	__PRI64_PREFIX "o"
143*bcb514acSSimon Glass # define PRIuMAX	__PRI64_PREFIX "u"
144*bcb514acSSimon Glass # define PRIxMAX	__PRI64_PREFIX "x"
145*bcb514acSSimon Glass # define PRIXMAX	__PRI64_PREFIX "X"
146*bcb514acSSimon Glass 
147*bcb514acSSimon Glass /* Macros for printing `intptr_t' and `uintptr_t'.  */
148*bcb514acSSimon Glass # define PRIdPTR	__PRIPTR_PREFIX "d"
149*bcb514acSSimon Glass # define PRIiPTR	__PRIPTR_PREFIX "i"
150*bcb514acSSimon Glass # define PRIoPTR	__PRIPTR_PREFIX "o"
151*bcb514acSSimon Glass # define PRIuPTR	__PRIPTR_PREFIX "u"
152*bcb514acSSimon Glass # define PRIxPTR	__PRIPTR_PREFIX "x"
153*bcb514acSSimon Glass # define PRIXPTR	__PRIPTR_PREFIX "X"
154*bcb514acSSimon Glass 
155*bcb514acSSimon Glass /* Macros for scanning format specifiers.  */
156*bcb514acSSimon Glass 
157*bcb514acSSimon Glass /* Signed decimal notation.  */
158*bcb514acSSimon Glass # define SCNd8		"hhd"
159*bcb514acSSimon Glass # define SCNd16		"hd"
160*bcb514acSSimon Glass # define SCNd32		"d"
161*bcb514acSSimon Glass # define SCNd64		__PRI64_PREFIX "d"
162*bcb514acSSimon Glass 
163*bcb514acSSimon Glass # define SCNdLEAST8	"hhd"
164*bcb514acSSimon Glass # define SCNdLEAST16	"hd"
165*bcb514acSSimon Glass # define SCNdLEAST32	"d"
166*bcb514acSSimon Glass # define SCNdLEAST64	__PRI64_PREFIX "d"
167*bcb514acSSimon Glass 
168*bcb514acSSimon Glass # define SCNdFAST8	"hhd"
169*bcb514acSSimon Glass # define SCNdFAST16	__PRIPTR_PREFIX "d"
170*bcb514acSSimon Glass # define SCNdFAST32	__PRIPTR_PREFIX "d"
171*bcb514acSSimon Glass # define SCNdFAST64	__PRI64_PREFIX "d"
172*bcb514acSSimon Glass 
173*bcb514acSSimon Glass /* Signed decimal notation.  */
174*bcb514acSSimon Glass # define SCNi8		"hhi"
175*bcb514acSSimon Glass # define SCNi16		"hi"
176*bcb514acSSimon Glass # define SCNi32		"i"
177*bcb514acSSimon Glass # define SCNi64		__PRI64_PREFIX "i"
178*bcb514acSSimon Glass 
179*bcb514acSSimon Glass # define SCNiLEAST8	"hhi"
180*bcb514acSSimon Glass # define SCNiLEAST16	"hi"
181*bcb514acSSimon Glass # define SCNiLEAST32	"i"
182*bcb514acSSimon Glass # define SCNiLEAST64	__PRI64_PREFIX "i"
183*bcb514acSSimon Glass 
184*bcb514acSSimon Glass # define SCNiFAST8	"hhi"
185*bcb514acSSimon Glass # define SCNiFAST16	__PRIPTR_PREFIX "i"
186*bcb514acSSimon Glass # define SCNiFAST32	__PRIPTR_PREFIX "i"
187*bcb514acSSimon Glass # define SCNiFAST64	__PRI64_PREFIX "i"
188*bcb514acSSimon Glass 
189*bcb514acSSimon Glass /* Unsigned decimal notation.  */
190*bcb514acSSimon Glass # define SCNu8		"hhu"
191*bcb514acSSimon Glass # define SCNu16		"hu"
192*bcb514acSSimon Glass # define SCNu32		"u"
193*bcb514acSSimon Glass # define SCNu64		__PRI64_PREFIX "u"
194*bcb514acSSimon Glass 
195*bcb514acSSimon Glass # define SCNuLEAST8	"hhu"
196*bcb514acSSimon Glass # define SCNuLEAST16	"hu"
197*bcb514acSSimon Glass # define SCNuLEAST32	"u"
198*bcb514acSSimon Glass # define SCNuLEAST64	__PRI64_PREFIX "u"
199*bcb514acSSimon Glass 
200*bcb514acSSimon Glass # define SCNuFAST8	"hhu"
201*bcb514acSSimon Glass # define SCNuFAST16	__PRIPTR_PREFIX "u"
202*bcb514acSSimon Glass # define SCNuFAST32	__PRIPTR_PREFIX "u"
203*bcb514acSSimon Glass # define SCNuFAST64	__PRI64_PREFIX "u"
204*bcb514acSSimon Glass 
205*bcb514acSSimon Glass /* Octal notation.  */
206*bcb514acSSimon Glass # define SCNo8		"hho"
207*bcb514acSSimon Glass # define SCNo16		"ho"
208*bcb514acSSimon Glass # define SCNo32		"o"
209*bcb514acSSimon Glass # define SCNo64		__PRI64_PREFIX "o"
210*bcb514acSSimon Glass 
211*bcb514acSSimon Glass # define SCNoLEAST8	"hho"
212*bcb514acSSimon Glass # define SCNoLEAST16	"ho"
213*bcb514acSSimon Glass # define SCNoLEAST32	"o"
214*bcb514acSSimon Glass # define SCNoLEAST64	__PRI64_PREFIX "o"
215*bcb514acSSimon Glass 
216*bcb514acSSimon Glass # define SCNoFAST8	"hho"
217*bcb514acSSimon Glass # define SCNoFAST16	__PRIPTR_PREFIX "o"
218*bcb514acSSimon Glass # define SCNoFAST32	__PRIPTR_PREFIX "o"
219*bcb514acSSimon Glass # define SCNoFAST64	__PRI64_PREFIX "o"
220*bcb514acSSimon Glass 
221*bcb514acSSimon Glass /* Hexadecimal notation.  */
222*bcb514acSSimon Glass # define SCNx8		"hhx"
223*bcb514acSSimon Glass # define SCNx16		"hx"
224*bcb514acSSimon Glass # define SCNx32		"x"
225*bcb514acSSimon Glass # define SCNx64		__PRI64_PREFIX "x"
226*bcb514acSSimon Glass 
227*bcb514acSSimon Glass # define SCNxLEAST8	"hhx"
228*bcb514acSSimon Glass # define SCNxLEAST16	"hx"
229*bcb514acSSimon Glass # define SCNxLEAST32	"x"
230*bcb514acSSimon Glass # define SCNxLEAST64	__PRI64_PREFIX "x"
231*bcb514acSSimon Glass 
232*bcb514acSSimon Glass # define SCNxFAST8	"hhx"
233*bcb514acSSimon Glass # define SCNxFAST16	__PRIPTR_PREFIX "x"
234*bcb514acSSimon Glass # define SCNxFAST32	__PRIPTR_PREFIX "x"
235*bcb514acSSimon Glass # define SCNxFAST64	__PRI64_PREFIX "x"
236*bcb514acSSimon Glass 
237*bcb514acSSimon Glass /* Macros for scanning `intmax_t' and `uintmax_t'.  */
238*bcb514acSSimon Glass # define SCNdMAX	__PRI64_PREFIX "d"
239*bcb514acSSimon Glass # define SCNiMAX	__PRI64_PREFIX "i"
240*bcb514acSSimon Glass # define SCNoMAX	__PRI64_PREFIX "o"
241*bcb514acSSimon Glass # define SCNuMAX	__PRI64_PREFIX "u"
242*bcb514acSSimon Glass # define SCNxMAX	__PRI64_PREFIX "x"
243*bcb514acSSimon Glass 
244*bcb514acSSimon Glass /* Macros for scanning `intptr_t' and `uintptr_t'.  */
245*bcb514acSSimon Glass # define SCNdPTR	__PRIPTR_PREFIX "d"
246*bcb514acSSimon Glass # define SCNiPTR	__PRIPTR_PREFIX "i"
247*bcb514acSSimon Glass # define SCNoPTR	__PRIPTR_PREFIX "o"
248*bcb514acSSimon Glass # define SCNuPTR	__PRIPTR_PREFIX "u"
249*bcb514acSSimon Glass # define SCNxPTR	__PRIPTR_PREFIX "x"
250*bcb514acSSimon Glass 
251*bcb514acSSimon Glass #endif	/* C++ && format macros */
252*bcb514acSSimon Glass 
253*bcb514acSSimon Glass #if __WORDSIZE == 64
254*bcb514acSSimon Glass 
255*bcb514acSSimon Glass /* We have to define the `uintmax_t' type using `ldiv_t'.  */
256*bcb514acSSimon Glass typedef struct {
257*bcb514acSSimon Glass 	long int quot;		/* Quotient.  */
258*bcb514acSSimon Glass 	long int rem;		/* Remainder.  */
259*bcb514acSSimon Glass } imaxdiv_t;
260*bcb514acSSimon Glass 
261*bcb514acSSimon Glass #else
262*bcb514acSSimon Glass 
263*bcb514acSSimon Glass /* We have to define the `uintmax_t' type using `lldiv_t'.  */
264*bcb514acSSimon Glass typedef struct {
265*bcb514acSSimon Glass 	long long int quot;		/* Quotient.  */
266*bcb514acSSimon Glass 	long long int rem;		/* Remainder.  */
267*bcb514acSSimon Glass } imaxdiv_t;
268*bcb514acSSimon Glass 
269*bcb514acSSimon Glass #endif
270*bcb514acSSimon Glass 
271*bcb514acSSimon Glass #endif /* inttypes.h */
272