xref: /netbsd-src/external/gpl3/gdb.old/dist/sim/ppc/misc.h (revision 8b657b0747480f8989760d71343d6dd33f8d4cf9)
1 /*  This file is part of the program psim.
2 
3     Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au>
4 
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 3 of the License, or
8     (at your option) any later version.
9 
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14 
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, see <http://www.gnu.org/licenses/>.
17 
18     */
19 
20 
21 /* Frustrating header junk */
22 
23 #include "build-config.h"
24 
25 #include <stdio.h>
26 #include <ctype.h>
27 #include <string.h>
28 #include <stdlib.h>
29 
30 #include "ansidecl.h"
31 #include "filter_filename.h"
32 
33 extern void error (const char *msg, ...)
34   ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
35 
36 #define ASSERT(EXPRESSION) \
37 do { \
38   if (!(EXPRESSION)) { \
39     error("%s:%d: assertion failed - %s\n", \
40 	  filter_filename (__FILE__), __LINE__, #EXPRESSION); \
41   } \
42 } while (0)
43 
44 #define ZALLOC(TYPE) (TYPE*)zalloc(sizeof(TYPE))
45 #define NZALLOC(TYPE,N) ((TYPE*) zalloc (sizeof(TYPE) * (N)))
46 
47 extern void *zalloc
48 (long size);
49 
50 extern void dumpf (int indent, const char *msg, ...)
51   ATTRIBUTE_PRINTF (2, 3);
52 
53 extern unsigned target_a2i
54 (int ms_bit_nr,
55  const char *a);
56 
57 extern unsigned i2target
58 (int ms_bit_nr,
59  unsigned bit);
60 
61 extern unsigned a2i
62 (const char *a);
63 
64 /* Try looking for name in the map table (returning the corresponding
65    integer value).  If that fails, try converting the name into an
66    integer */
67 
68 typedef struct _name_map {
69   const char *name;
70   int i;
71 } name_map;
72 
73 extern int name2i
74 (const char *name,
75  const name_map *map);
76 
77 extern const char *i2name
78 (const int i,
79  const name_map *map);
80