From e77fd2694b5d979b961fe876b867b9f8f640b729 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Thu, 3 Apr 1997 02:37:44 +0000 Subject: New files. --- sim/common/.Sanitize | 2 ++ sim/common/sim-base.h | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 sim/common/sim-base.h diff --git a/sim/common/.Sanitize b/sim/common/.Sanitize index 3ca6ea1..5b660ac 100644 --- a/sim/common/.Sanitize +++ b/sim/common/.Sanitize @@ -38,6 +38,7 @@ run.c run.1 sim-assert.h sim-alu.h +sim-base.h sim-basics.h sim-bits.c sim-bits.h @@ -56,6 +57,7 @@ sim-n-bits.h sim-n-core.h sim-n-endian.h sim-types.h +sim-utils.c sim-xcat.h tconfig.in diff --git a/sim/common/sim-base.h b/sim/common/sim-base.h new file mode 100644 index 0000000..150b083 --- /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 */ -- cgit v1.1