diff options
author | Mike Frysinger <vapier@gentoo.org> | 2022-12-23 00:49:09 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2022-12-23 08:32:59 -0500 |
commit | f51d9c6a77ef3c3e24242555babad61f8446e7aa (patch) | |
tree | f73164c1541cee133228c45f9446198999a02a0e /sim/m32r | |
parent | 218366690f0e29bf88bd6e73863f75510191406e (diff) | |
download | binutils-f51d9c6a77ef3c3e24242555babad61f8446e7aa.zip binutils-f51d9c6a77ef3c3e24242555babad61f8446e7aa.tar.gz binutils-f51d9c6a77ef3c3e24242555babad61f8446e7aa.tar.bz2 |
sim: m32r: move arch-specific settings to internal header
There's no need for these settings to be in sim-main.h which is shared
with common/ sim code, so move it all out to the existing m32r-sim.h.
Unfortunately, we can't yet drop the m32r-sim.h include from sim-main.h
as many of the generated CGEN files refer only to sim-main.h. We'll
have to improve the CGEN interface before we can make more progress,
but this is at least a minor improvement.
Diffstat (limited to 'sim/m32r')
-rw-r--r-- | sim/m32r/m32r-sim.h | 22 | ||||
-rw-r--r-- | sim/m32r/m32r.c | 2 | ||||
-rw-r--r-- | sim/m32r/m32r2.c | 2 | ||||
-rw-r--r-- | sim/m32r/m32rx.c | 2 | ||||
-rw-r--r-- | sim/m32r/sim-if.c | 1 | ||||
-rw-r--r-- | sim/m32r/sim-main.h | 24 | ||||
-rw-r--r-- | sim/m32r/traps.c | 2 |
7 files changed, 33 insertions, 22 deletions
diff --git a/sim/m32r/m32r-sim.h b/sim/m32r/m32r-sim.h index fc41c21..3586f32 100644 --- a/sim/m32r/m32r-sim.h +++ b/sim/m32r/m32r-sim.h @@ -166,5 +166,27 @@ do { \ /* Handle the trap insn. */ USI m32r_trap (SIM_CPU *, PCADDR, int); + +struct m32r_sim_cpu { + M32R_MISC_PROFILE m32r_misc_profile; +#define CPU_M32R_MISC_PROFILE(cpu) (& M32R_SIM_CPU (cpu)->m32r_misc_profile) + + /* 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 in the + sense that things work. It is a source of bugs though. + One has to of course be careful to not take the size of this + struct and no structure members accessed in non-cpu specific files can + go after here. Oh for a better language. */ +#if defined (WANT_CPU_M32RBF) + M32RBF_CPU_DATA cpu_data; +#endif +#if defined (WANT_CPU_M32RXF) + M32RXF_CPU_DATA cpu_data; +#elif defined (WANT_CPU_M32R2F) + M32R2F_CPU_DATA cpu_data; +#endif +}; +#define M32R_SIM_CPU(cpu) ((struct m32r_sim_cpu *) CPU_ARCH_DATA (cpu)) #endif /* M32R_SIM_H */ diff --git a/sim/m32r/m32r.c b/sim/m32r/m32r.c index 478a45c..014aa71 100644 --- a/sim/m32r/m32r.c +++ b/sim/m32r/m32r.c @@ -28,6 +28,8 @@ #include "cgen-ops.h" #include <stdlib.h> +#include "m32r-sim.h" + /* Return the size of REGNO in bytes. */ static int diff --git a/sim/m32r/m32r2.c b/sim/m32r/m32r2.c index 8881bc68..b95e509 100644 --- a/sim/m32r/m32r2.c +++ b/sim/m32r/m32r2.c @@ -27,6 +27,8 @@ #include "cgen-mem.h" #include "cgen-ops.h" +#include "m32r-sim.h" + /* The contents of BUF are in target byte order. */ int diff --git a/sim/m32r/m32rx.c b/sim/m32r/m32rx.c index e5724c5..52073e1 100644 --- a/sim/m32r/m32rx.c +++ b/sim/m32r/m32rx.c @@ -27,6 +27,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "cgen-mem.h" #include "cgen-ops.h" +#include "m32r-sim.h" + /* The contents of BUF are in target byte order. */ int diff --git a/sim/m32r/sim-if.c b/sim/m32r/sim-if.c index e115454..c8c04b3 100644 --- a/sim/m32r/sim-if.c +++ b/sim/m32r/sim-if.c @@ -30,6 +30,7 @@ #include "libiberty.h" #include "bfd.h" +#include "m32r-sim.h" #include "dv-m32r_uart.h" #define M32R_DEFAULT_MEM_SIZE 0x2000000 /* 32M */ diff --git a/sim/m32r/sim-main.h b/sim/m32r/sim-main.h index 7096232..9a52563 100644 --- a/sim/m32r/sim-main.h +++ b/sim/m32r/sim-main.h @@ -14,29 +14,9 @@ #include "arch.h" #include "sim-base.h" #include "cgen-sim.h" -#include "m32r-sim.h" - -struct m32r_sim_cpu { - M32R_MISC_PROFILE m32r_misc_profile; -#define CPU_M32R_MISC_PROFILE(cpu) (& M32R_SIM_CPU (cpu)->m32r_misc_profile) - /* 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 in the - sense that things work. It is a source of bugs though. - One has to of course be careful to not take the size of this - struct and no structure members accessed in non-cpu specific files can - go after here. Oh for a better language. */ -#if defined (WANT_CPU_M32RBF) - M32RBF_CPU_DATA cpu_data; -#endif -#if defined (WANT_CPU_M32RXF) - M32RXF_CPU_DATA cpu_data; -#elif defined (WANT_CPU_M32R2F) - M32R2F_CPU_DATA cpu_data; -#endif -}; -#define M32R_SIM_CPU(cpu) ((struct m32r_sim_cpu *) CPU_ARCH_DATA (cpu)) +/* TODO: Move this to the CGEN generated files instead. */ +#include "m32r-sim.h" /* Misc. */ diff --git a/sim/m32r/traps.c b/sim/m32r/traps.c index 12a87b4..b82f974 100644 --- a/sim/m32r/traps.c +++ b/sim/m32r/traps.c @@ -55,6 +55,8 @@ #include <linux/unistd.h> #endif +#include "m32r-sim.h" + #define TRAP_LINUX_SYSCALL 2 #define TRAP_FLUSH_CACHE 12 /* The semantic code invokes this for invalid (unrecognized) instructions. */ |