summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sim/common/ChangeLog6
-rw-r--r--sim/common/Make-common.in27
-rw-r--r--sim/common/sim-base.h20
3 files changed, 51 insertions, 2 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 69ec9d5a648..768333a40fc 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,9 @@
+Tue Nov 18 15:53:45 1997 Doug Evans <devans@canuck.cygnus.com>
+
+ * Make-common.in (SIM_NEW_COMMON_OBJS): New variable.
+
+ * sim-base.h (CIA_ADDR): Provide default definition.
+
Mon Nov 17 14:15:31 1997 Doug Evans <devans@seba.cygnus.com>
* Make-common.in (srccom): New variable.
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index a1a63de96cf..f782e0537d3 100644
--- a/sim/common/Make-common.in
+++ b/sim/common/Make-common.in
@@ -125,6 +125,33 @@ SIM_EXTRA_INSTALL =
# Dependency of `clean' to clean any extra files.
SIM_EXTRA_CLEAN =
+# Every time a new general purpose source file was added every target's
+# Makefile.in needed to be updated to include the file in SIM_OBJS.
+# This doesn't scale.
+# This variable specifies all the generic stuff common to the newer simulators.
+# Things like sim-reason.o can't go here as the cpu may provide its own
+# (though hopefully in time that won't be so). Things like sim-bits.o can go
+# here. Some files are used by all simulators (e.g. callback.o).
+# Those files are specified in LIB_OBJS below.
+
+SIM_NEW_COMMON_OBJS = \
+ sim-bits.o \
+ sim-break.o \
+ sim-config.o \
+ sim-core.o \
+ sim-endian.o \
+ sim-events.o \
+ sim-fpu.o \
+ sim-io.o \
+ sim-load.o \
+ sim-memopt.o \
+ sim-module.o \
+ sim-options.o \
+ sim-profile.o \
+ sim-trace.o \
+ sim-utils.o \
+ sim-watch.o
+
## End COMMON_PRE_CONFIG_FRAG
## COMMON_POST_CONFIG_FRAG
diff --git a/sim/common/sim-base.h b/sim/common/sim-base.h
index 21be8057b73..231b26e79a8 100644
--- a/sim/common/sim-base.h
+++ b/sim/common/sim-base.h
@@ -62,9 +62,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#ifndef NULL_CIA
#define NULL_CIA ((sim_cia) 0)
#endif
+/* Return the current instruction address as a number.
+ Some targets treat the current instruction address as a struct
+ (e.g. for delay slot handling). */
+#ifndef CIA_ADDR
+#define CIA_ADDR(cia) (cia)
+#endif
#ifndef INVALID_INSTRUCTION_ADDRESS
#define INVALID_INSTRUCTION_ADDRESS ((address_word)0 - 1)
#endif
+
typedef struct _sim_cpu sim_cpu;
#include "sim-module.h"
@@ -80,7 +87,9 @@ typedef struct _sim_cpu sim_cpu;
#include "sim-engine.h"
#include "sim-watch.h"
#include "sim-memopt.h"
-
+#ifdef SIM_HAVE_BREAKPOINTS
+#include "sim-break.h"
+#endif
/* Global pointer to current state while sim_resume is running.
On a machine with lots of registers, it might be possible to reserve
@@ -153,6 +162,10 @@ typedef struct {
int verbose_p;
#define STATE_VERBOSE_P(sd) ((sd)->base.verbose_p)
+ /* Non cpu-specific trace data. See sim-trace.h. */
+ TRACE_DATA trace_data;
+#define STATE_TRACE_DATA(sd) (& (sd)->base.trace_data)
+
/* If non NULL, the BFD architecture specified on the command line */
const struct bfd_arch_info *architecture;
#define STATE_ARCHITECTURE(sd) ((sd)->base.architecture)
@@ -220,13 +233,16 @@ typedef struct {
sim_watchpoints watchpoints;
#define STATE_WATCHPOINTS(sd) (&(sd)->base.watchpoints)
+ /* Pointer to list of breakpoints */
+ struct sim_breakpoint *breakpoints;
+#define STATE_BREAKPOINTS(sd) ((sd)->base.breakpoints)
+
/* Marker for those wanting to do sanity checks.
This should remain the last member of this struct to help catch
miscompilation errors. */
int magic;
#define SIM_MAGIC_NUMBER 0x4242
#define STATE_MAGIC(sd) ((sd)->base.magic)
-
} sim_state_base;