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