From: Mike Frysinger Date: Fri, 23 Dec 2022 05:49:09 +0000 (-0500) Subject: sim: m32r: move arch-specific settings to internal header X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f51d9c6a77ef3c3e24242555babad61f8446e7aa;p=binutils-gdb.git 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. --- diff --git a/sim/m32r/m32r-sim.h b/sim/m32r/m32r-sim.h index fc41c2146f7..3586f329788 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 478a45c2586..014aa712c16 100644 --- a/sim/m32r/m32r.c +++ b/sim/m32r/m32r.c @@ -28,6 +28,8 @@ #include "cgen-ops.h" #include +#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 8881bc68081..b95e509a41a 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 e5724c5410d..52073e1344a 100644 --- a/sim/m32r/m32rx.c +++ b/sim/m32r/m32rx.c @@ -27,6 +27,8 @@ along with this program. If not, see . */ #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 e11545461c5..c8c04b38b68 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 70962320dfc..9a52563f25a 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 12a87b4a697..b82f974dc53 100644 --- a/sim/m32r/traps.c +++ b/sim/m32r/traps.c @@ -55,6 +55,8 @@ #include #endif +#include "m32r-sim.h" + #define TRAP_LINUX_SYSCALL 2 #define TRAP_FLUSH_CACHE 12 /* The semantic code invokes this for invalid (unrecognized) instructions. */