misc.h revision 1.1.1.5
1/* The IGEN simulator generator for GDB, the GNU Debugger. 2 3 Copyright 2002-2016 Free Software Foundation, Inc. 4 5 Contributed by Andrew Cagney. 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 24/* Frustrating header junk */ 25 26#include "config.h" 27 28 29enum 30{ 31 default_insn_bit_size = 32, 32 max_insn_bit_size = 64, 33}; 34 35 36/* Define a 64bit data type */ 37 38#if defined __GNUC__ || defined _WIN32 39#ifdef __GNUC__ 40 41typedef long long signed64; 42typedef unsigned long long unsigned64; 43 44#else /* _WIN32 */ 45 46typedef __int64 signed64; 47typedef unsigned __int64 unsigned64; 48 49#endif /* _WIN32 */ 50#else /* Not GNUC or WIN32 */ 51/* Not supported */ 52#endif 53 54 55#include <stdio.h> 56#include <ctype.h> 57 58#ifdef HAVE_STRING_H 59#include <string.h> 60#else 61#ifdef HAVE_STRINGS_H 62#include <strings.h> 63#endif 64#endif 65 66#ifdef HAVE_STDLIB_H 67#include <stdlib.h> 68#endif 69 70#if !defined (__attribute__) && (!defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)) 71#define __attribute__(arg) 72#endif 73 74 75 76#include "filter_host.h" 77 78typedef struct _line_ref line_ref; 79struct _line_ref 80{ 81 const char *file_name; 82 int line_nr; 83}; 84 85/* Error appends a new line, warning and notify do not */ 86typedef void error_func (const line_ref *line, char *msg, ...); 87 88extern error_func error; 89extern error_func warning; 90extern error_func notify; 91 92 93#define ERROR(EXPRESSION) \ 94do { \ 95 line_ref line; \ 96 line.file_name = filter_filename (__FILE__); \ 97 line.line_nr = __LINE__; \ 98 error (&line, EXPRESSION); \ 99} while (0) 100 101#define ASSERT(EXPRESSION) \ 102do { \ 103 if (!(EXPRESSION)) { \ 104 line_ref line; \ 105 line.file_name = filter_filename (__FILE__); \ 106 line.line_nr = __LINE__; \ 107 error(&line, "assertion failed - %s\n", #EXPRESSION); \ 108 } \ 109} while (0) 110 111#define ZALLOC(TYPE) ((TYPE*) zalloc (sizeof(TYPE))) 112#define NZALLOC(TYPE,N) ((TYPE*) zalloc (sizeof(TYPE) * (N))) 113 114extern void *zalloc (long size); 115 116extern unsigned target_a2i (int ms_bit_nr, const char *a); 117 118extern unsigned i2target (int ms_bit_nr, unsigned bit); 119 120extern unsigned long long a2i (const char *a); 121 122 123/* Try looking for name in the map table (returning the corresponding 124 integer value). 125 126 If the the sentinal (NAME == NULL) its value if >= zero is returned 127 as the default. */ 128 129typedef struct _name_map 130{ 131 const char *name; 132 int i; 133} 134name_map; 135 136extern int name2i (const char *name, const name_map * map); 137 138extern const char *i2name (const int i, const name_map * map); 139