diff options
author | Doug Evans <dje@google.com> | 1998-01-20 06:17:32 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 1998-01-20 06:17:32 +0000 |
commit | 369fba30897458a842d6f599fde08b45804ebef3 (patch) | |
tree | 3e03819f99ab112e500ab9f13501f5b2eb2c85be /sim/m32r/sim-main.h | |
parent | 5d07b6cf9e5d11596d26b132761e2a4fbac0728f (diff) | |
download | binutils-369fba30897458a842d6f599fde08b45804ebef3.zip binutils-369fba30897458a842d6f599fde08b45804ebef3.tar.gz binutils-369fba30897458a842d6f599fde08b45804ebef3.tar.bz2 |
* arch.c, arch.h, cpuall.h: New files.
* arch-defs.h: Deleted.
* mloop.in: Renamed from mainloop.in.
* sem.c: Renamed from semantics.c.
* Makefile.in: Update.
* sem-ops.h: Deleted.
* mem-ops.h: Deleted.
start-sanitize-cygnus
Add cgen support for generating files.
end-sanitize-cygnus
(arch): Renamed from CPU.
* decode.c: Redone.
* decode.h: Redone.
* extract.c: Redone.
* model.c: Redone.
* sem-switch.c: Redone.
* sem.c: Renamed from semantics.c, and redone.
* m32r-sim.h (PROFILE_COUNT_FILLNOPS): Update.
(GETTWI,SETTWI,BRANCH_NEW_PC): Define.
* m32r.c (WANT_CPU,WANT_CPU_M32R): Define.
(m32r_{fetch,store}_register): New functions.
(model_mark_{get,set}_h_gr): Prefix with m32r_.
(m32r_model_mark_{busy,unbusy}_reg): Prefix with m32r_.
(h_cr_{get,set}): Prefix with m32r_.
(do_trap): Fetch state from current_cpu, not current_state.
Call sim_engine_halt instead of engine_halt.
* sim-if.c (alloc_cpu): New function.
(free_state): New function.
(sim_open): Call sim_state_alloc, and malloc space for selected cpu
type. Call sim_analyze_program.
(sim_create_inferior): Handle selected cpu type when setting PC.
start-sanitize-m32rx
(sim_resume): Handle m32rx.
end-sanitize-m32rx
(sim_stop_reason): Deleted.
(print_m32r_misc_cpu): Update.
start-sanitize-m32rx
(sim_{fetch,store}_register): Handle m32rx.
end-sanitize-m32rx
(sim_{read,write}): Deleted.
(sim_engine_illegal_insn): New function.
* sim-main.h: Don't include arch-defs.h,sim-core.h,sim-events.h.
Include arch.h,cpuall.h. Include cpu.h,decode.h if m32r.
start-sanitize-m32rx
Include cpux.h,decodex.h if m32rx.
end-sanitize-m32rx
(_sim_cpu): Include member appropriate cpu_data member for the cpu.
(M32R_MISC_PROFILE): Renamed from M32R_PROFILE.
(sim_state): Delete members core,events,halt_jmp_buf.
Change `cpu' member to be a pointer to the cpu's struct, rather than
record inside the state struct.
* tconfig.in (WITH_DEVICES): Define here.
(WITH_FAST,WITH_SEM_SWITCH_{FULL,FAST}): Define for the cpu.
Diffstat (limited to 'sim/m32r/sim-main.h')
-rw-r--r-- | sim/m32r/sim-main.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/sim/m32r/sim-main.h b/sim/m32r/sim-main.h new file mode 100644 index 0000000..fdb159c --- /dev/null +++ b/sim/m32r/sim-main.h @@ -0,0 +1,81 @@ +/* Main header for the m32r. */ + +#define USING_SIM_BASE_H /* FIXME: quick hack */ + +struct _sim_cpu; /* FIXME: should be in sim-basics.h */ +typedef struct _sim_cpu SIM_CPU; + +/* sim-basics.h includes config.h but cgen-types.h must be included before + sim-basics.h and cgen-types.h needs config.h. */ +#include "config.h" + +#include "cgen-types.h" +#include "arch.h" /* machine generated */ +#include "sim-basics.h" + +/* These must be defined before sim-base.h. */ +typedef SI sim_cia; + +/* FIXME: Shouldn't be required to define these this early. */ +#define SIM_ENGINE_HALT_HOOK(SD, LAST_CPU, CIA) +#define SIM_ENGINE_RESTART_HOOK(SD, LAST_CPU, CIA) + +#include "sim-base.h" +#include "cgen-sim.h" +/*#include "cgen-mem.h"*/ +#include "cgen-trace.h" +#include "cpu-opc.h" /* Needed for INSN_NAME. */ +#include "cpu-sim.h" + +#ifdef WANT_CPU_M32R +#include "cpu.h" /* machine generated */ +#include "decode.h" /* machine generated */ +#endif +/* start-sanitize-m32rx */ +#ifdef WANT_CPU_M32RX +#include "cpux.h" /* machine generated */ +#include "decodex.h" /* machine generated */ +#endif +/* end-sanitize-m32rx */ +#include "cpuall.h" /* machine generated */ + +/* Misc. profile data. */ +typedef struct { + /* nop insn slot filler count */ + unsigned int fillnop_count; +} M32R_MISC_PROFILE; + +struct _sim_cpu { + sim_cpu_base base; + + /* Non-machine generated parts of cgen. */ + CGEN_CPU cgen_cpu; + + /* Machine generated and cpu specific parts go here. + Note that in files that don't need to access these pieces WANT_CPU_FOO + won't be defined and thus these parts won't appear. This is ok. + One has to of course be careful to not take the size of this + struct, etc. */ +#if defined (WANT_CPU_M32R) + M32R_CPU_DATA cpu_data; +#elif defined (WANT_CPU_M32RX) + M32RX_CPU_DATA cpu_data; + PARALLEL_EXEC par_exec; +#define CPU_PAR_EXEC(cpu) (& (cpu)->par_exec) +#endif + + M32R_MISC_PROFILE m32r_misc_profile; +#define CPU_M32R_MISC_PROFILE(cpu) ((cpu)->m32r_misc_profile) +}; + +struct sim_state { + sim_cpu *cpu; +#define STATE_CPU(sd, n) (/*&*/ (sd)->cpu) + + CGEN_STATE cgen_state; + + sim_state_base base; +}; + +/* Default memory size. */ +#define M32R_DEFAULT_MEM_SIZE 0x800000 /* 8M */ |