1/* The common simulator framework for GDB, the GNU Debugger. 2 3 Copyright 2002, 2005, 2007 Free Software Foundation, Inc. 4 5 Contributed by Andrew Cagney and Red Hat. 6 7 This file is part of GDB. 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3 of the License, or 12 (at your option) any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 21 22 23#ifndef SIM_TYPES_H 24/* #define SIM_TYPES_H */ 25 26/* INTEGER QUANTITIES: 27 28 TYPES: 29 30 signed* signed type of the given size 31 unsigned* The corresponding insigned type 32 33 SIZES 34 35 *NN Size based on the number of bits 36 *_NN Size according to the number of bytes 37 *_word Size based on the target architecture's word 38 word size (32/64 bits) 39 *_cell Size based on the target architecture's 40 IEEE 1275 cell size (almost always 32 bits) 41 42*/ 43 44 45#if !defined (SIM_TYPES_H) && defined (__GNUC__) 46#define SIM_TYPES_H 47 48/* bit based */ 49 50#define UNSIGNED32(X) ((unsigned32) X##UL) 51#define UNSIGNED64(X) ((unsigned64) X##ULL) 52 53#define SIGNED32(X) ((signed32) X##L) 54#define SIGNED64(X) ((signed64) X##LL) 55 56typedef signed int signed8 __attribute__ ((__mode__ (__QI__))); 57typedef signed int signed16 __attribute__ ((__mode__ (__HI__))); 58typedef signed int signed32 __attribute__ ((__mode__ (__SI__))); 59typedef signed int signed64 __attribute__ ((__mode__ (__DI__))); 60 61typedef unsigned int unsigned8 __attribute__ ((__mode__ (__QI__))); 62typedef unsigned int unsigned16 __attribute__ ((__mode__ (__HI__))); 63typedef unsigned int unsigned32 __attribute__ ((__mode__ (__SI__))); 64typedef unsigned int unsigned64 __attribute__ ((__mode__ (__DI__))); 65 66typedef struct { unsigned64 a[2]; } unsigned128; 67typedef struct { signed64 a[2]; } signed128; 68 69#endif 70 71 72#if !defined (SIM_TYPES_H) && defined (_MSC_VER) 73#define SIM_TYPES_H 74 75/* bit based */ 76 77#define UNSIGNED32(X) (X##ui32) 78#define UNSIGNED64(X) (X##ui64) 79 80#define SIGNED32(X) (X##i32) 81#define SIGNED64(X) (X##i64) 82 83typedef signed char signed8; 84typedef signed short signed16; 85typedef signed int signed32; 86typedef signed __int64 signed64; 87 88typedef unsigned int unsigned8; 89typedef unsigned int unsigned16; 90typedef unsigned int unsigned32; 91typedef unsigned __int64 unsigned64; 92 93typedef struct { unsigned64 a[2]; } unsigned128; 94typedef struct { signed64 a[2]; } signed128; 95 96#endif /* _MSC_VER */ 97 98 99#if !defined (SIM_TYPES_H) 100#define SIM_TYPES_H 101 102/* bit based */ 103 104#define UNSIGNED32(X) (X##UL) 105#define UNSIGNED64(X) (X##ULL) 106 107#define SIGNED32(X) (X##L) 108#define SIGNED64(X) (X##LL) 109 110typedef signed char signed8; 111typedef signed short signed16; 112#if defined (__ALPHA__) 113typedef signed int signed32; 114typedef signed long signed64; 115#else 116typedef signed long signed32; 117typedef signed long long signed64; 118#endif 119 120typedef unsigned char unsigned8; 121typedef unsigned short unsigned16; 122#if defined (__ALPHA__) 123typedef unsigned int unsigned32; 124typedef unsigned long unsigned64; 125#else 126typedef unsigned long unsigned32; 127typedef unsigned long long unsigned64; 128#endif 129 130typedef struct { unsigned64 a[2]; } unsigned128; 131typedef struct { signed64 a[2]; } signed128; 132 133#endif 134 135 136/* byte based */ 137 138typedef signed8 signed_1; 139typedef signed16 signed_2; 140typedef signed32 signed_4; 141typedef signed64 signed_8; 142typedef signed128 signed_16; 143 144typedef unsigned8 unsigned_1; 145typedef unsigned16 unsigned_2; 146typedef unsigned32 unsigned_4; 147typedef unsigned64 unsigned_8; 148typedef unsigned128 unsigned_16; 149 150 151/* for general work, the following are defined */ 152/* unsigned: >= 32 bits */ 153/* signed: >= 32 bits */ 154/* long: >= 32 bits, sign undefined */ 155/* int: small indicator */ 156 157/* target architecture based */ 158#if (WITH_TARGET_WORD_BITSIZE == 64) 159typedef unsigned64 unsigned_word; 160typedef signed64 signed_word; 161#endif 162#if (WITH_TARGET_WORD_BITSIZE == 32) 163typedef unsigned32 unsigned_word; 164typedef signed32 signed_word; 165#endif 166#if (WITH_TARGET_WORD_BITSIZE == 16) 167typedef unsigned16 unsigned_word; 168typedef signed16 signed_word; 169#endif 170 171 172/* Other instructions */ 173#if (WITH_TARGET_ADDRESS_BITSIZE == 64) 174typedef unsigned64 unsigned_address; 175typedef signed64 signed_address; 176#endif 177#if (WITH_TARGET_ADDRESS_BITSIZE == 32) 178typedef unsigned32 unsigned_address; 179typedef signed32 signed_address; 180#endif 181#if (WITH_TARGET_ADDRESS_BITSIZE == 16) 182typedef unsigned16 unsigned_address; 183typedef signed16 signed_address; 184#endif 185typedef unsigned_address address_word; 186 187 188/* IEEE 1275 cell size */ 189#if (WITH_TARGET_CELL_BITSIZE == 64) 190typedef unsigned64 unsigned_cell; 191typedef signed64 signed_cell; 192#endif 193#if (WITH_TARGET_CELL_BITSIZE == 32) 194typedef unsigned32 unsigned_cell; 195typedef signed32 signed_cell; 196#endif 197typedef signed_cell cell_word; /* cells are normally signed */ 198 199 200/* Floating point registers */ 201#if (WITH_TARGET_FLOATING_POINT_BITSIZE == 64) 202typedef unsigned64 fp_word; 203#endif 204#if (WITH_TARGET_FLOATING_POINT_BITSIZE == 32) 205typedef unsigned32 fp_word; 206#endif 207 208#endif 209