diff options
-rw-r--r-- | sim/common/ChangeLog | 6 | ||||
-rw-r--r-- | sim/common/Make-common.in | 27 | ||||
-rw-r--r-- | sim/common/sim-base.h | 20 |
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; |