1/* CPU support. 2 Copyright (C) 1998, 2007, 2008, 2009, 2010, 2011 3 Free Software Foundation, Inc. 4 Contributed by Cygnus Solutions. 5 6This file is part of GDB, the GNU debugger. 7 8This program is free software; you can redistribute it and/or modify 9it under the terms of the GNU General Public License as published by 10the Free Software Foundation; either version 3 of the License, or 11(at your option) any later version. 12 13This program is distributed in the hope that it will be useful, 14but WITHOUT ANY WARRANTY; without even the implied warranty of 15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16GNU General Public License for more details. 17 18You should have received a copy of the GNU General Public License 19along with this program. If not, see <http://www.gnu.org/licenses/>. */ 20 21#include "sim-main.h" 22#include "bfd.h" 23 24/* Allocate space for all cpus in the simulator. 25 Space for the cpu must currently exist prior to parsing ARGV. 26 EXTRA_BYTES is additional space to allocate for the sim_cpu struct. */ 27/* ??? wip. better solution must wait. */ 28 29SIM_RC 30sim_cpu_alloc_all (SIM_DESC sd, int ncpus, int extra_bytes) 31{ 32 int c; 33 34 for (c = 0; c < ncpus; ++c) 35 STATE_CPU (sd, c) = sim_cpu_alloc (sd, extra_bytes); 36 return SIM_RC_OK; 37} 38 39/* Allocate space for a cpu object. 40 EXTRA_BYTES is additional space to allocate for the sim_cpu struct. */ 41 42sim_cpu * 43sim_cpu_alloc (SIM_DESC sd, int extra_bytes) 44{ 45 return zalloc (sizeof (sim_cpu) + extra_bytes); 46} 47 48/* Free all resources held by all cpus. */ 49 50void 51sim_cpu_free_all (SIM_DESC sd) 52{ 53 int c; 54 55 for (c = 0; c < MAX_NR_PROCESSORS; ++c) 56 if (STATE_CPU (sd, c)) 57 sim_cpu_free (STATE_CPU (sd, c)); 58} 59 60/* Free all resources used by CPU. */ 61 62void 63sim_cpu_free (sim_cpu *cpu) 64{ 65 free (cpu); 66} 67 68/* PC utilities. */ 69 70sim_cia 71sim_pc_get (sim_cpu *cpu) 72{ 73 return (* CPU_PC_FETCH (cpu)) (cpu); 74} 75 76void 77sim_pc_set (sim_cpu *cpu, sim_cia newval) 78{ 79 (* CPU_PC_STORE (cpu)) (cpu, newval); 80} 81