1 /* tag: data types for forth engine
2  *
3  * Copyright (C) 2003-2005 Patrick Mauritz, Stefan Reinauer
4  *
5  * See the file "COPYING" for further information about
6  * the copyright and warranty status of this work.
7  */
8 
9 #ifndef __TYPES_H
10 #define __TYPES_H
11 
12 #include "mconfig.h"
13 
14 #ifdef BOOTSTRAP
15 #include <inttypes.h>
16 #else
17 typedef unsigned char   uint8_t;
18 typedef unsigned short  uint16_t;
19 typedef unsigned int    uint32_t;
20 typedef unsigned long long uint64_t;
21 typedef unsigned long   uintptr_t;
22 
23 typedef signed char     int8_t;
24 typedef short           int16_t;
25 typedef int             int32_t;
26 typedef long long       int64_t;
27 typedef long            intptr_t;
28 
29 #define PRId32 "d"
30 #define PRIu32 "u"
31 #define PRIx32 "x"
32 #define PRIX32 "X"
33 #define PRId64 "lld"
34 #define PRIu64 "llu"
35 #define PRIx64 "llx"
36 #define PRIX64 "llX"
37 #endif
38 
39 /* endianness */
40 #include "autoconf.h"
41 
42 /* physical address */
43 typedef uint64_t phys_addr_t;
44 
45 #define FMT_plx "%016" PRIx64
46 
47 /* cell based types */
48 typedef int64_t     cell;
49 typedef uint64_t    ucell;
50 
51 #define FMT_cell    "%" PRId64
52 #define FMT_ucell   "%" PRIu64
53 #define FMT_ucellx  "%016" PRIx64
54 #define FMT_ucellX  "%016" PRIX64
55 
56 typedef int64_t         prom_arg_t;
57 typedef uint64_t        prom_uarg_t;
58 
59 #define PRIdPROMARG     PRId64
60 #define PRIuPROMARG     PRIu64
61 #define PRIxPROMARG     PRIx64
62 #define FMT_prom_arg    "%" PRIdPROMARG
63 #define FMT_prom_uarg   "%" PRIuPROMARG
64 #define FMT_prom_uargx  "%016" PRIxPROMARG
65 
66 #define FMT_elf	    "%#llx"
67 #define FMT_sizet   "%lx"
68 #define FMT_aout_ehdr  "%x"
69 
70 #ifdef NEED_FAKE_INT128_T
71 typedef struct {
72     uint64_t hi;
73     uint64_t lo;
74 } blob_128_t;
75 
76 typedef blob_128_t      dcell;
77 typedef blob_128_t     ducell;
78 #else
79 typedef __int128_t	dcell;
80 typedef __uint128_t    ducell;
81 #endif
82 
83 #define bitspercell	(sizeof(cell)<<3)
84 #define bitsperdcell	(sizeof(dcell)<<3)
85 
86 #define BITS		64
87 
88 #define PAGE_SHIFT	13
89 
90 /* size named types */
91 
92 typedef unsigned char   u8;
93 typedef unsigned short u16;
94 typedef unsigned int   u32;
95 typedef unsigned long long u64;
96 
97 typedef signed char	s8;
98 typedef short		s16;
99 typedef int		s32;
100 typedef long long	s64;
101 
102 #endif
103