From 433a8eafaa36690aa99ca3a9c2455d222983ab19 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Thu, 7 May 1998 02:08:05 +0000 Subject: [PATCH] * 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. --- sim/common/.Sanitize | 2 ++ sim/common/sim-cpu.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 sim/common/sim-cpu.c 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); +} -- 2.7.4