diff options
Diffstat (limited to 'sim/h8300')
-rw-r--r-- | sim/h8300/ChangeLog | 7 | ||||
-rw-r--r-- | sim/h8300/compile.c | 10 | ||||
-rw-r--r-- | sim/h8300/sim-main.h | 8 |
3 files changed, 22 insertions, 3 deletions
diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog index 215a182..1740b3d 100644 --- a/sim/h8300/ChangeLog +++ b/sim/h8300/ChangeLog @@ -1,3 +1,10 @@ +2015-04-15 Mike Frysinger <vapier@gentoo.org> + + * 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 <vapier@gentoo.org> * configure: Regenerate. diff --git a/sim/h8300/compile.c b/sim/h8300/compile.c index 2574168..e14c3ab 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 964388a..7126fa3 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)) |