* Makefile.in (LIBCOMMON): Define.
[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
6c9638b4 18Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
b562a186
DE
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 error /-* noreturn *-/ (char *msg, ...);
40 void *xmalloc (long size);
4a29aa84 41
4da8b2a5
DE
42 I/O is done by using a pointer provided by GDB via the sim_set_callbacks
43 call, look in callbacks.c to see what can be done.
47424e79 44*/
b562a186
DE
45
46/* Main simulator entry points ...
47
47424e79
DE
48 All functions that can get an error must call the gdb routine `error',
49 they can only return upon success. */
b562a186
DE
50
51/* Initialize the simulator. This function is called when the simulator
52 is selected from the command line. ARGS is passed from the command line
53 and can be used to select whatever run time options the simulator provides.
47424e79
DE
54 ARGS is the raw character string and must be parsed by the simulator,
55 which is trivial to do with the buildargv function in libiberty.
56 It is ok to do nothing. */
40b92220 57
47424e79 58void sim_open PARAMS ((char *args));
b562a186 59
47424e79
DE
60/* Terminate usage of the simulator. This may involve freeing target memory
61 and closing any open files and mmap'd areas. You cannot assume sim_kill
62 has already been called.
63 QUITTING is non-zero if we cannot hang on errors. */
b562a186 64
47424e79 65void sim_close PARAMS ((int quitting));
b562a186 66
47424e79
DE
67/* Load program PROG into the simulator.
68 Return non-zero if you wish the caller to handle it
69 (it is done this way because most simulators can use gr_load_image,
70 but defining it as a callback seems awkward). */
b562a186 71
47424e79 72int sim_load PARAMS ((char *prog, int from_tty));
b562a186 73
47424e79
DE
74/* Prepare to run the simulated program.
75 START_ADDRESS is, yes, you guessed it, the start address of the program.
76 ARGV and ENV are NULL terminated lists of pointers.
77 Gdb will set the start address via sim_store_register as well, but
78 standalone versions of existing simulators are not set up to cleanly call
79 sim_store_register, so the START_ADDRESS argument is there as a
80 workaround. */
b562a186 81
47424e79
DE
82void sim_create_inferior PARAMS ((SIM_ADDR start_address,
83 char **argv, char **env));
b562a186
DE
84
85/* Kill the running program.
86 This may involve closing any open files and deleting any mmap'd areas. */
87
47424e79 88void sim_kill PARAMS ((void));
b562a186 89
592f517a
DE
90/* Read LENGTH bytes of the simulated program's memory and store in BUF.
91 Result is number of bytes read, or zero if error. */
b562a186 92
c7efaa16 93int sim_read PARAMS ((SIM_ADDR mem, unsigned char *buf, int length));
b562a186 94
592f517a
DE
95/* Store LENGTH bytes from BUF in the simulated program's memory.
96 Result is number of bytes write, or zero if error. */
b562a186 97
c7efaa16 98int sim_write PARAMS ((SIM_ADDR mem, unsigned char *buf, int length));
b562a186 99
47424e79 100/* Fetch register REGNO and store the raw value in BUF. */
b562a186 101
47424e79
DE
102void sim_fetch_register PARAMS ((int regno, unsigned char *buf));
103
104/* Store register REGNO from BUF (in raw format). */
b562a186 105
47424e79
DE
106void sim_store_register PARAMS ((int regno, unsigned char *buf));
107
108/* Print some interesting information about the simulator.
109 VERBOSE is non-zero for the wordy version. */
b562a186 110
47424e79 111void sim_info PARAMS ((int verbose));
b562a186 112
592f517a
DE
113/* Fetch why the program stopped.
114 SIGRC will contain either the argument to exit() or the signal number. */
b562a186 115
592f517a
DE
116enum sim_stop { sim_exited, sim_stopped, sim_signalled };
117
47424e79 118void sim_stop_reason PARAMS ((enum sim_stop *reason, int *sigrc));
b562a186
DE
119
120/* Run (or resume) the program. */
121
47424e79 122void sim_resume PARAMS ((int step, int siggnal));
b562a186 123
fb506180
SS
124/* Passthru for other commands that the simulator might support. */
125
126void sim_do_command PARAMS ((char *cmd));
127
4a29aa84
SC
128/* Provide simulator with a standard host_callback_struct. */
129
130void sim_set_callbacks PARAMS ((struct host_callback_struct *));
131
b562a186 132#endif /* !defined (REMOTE_SIM_H) */
This page took 0.223609 seconds and 4 git commands to generate.