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