diff options
author | Doug Evans <dje@google.com> | 1998-05-07 02:08:05 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 1998-05-07 02:08:05 +0000 |
commit | 433a8eafaa36690aa99ca3a9c2455d222983ab19 (patch) | |
tree | 5299bf9614f617627432bfdefb2372c8a3a87030 /sim | |
parent | 2ac0ca44d3e2410a06f4186beceeced27b25b18a (diff) | |
download | gdb-433a8eafaa36690aa99ca3a9c2455d222983ab19.zip gdb-433a8eafaa36690aa99ca3a9c2455d222983ab19.tar.gz gdb-433a8eafaa36690aa99ca3a9c2455d222983ab19.tar.bz2 |
* Make-common (sim_main_headers): Sort.
(cgen-*.o): Add cgen-sim.h dependency.
* sim-cpu.h: New file. sim_cpu_base moved here.
Move sim_cpu_lookup decl here.
* sim-base.h: #include "sim-cpu.h".
* sim-cpu.c: New file.
* Make-common (sim_main_headers): Add sim-cpu.h.
(sim-cpu.o): Add rule for.
Diffstat (limited to 'sim')
-rw-r--r-- | sim/common/.Sanitize | 2 | ||||
-rw-r--r-- | sim/common/sim-cpu.c | 80 |
2 files changed, 82 insertions, 0 deletions
diff --git a/sim/common/.Sanitize b/sim/common/.Sanitize index 2d321a7..69260b9 100644 --- a/sim/common/.Sanitize +++ b/sim/common/.Sanitize @@ -78,6 +78,8 @@ sim-config.c sim-config.h sim-core.c sim-core.h +sim-cpu.c +sim-cpu.h sim-endian.c sim-endian.h sim-engine.c diff --git a/sim/common/sim-cpu.c b/sim/common/sim-cpu.c new file mode 100644 index 0000000..0e6d52c --- /dev/null +++ b/sim/common/sim-cpu.c @@ -0,0 +1,80 @@ +/* CPU support. + Copyright (C) 1998 Free Software Foundation, Inc. + Contributed by Cygnus Solutions. + +This file is part of GDB, the GNU debugger. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "sim-main.h" +#include "bfd.h" + +/* Allocate space for all cpus in the simulator. + Space for the cpu must currently exist prior to parsing ARGV. + EXTRA_BYTES is additional space to allocate for the sim_cpu struct. */ +/* ??? wip. better solution must wait. */ + +SIM_RC +sim_cpu_alloc_all (SIM_DESC sd, int ncpus, int extra_bytes) +{ + int c; + + for (c = 0; c < ncpus; ++c) + STATE_CPU (sd, c) = sim_cpu_alloc (sd, extra_bytes); + return SIM_RC_OK; +} + +/* Allocate space for a cpu object. + EXTRA_BYTES is additional space to allocate for the sim_cpu struct. */ + +sim_cpu * +sim_cpu_alloc (SIM_DESC sd, int extra_bytes) +{ + return zalloc (sizeof (sim_cpu) + extra_bytes); +} + +/* Free all resources held by all cpus. */ + +void +sim_cpu_free_all (SIM_DESC sd) +{ + int c; + + for (c = 0; c < MAX_NR_PROCESSORS; ++c) + if (STATE_CPU (sd, c)) + sim_cpu_free (STATE_CPU (sd, c)); +} + +/* Free all resources used by CPU. */ + +void +sim_cpu_free (sim_cpu *cpu) +{ + zfree (cpu); +} + +/* PC utilities. */ + +sim_cia +sim_pc_get (sim_cpu *cpu) +{ + return (* CPU_PC_FETCH (cpu)) (cpu); +} + +void +sim_pc_set (sim_cpu *cpu, sim_cia newval) +{ + (* CPU_PC_STORE (cpu)) (cpu, newval); +} |