mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-14 07:38:41 +00:00
81 lines
2.6 KiB
C
81 lines
2.6 KiB
C
/* Simulator pseudo baseclass.
|
|
Copyright (C) 1997 Free Software Foundation, Inc.
|
|
Contributed by Cygnus Support.
|
|
|
|
This file is part of GDB, the GNU debugger.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
|
|
/* This file is meant to be included by sim-basics.h. */
|
|
|
|
#ifndef SIM_BASE_H
|
|
#define SIM_BASE_H
|
|
|
|
/* Global pointer to current state while sim_resume is running.
|
|
On a machine with lots of registers, it might be possible to reserve
|
|
one of them for current_state. However on a machine with few registers
|
|
current_state can't permanently live in one and indirecting through it
|
|
will be slower [in which case one can have sim_resume set globals from
|
|
current_state for faster access].
|
|
If CURRENT_STATE_REG is defined, it means current_state is living in
|
|
a global register. */
|
|
|
|
#ifdef CURRENT_STATE_REG
|
|
/* FIXME: wip */
|
|
#else
|
|
extern struct sim_state *current_state;
|
|
#endif
|
|
|
|
/* Simulator state pseudo base-class.
|
|
Each simulator is required to have a sim-main.h file that includes
|
|
sim-basics.h and defines struct sim_state to be:
|
|
|
|
struct sim_state {
|
|
struct sim_state_base base;
|
|
... simulator specific members ...
|
|
};
|
|
*/
|
|
|
|
struct sim_state_base {
|
|
/* Marker for those wanting to do sanity checks. */
|
|
int magic;
|
|
#define SIM_MAGIC_NUMBER 0x4242
|
|
#define STATE_MAGIC(sd) ((sd)->base.magic)
|
|
|
|
/* Simulator's argv[0]. */
|
|
const char *my_name;
|
|
#define STATE_MY_NAME(sd) ((sd)->base.my_name)
|
|
|
|
/* Who opened the simulator. */
|
|
SIM_OPEN_KIND open_kind;
|
|
#define STATE_OPEN_KIND(sd) ((sd)->base.open_kind)
|
|
|
|
/* The host callbacks. */
|
|
struct host_callback_struct *callback;
|
|
#define STATE_CALLBACK(sd) ((sd)->base.callback)
|
|
|
|
#if 0 /* FIXME: Not ready yet. */
|
|
/* Stuff defined in sim-config.h. */
|
|
struct sim_config config;
|
|
#define STATE_CONFIG(sd) ((sd)->base.config)
|
|
#endif
|
|
};
|
|
|
|
/* Functions for allocating/freeing a sim_state. */
|
|
SIM_DESC sim_state_alloc PARAMS ((void));
|
|
void sim_state_free PARAMS ((SIM_DESC));
|
|
|
|
#endif /* SIM_BASE_H */
|