xref: /netbsd-src/external/gpl3/gdb/dist/sim/common/sim-basics.h (revision 88241920d21b339bf319c0e979ffda80c49a2936)
1 /* The common simulator framework for GDB, the GNU Debugger.
2 
3    Copyright 2002-2024 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_BASICS_H
24 #define SIM_BASICS_H
25 
26 
27 /* Basic configuration */
28 
29 #include "defs.h"
30 
31 /* Basic host dependant mess - hopefully <stdio.h> + <stdarg.h> will
32    bring potential conflicts out in the open */
33 
34 #include <setjmp.h>
35 #include <stdarg.h>
36 #include <stdio.h>
37 
38 
39 #ifndef min
40 #define min(a, b) ((a) < (b) ? (a) : (b))
41 #endif
42 #ifndef max
43 #define max(a, b) ((a) > (b) ? (a) : (b))
44 #endif
45 
46 
47 /* Global types that code manipulates */
48 
49 struct hw;
50 struct _sim_fpu;
51 
52 
53 /* Generic address space (maps) and access attributes */
54 
55 enum {
56   read_map = 0,
57   write_map = 1,
58   exec_map = 2,
59   io_map = 3,
60   nr_maps = 32, /* something small */
61 };
62 
63 enum {
64   access_invalid = 0,
65   access_read = 1 << read_map,
66   access_write = 1 << write_map,
67   access_exec = 1 << exec_map,
68   access_io = 1 << io_map,
69 };
70 
71 enum {
72   access_read_write = (access_read | access_write),
73   access_read_exec = (access_read | access_exec),
74   access_write_exec = (access_write | access_exec),
75   access_read_write_exec = (access_read | access_write | access_exec),
76   access_read_io = (access_read | access_io),
77   access_write_io = (access_write | access_io),
78   access_read_write_io = (access_read | access_write | access_io),
79   access_exec_io = (access_exec | access_io),
80   access_read_exec_io = (access_read | access_exec | access_io),
81   access_write_exec_io = (access_write | access_exec | access_io),
82   access_read_write_exec_io = (access_read | access_write | access_exec | access_io),
83 };
84 
85 
86 /* disposition of an object when things are reset */
87 
88 typedef enum {
89   permanent_object,
90   temporary_object,
91 } object_disposition;
92 
93 
94 /* Memory transfer types */
95 
96 typedef enum _transfer_type {
97   read_transfer,
98   write_transfer,
99 } transfer_type;
100 
101 
102 /* directions */
103 
104 typedef enum {
105   bidirect_port,
106   input_port,
107   output_port,
108 } port_direction;
109 
110 
111 
112 /* Basic definitions - ordered so that nothing calls what comes after it.  */
113 
114 #include "sim/sim.h"
115 
116 #include "sim-config.h"
117 
118 #include "sim-inline.h"
119 
120 #include "sim-types.h"
121 #include "sim-bits.h"
122 #include "sim-endian.h"
123 
124 #include "sim-utils.h"
125 
126 /* Note: Only the simpler interfaces are defined here.  More heavy
127    weight objects, such as core and events, are defined in the more
128    serious sim-base.h header. */
129 
130 #endif /* SIM_BASICS_H */
131