From: Mike Frysinger Date: Wed, 15 Apr 2015 05:22:34 +0000 (-0400) Subject: sim: cris/frv/h8300/iq2000/lm32/m32r/sh64: standardize cpu state X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f95f4ed2c4680fea68399691481b277ece11570e;p=binutils-gdb.git sim: cris/frv/h8300/iq2000/lm32/m32r/sh64: standardize cpu state This sets up the sim_state structure and the cpu member to match what we do in most other sims, and what the common code suggests. This is a step to unifying on the sim-cpu.o object. --- diff --git a/sim/cris/ChangeLog b/sim/cris/ChangeLog index b69e20fc63a..b1ac59136fc 100644 --- a/sim/cris/ChangeLog +++ b/sim/cris/ChangeLog @@ -1,3 +1,8 @@ +2015-04-15 Mike Frysinger + + * sim-main.h (struct sim_state): Change cpu to an array of pointers. + (STATE_CPU): Handle WITH_SMP. + 2015-04-13 Mike Frysinger * configure: Regenerate. diff --git a/sim/cris/sim-main.h b/sim/cris/sim-main.h index 18c536ff690..5ae292e9987 100644 --- a/sim/cris/sim-main.h +++ b/sim/cris/sim-main.h @@ -225,8 +225,12 @@ struct _sim_cpu { /* The sim_state struct. */ struct sim_state { - sim_cpu *cpu; -#define STATE_CPU(sd, n) (/*&*/ (sd)->cpu) + sim_cpu *cpu[MAX_NR_PROCESSORS]; +#if (WITH_SMP) +#define STATE_CPU(sd,n) ((sd)->cpu[n]) +#else +#define STATE_CPU(sd,n) ((sd)->cpu[0]) +#endif CGEN_STATE cgen_state; diff --git a/sim/frv/ChangeLog b/sim/frv/ChangeLog index 9580c5649ca..8e7e995b4b4 100644 --- a/sim/frv/ChangeLog +++ b/sim/frv/ChangeLog @@ -1,3 +1,8 @@ +2015-04-15 Mike Frysinger + + * sim-main.h (struct sim_state): Change cpu to an array of pointers. + (STATE_CPU): Handle WITH_SMP. + 2015-04-13 Mike Frysinger * configure: Regenerate. diff --git a/sim/frv/sim-main.h b/sim/frv/sim-main.h index 7528f6acea3..e7dc1a2d915 100644 --- a/sim/frv/sim-main.h +++ b/sim/frv/sim-main.h @@ -118,8 +118,12 @@ struct _sim_cpu { /* The sim_state struct. */ struct sim_state { - sim_cpu *cpu; -#define STATE_CPU(sd, n) (/*&*/ (sd)->cpu) + sim_cpu *cpu[MAX_NR_PROCESSORS]; +#if (WITH_SMP) +#define STATE_CPU(sd,n) ((sd)->cpu[n]) +#else +#define STATE_CPU(sd,n) ((sd)->cpu[0]) +#endif CGEN_STATE cgen_state; diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog index 215a182fbc2..1740b3db50e 100644 --- a/sim/h8300/ChangeLog +++ b/sim/h8300/ChangeLog @@ -1,3 +1,10 @@ +2015-04-15 Mike Frysinger + + * compile.c: Include sim-options.h. + (sim_open): Call sim_cpu_alloc_all instead of sim_cpu_alloc. + * sim-main.h (struct sim_state): Change cpu to an array of pointers. + (STATE_CPU): Handle WITH_SMP. + 2015-04-13 Mike Frysinger * configure: Regenerate. diff --git a/sim/h8300/compile.c b/sim/h8300/compile.c index 2574168e33b..e14c3ab6255 100644 --- a/sim/h8300/compile.c +++ b/sim/h8300/compile.c @@ -34,6 +34,7 @@ #include "gdb/sim-h8300.h" #include "sys/stat.h" #include "sys/types.h" +#include "sim-options.h" #ifndef SIGTRAP # define SIGTRAP 5 @@ -4886,7 +4887,14 @@ sim_open (SIM_OPEN_KIND kind, sim_cpu *cpu; sd = sim_state_alloc (kind, callback); - sd->cpu = sim_cpu_alloc (sd, 0); + + /* The cpu data is kept in a separately allocated chunk of memory. */ + if (sim_cpu_alloc_all (sd, 1, /*cgen_cpu_max_extra_bytes ()*/0) != SIM_RC_OK) + { + free_state (sd); + return 0; + } + cpu = STATE_CPU (sd, 0); SIM_ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER); sim_state_initialize (sd, cpu); diff --git a/sim/h8300/sim-main.h b/sim/h8300/sim-main.h index 964388ac560..7126fa35c00 100644 --- a/sim/h8300/sim-main.h +++ b/sim/h8300/sim-main.h @@ -138,7 +138,7 @@ struct _sim_cpu { /* The sim_state struct. */ struct sim_state { - struct _sim_cpu *cpu; + sim_cpu *cpu[MAX_NR_PROCESSORS]; unsigned int sim_cache_size; decoded_inst *sim_cache; unsigned short *cache_idx; @@ -155,7 +155,11 @@ struct sim_state { #define CIA_GET(CPU) (cpu_get_pc (CPU)) #define CIA_SET(CPU, VAL) (cpu_set_pc ((CPU), (VAL))) -#define STATE_CPU(SD, N) ((SD)->cpu) /* Single Processor. */ +#if (WITH_SMP) +#define STATE_CPU(sd,n) ((sd)->cpu[n]) +#else +#define STATE_CPU(sd,n) ((sd)->cpu[0]) +#endif #define cpu_set_pc(CPU, VAL) (((CPU)->pc) = (VAL)) #define cpu_get_pc(CPU) (((CPU)->pc)) diff --git a/sim/iq2000/ChangeLog b/sim/iq2000/ChangeLog index 9da17e59084..b590cb043a8 100644 --- a/sim/iq2000/ChangeLog +++ b/sim/iq2000/ChangeLog @@ -1,3 +1,8 @@ +2015-04-15 Mike Frysinger + + * sim-main.h (struct sim_state): Change cpu to an array of pointers. + (STATE_CPU): Handle WITH_SMP. + 2015-04-13 Mike Frysinger * configure: Regenerate. diff --git a/sim/iq2000/sim-main.h b/sim/iq2000/sim-main.h index d6cb7825e12..623c0a6e575 100644 --- a/sim/iq2000/sim-main.h +++ b/sim/iq2000/sim-main.h @@ -57,8 +57,12 @@ struct _sim_cpu { /* The sim_state struct. */ struct sim_state { - sim_cpu *cpu; -#define STATE_CPU(sd, n) (/*&*/ (sd)->cpu) + sim_cpu *cpu[MAX_NR_PROCESSORS]; +#if (WITH_SMP) +#define STATE_CPU(sd,n) ((sd)->cpu[n]) +#else +#define STATE_CPU(sd,n) ((sd)->cpu[0]) +#endif CGEN_STATE cgen_state; diff --git a/sim/lm32/ChangeLog b/sim/lm32/ChangeLog index fdb204bb05b..94a1ccddbf4 100644 --- a/sim/lm32/ChangeLog +++ b/sim/lm32/ChangeLog @@ -1,3 +1,8 @@ +2015-04-15 Mike Frysinger + + * sim-main.h (struct sim_state): Change cpu to an array of pointers. + (STATE_CPU): Handle WITH_SMP. + 2015-04-13 Mike Frysinger * configure: Regenerate. diff --git a/sim/lm32/sim-main.h b/sim/lm32/sim-main.h index a4e44237377..d98560753d2 100644 --- a/sim/lm32/sim-main.h +++ b/sim/lm32/sim-main.h @@ -83,8 +83,12 @@ struct _sim_cpu struct sim_state { - sim_cpu *cpu; -#define STATE_CPU(sd, n) (/*&*/ (sd)->cpu) + sim_cpu *cpu[MAX_NR_PROCESSORS]; +#if (WITH_SMP) +#define STATE_CPU(sd,n) ((sd)->cpu[n]) +#else +#define STATE_CPU(sd,n) ((sd)->cpu[0]) +#endif CGEN_STATE cgen_state; diff --git a/sim/m32r/ChangeLog b/sim/m32r/ChangeLog index 2dcd3a0787c..c8a285cfeaf 100644 --- a/sim/m32r/ChangeLog +++ b/sim/m32r/ChangeLog @@ -1,3 +1,8 @@ +2015-04-15 Mike Frysinger + + * sim-main.h (struct sim_state): Change cpu to an array of pointers. + (STATE_CPU): Handle WITH_SMP. + 2015-04-13 Mike Frysinger * configure: Regenerate. diff --git a/sim/m32r/sim-main.h b/sim/m32r/sim-main.h index 2cbb40b99b4..96c1ec1747d 100644 --- a/sim/m32r/sim-main.h +++ b/sim/m32r/sim-main.h @@ -68,8 +68,12 @@ struct _sim_cpu { /* The sim_state struct. */ struct sim_state { - sim_cpu *cpu; -#define STATE_CPU(sd, n) (/*&*/ (sd)->cpu) + sim_cpu *cpu[MAX_NR_PROCESSORS]; +#if (WITH_SMP) +#define STATE_CPU(sd,n) ((sd)->cpu[n]) +#else +#define STATE_CPU(sd,n) ((sd)->cpu[0]) +#endif CGEN_STATE cgen_state; diff --git a/sim/sh64/ChangeLog b/sim/sh64/ChangeLog index 574fbb10880..5bbc7a3f511 100644 --- a/sim/sh64/ChangeLog +++ b/sim/sh64/ChangeLog @@ -1,3 +1,8 @@ +2015-04-15 Mike Frysinger + + * sim-main.h (struct sim_state): Change cpu to an array of pointers. + (STATE_CPU): Handle WITH_SMP. + 2015-04-13 Mike Frysinger * configure: Regenerate. diff --git a/sim/sh64/sim-main.h b/sim/sh64/sim-main.h index e7cbe99217a..5ae4309916a 100644 --- a/sim/sh64/sim-main.h +++ b/sim/sh64/sim-main.h @@ -53,8 +53,12 @@ struct _sim_cpu { /* The sim_state struct. */ struct sim_state { - sim_cpu *cpu; -#define STATE_CPU(sd, n) (/*&*/ (sd)->cpu) + sim_cpu *cpu[MAX_NR_PROCESSORS]; +#if (WITH_SMP) +#define STATE_CPU(sd,n) ((sd)->cpu[n]) +#else +#define STATE_CPU(sd,n) ((sd)->cpu[0]) +#endif CGEN_STATE cgen_state;