1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
diff --git a/firmware/libc/include/inttypes.h b/firmware/libc/include/inttypes.h
index c03609c..4f6eb5e 100644
--- a/firmware/libc/include/inttypes.h
+++ b/firmware/libc/include/inttypes.h
@@ -24,6 +24,76 @@

 #include <stdint.h>

-/* could possibly have (f)printf format specifies here */
+/* 8 bit */
+#define PRId8   "d"
+#define PRIi8   "d"
+#define PRIu8   "u"
+#define PRIx8   "x"
+#define PRIX8   "X"
+
+/* 16 bit */
+#if USHRT_MAX == 0xffff
+
+#define PRId16  "d"
+#define PRIi16  "d"
+#define PRIu16  "u"
+#define PRIx16  "x"
+#define PRIX16  "X"
+
+#endif
+
+/* 32 bit */
+#if ULONG_MAX == 0xfffffffful
+
+#define PRId32  "ld"
+#define PRIi32  "ld"
+#define PRIu32  "lu"
+#define PRIx32  "lx"
+#define PRIX32  "lX"
+#define PRIdPTR "ld"
+#define PRIiPTR "ld"
+#define PRIuPTR "lu"
+#define PRIxPTR "lx"
+#define PRIXPTR "lX"
+
+#elif UINT_MAX == 0xffffffffu
+
+#define PRId32  "d"
+#define PRIi32  "d"
+#define PRIu32  "u"
+#define PRIx32  "x"
+#define PRIX32  "X"
+
+#endif
+
+/* 64 bit */
+#if ULONG_MAX == 0xffffffffffffffffull
+
+#define PRId64  "ld"
+#define PRIi64  "ld"
+#define PRIu64  "lu"
+#define PRIx64  "lx"
+#define PRIX64  "lX"
+#define PRIdPTR "ld"
+#define PRIiPTR "ld"
+#define PRIuPTR "lu"
+#define PRIxPTR "lx"
+#define PRIXPTR "lX"
+
+
+#else
+
+#define PRId64  "lld"
+#define PRIi64  "lld"
+#define PRIu64  "llu"
+#define PRIx64  "llx"
+#define PRIX64  "llX"
+#define PRIdPTR "lld"
+#define PRIiPTR "lld"
+#define PRIuPTR "llu"
+#define PRIxPTR "llx"
+#define PRIXPTR "llX"
+
+#endif

 #endif /* __INTTYPES_H__ */