diff options
author | David Edelsohn <dje.gcc@gmail.com> | 1997-04-03 02:37:44 +0000 |
---|---|---|
committer | David Edelsohn <dje.gcc@gmail.com> | 1997-04-03 02:37:44 +0000 |
commit | e77fd2694b5d979b961fe876b867b9f8f640b729 (patch) | |
tree | 3027e43535a671e2fd0c153e3b214c6703f9805b /sim/common/sim-base.h | |
parent | 00d74d3ea10224b732d818b5eb14a04a51e75443 (diff) | |
download | binutils-gdb-e77fd2694b5d979b961fe876b867b9f8f640b729.tar.gz |
New files.
Diffstat (limited to 'sim/common/sim-base.h')
-rw-r--r-- | sim/common/sim-base.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/sim/common/sim-base.h b/sim/common/sim-base.h new file mode 100644 index 00000000000..150b0835df4 --- /dev/null +++ b/sim/common/sim-base.h @@ -0,0 +1,80 @@ +/* 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 */ |