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 #if defined(__powerpc64__)
44 typedef uint64_t phys_addr_t;
45 #define FMT_plx "%016" PRIx64
46 #else
47 typedef uint32_t phys_addr_t;
48 #define FMT_plx "%08" PRIx32
49 #endif
50 
51 /* cell based types */
52 
53 typedef int32_t		cell;
54 typedef uint32_t	ucell;
55 typedef int64_t		dcell;
56 typedef uint64_t	ducell;
57 
58 #define FMT_cell    "%" PRId32
59 #define FMT_ucell   "%" PRIu32
60 #define FMT_ucellx  "%08" PRIx32
61 #define FMT_ucellX  "%08" PRIX32
62 
63 typedef int32_t         prom_arg_t;
64 typedef uint32_t        prom_uarg_t;
65 
66 #define PRIdPROMARG     PRId32
67 #define PRIuPROMARG     PRIu32
68 #define PRIxPROMARG     PRIx32
69 #define FMT_prom_arg    "%" PRIdPROMARG
70 #define FMT_prom_uarg   "%" PRIuPROMARG
71 #define FMT_prom_uargx  "%08" PRIxPROMARG
72 
73 #define FMT_elf     "%#x"
74 #define FMT_sizet   "%lx"
75 #define FMT_aout_ehdr  "%lx"
76 
77 #define bitspercell	(sizeof(cell)<<3)
78 #define bitsperdcell	(sizeof(dcell)<<3)
79 
80 #define BITS		32
81 
82 #define PAGE_SHIFT	12
83 
84 /* size named types */
85 
86 typedef unsigned char   u8;
87 typedef unsigned short u16;
88 typedef unsigned int   u32;
89 typedef unsigned long long u64;
90 
91 typedef signed char	s8;
92 typedef short		s16;
93 typedef int		s32;
94 typedef long long	s64;
95 
96 #endif
97