]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/common/sim-basics.h
sim: split sim-signal.h include out
[thirdparty/binutils-gdb.git] / sim / common / sim-basics.h
CommitLineData
b85e4829
AC
1/* The common simulator framework for GDB, the GNU Debugger.
2
3666a048 3 Copyright 2002-2021 Free Software Foundation, Inc.
b85e4829
AC
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
4744ac1b 11 the Free Software Foundation; either version 3 of the License, or
b85e4829
AC
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
4744ac1b 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
21
22
618b526e
MF
23#ifndef SIM_BASICS_H
24#define SIM_BASICS_H
c906108c
SS
25
26
27/* Basic configuration */
28
6df01ab8 29#include "defs.h"
c906108c
SS
30
31/* Basic host dependant mess - hopefully <stdio.h> + <stdarg.h> will
32 bring potential conflicts out in the open */
33
34#include <stdarg.h>
35#include <stdio.h>
36#include <setjmp.h>
37
c906108c 38
bc273e17
MF
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
028f6515 46
c906108c
SS
47/* Global types that code manipulates */
48
c906108c
SS
49struct hw;
50struct _sim_fpu;
51
52
53/* Generic address space (maps) and access attributes */
54
55enum {
56 read_map = 0,
57 write_map = 1,
58 exec_map = 2,
59 io_map = 3,
60 nr_maps = 32, /* something small */
61};
62
63enum {
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
71enum {
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
88typedef enum {
89 permenant_object,
90 temporary_object,
91} object_disposition;
92
93
94/* Memory transfer types */
95
96typedef enum _transfer_type {
97 read_transfer,
98 write_transfer,
99} transfer_type;
100
101
102/* directions */
103
104typedef enum {
105 bidirect_port,
106 input_port,
107 output_port,
108} port_direction;
109
110
111\f
112/* Basic definitions - ordered so that nothing calls what comes after it. */
113
c906108c 114#include "ansidecl.h"
df68e12b 115#include "sim/sim.h"
c906108c
SS
116
117#include "sim-config.h"
118
119#include "sim-inline.h"
120
121#include "sim-types.h"
122#include "sim-bits.h"
123#include "sim-endian.h"
c906108c
SS
124
125#include "sim-utils.h"
126
127/* Note: Only the simpler interfaces are defined here. More heavy
128 weight objects, such as core and events, are defined in the more
129 serious sim-base.h header. */
130
618b526e 131#endif /* SIM_BASICS_H */