* defs.h (enum misc_command_type, command_control_type): Enums
[deliverable/binutils-gdb.git] / gdb / remote-sim.h
CommitLineData
b562a186 1/* This file defines the interface between the simulator and gdb.
47424e79 2 Copyright (C) 1993, 1994 Free Software Foundation, Inc.
b562a186
DE
3
4This file is part of GDB.
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
18Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
19
20#if !defined (REMOTE_SIM_H)
21#define REMOTE_SIM_H 1
22
c7efaa16
DE
23/* This file is used when building stand-alone simulators, so isolate this
24 file from gdb. */
25
26/* Pick up CORE_ADDR_TYPE if defined (from gdb), otherwise use same value as
27 gdb does (unsigned int - from defs.h). */
28
29#ifndef CORE_ADDR_TYPE
30typedef unsigned int SIM_ADDR;
31#else
32typedef CORE_ADDR_TYPE SIM_ADDR;
33#endif
34
47424e79
DE
35/* Callbacks.
36 The simulator may use the following callbacks (gdb routines) which the
37 standalone program must provide.
b562a186 38
47424e79
DE
39 void printf_filtered (char *msg, ...);
40 void error /-* noreturn *-/ (char *msg, ...);
41 void *xmalloc (long size);
42*/
b562a186
DE
43
44/* Main simulator entry points ...
45
47424e79
DE
46 All functions that can get an error must call the gdb routine `error',
47 they can only return upon success. */
b562a186
DE
48
49/* Initialize the simulator. This function is called when the simulator
50 is selected from the command line. ARGS is passed from the command line
51 and can be used to select whatever run time options the simulator provides.
47424e79
DE
52 ARGS is the raw character string and must be parsed by the simulator,
53 which is trivial to do with the buildargv function in libiberty.
54 It is ok to do nothing. */
40b92220 55
47424e79 56void sim_open PARAMS ((char *args));
b562a186 57
47424e79
DE
58/* Terminate usage of the simulator. This may involve freeing target memory
59 and closing any open files and mmap'd areas. You cannot assume sim_kill
60 has already been called.
61 QUITTING is non-zero if we cannot hang on errors. */
b562a186 62
47424e79 63void sim_close PARAMS ((int quitting));
b562a186 64
47424e79
DE
65/* Load program PROG into the simulator.
66 Return non-zero if you wish the caller to handle it
67 (it is done this way because most simulators can use gr_load_image,
68 but defining it as a callback seems awkward). */
b562a186 69
47424e79 70int sim_load PARAMS ((char *prog, int from_tty));
b562a186 71
47424e79
DE
72/* Prepare to run the simulated program.
73 START_ADDRESS is, yes, you guessed it, the start address of the program.
74 ARGV and ENV are NULL terminated lists of pointers.
75 Gdb will set the start address via sim_store_register as well, but
76 standalone versions of existing simulators are not set up to cleanly call
77 sim_store_register, so the START_ADDRESS argument is there as a
78 workaround. */
b562a186 79
47424e79
DE
80void sim_create_inferior PARAMS ((SIM_ADDR start_address,
81 char **argv, char **env));
b562a186
DE
82
83/* Kill the running program.
84 This may involve closing any open files and deleting any mmap'd areas. */
85
47424e79 86void sim_kill PARAMS ((void));
b562a186 87
592f517a
DE
88/* Read LENGTH bytes of the simulated program's memory and store in BUF.
89 Result is number of bytes read, or zero if error. */
b562a186 90
c7efaa16 91int sim_read PARAMS ((SIM_ADDR mem, unsigned char *buf, int length));
b562a186 92
592f517a
DE
93/* Store LENGTH bytes from BUF in the simulated program's memory.
94 Result is number of bytes write, or zero if error. */
b562a186 95
c7efaa16 96int sim_write PARAMS ((SIM_ADDR mem, unsigned char *buf, int length));
b562a186 97
47424e79 98/* Fetch register REGNO and store the raw value in BUF. */
b562a186 99
47424e79
DE
100void sim_fetch_register PARAMS ((int regno, unsigned char *buf));
101
102/* Store register REGNO from BUF (in raw format). */
b562a186 103
47424e79
DE
104void sim_store_register PARAMS ((int regno, unsigned char *buf));
105
106/* Print some interesting information about the simulator.
107 VERBOSE is non-zero for the wordy version. */
b562a186 108
47424e79 109void sim_info PARAMS ((int verbose));
b562a186 110
592f517a
DE
111/* Fetch why the program stopped.
112 SIGRC will contain either the argument to exit() or the signal number. */
b562a186 113
592f517a
DE
114enum sim_stop { sim_exited, sim_stopped, sim_signalled };
115
47424e79 116void sim_stop_reason PARAMS ((enum sim_stop *reason, int *sigrc));
b562a186
DE
117
118/* Run (or resume) the program. */
119
47424e79 120void sim_resume PARAMS ((int step, int siggnal));
b562a186
DE
121
122#endif /* !defined (REMOTE_SIM_H) */
This page took 0.096514 seconds and 4 git commands to generate.