diff options
author | Stan Shebs <shebs@codesourcery.com> | 1999-04-16 01:35:26 +0000 |
---|---|---|
committer | Stan Shebs <shebs@codesourcery.com> | 1999-04-16 01:35:26 +0000 |
commit | c906108c21474dfb4ed285bcc0ac6fe02cd400cc (patch) | |
tree | a0015aa5cedc19ccbab307251353a41722a3ae13 /sim/ppc/psim.h | |
parent | cd946cff9ede3f30935803403f06f6ed30cad136 (diff) | |
download | gdb-c906108c21474dfb4ed285bcc0ac6fe02cd400cc.zip gdb-c906108c21474dfb4ed285bcc0ac6fe02cd400cc.tar.gz gdb-c906108c21474dfb4ed285bcc0ac6fe02cd400cc.tar.bz2 |
Initial creation of sourceware repositorygdb-4_18-branchpoint
Diffstat (limited to 'sim/ppc/psim.h')
-rw-r--r-- | sim/ppc/psim.h | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/sim/ppc/psim.h b/sim/ppc/psim.h new file mode 100644 index 0000000..f0cf3a5 --- /dev/null +++ b/sim/ppc/psim.h @@ -0,0 +1,181 @@ +/* This file is part of the program psim. + + Copyright (C) 1994-1996, Andrew Cagney <cagney@highland.com.au> + + 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 of the License, 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. + + */ + + +#ifndef _PSIM_H_ +#define _PSIM_H_ + +#include "basics.h" + + +/* the system object */ +/* typedef struct _psim psim; */ +/* typedef struct _device device; */ + +/* when the `system' stops, find out why. FIXME - at this point this + is really a bit puzzling. After all, how can there be a status + when there several processors involved */ + +typedef struct _psim_status { + int cpu_nr; + stop_reason reason; + int signal; + unsigned_word program_counter; +} psim_status; + + +/* create an initial device tree and then populate it using + information obtained from either the command line or a file */ + +extern device *psim_tree +(void); + +extern char **psim_options +(device *root, + char **argv); + +extern void psim_command +(device *root, + char **argv); + + +extern void psim_merge_device_file +(device *root, + const char *file_name); + +extern void psim_usage +(int verbose); + + +/* create a new simulator from the device tree */ + +extern psim *psim_create +(const char *file_name, + device *root); + + +/* Given the created simulator (re) initialize it */ + +extern void psim_init +(psim *system); + +extern void psim_stack +(psim *system, + char **argv, + char **envp); + + +/* Run/stop the system */ + +extern void psim_step +(psim *system); + +extern void psim_run +(psim *system); + +extern void psim_restart +(psim *system, + int cpu_nr); + +extern void psim_set_halt_and_restart +(psim *system, + void *halt_jmp_buf, + void *restart_jmp_buf); + +extern void psim_clear_halt_and_restart +(psim *system); + +extern void psim_stop +(psim *system); + +extern void psim_halt +(psim *system, + int cpu_nr, + stop_reason reason, + int signal); + +extern int psim_last_cpu +(psim *system); + +extern int psim_nr_cpus +(psim *system); + + +extern psim_status psim_get_status +(psim *system); + + +/* reveal the internals of the simulation. Grant access to the + processor (cpu) device tree (device) and events (event_queue). */ + +extern cpu *psim_cpu +(psim *system, + int cpu_nr); + +extern device *psim_device +(psim *system, + const char *path); + +extern event_queue *psim_event_queue +(psim *system); + + + +/* manipulate the state (registers or memory) of a processor within + the system. In the case of memory, the read/write is performed + using the specified processors address translation tables. + + Where applicable, WHICH_CPU == -1 indicates all processors and + WHICH_CPU == <nr_cpus> indicates the `current' processor. */ + +extern void psim_read_register +(psim *system, + int which_cpu, + void *host_ordered_buf, + const char reg[], + transfer_mode mode); + +extern void psim_write_register +(psim *system, + int which_cpu, + const void *buf, + const char reg[], + transfer_mode mode); + +extern unsigned psim_read_memory +(psim *system, + int which_cpu, + void *buf, + unsigned_word vaddr, + unsigned len); + +extern unsigned psim_write_memory +(psim *system, + int which_cpu, + const void *buf, + unsigned_word vaddr, + unsigned len, + int violate_read_only_section); + +extern void psim_print_info +(psim *system, + int verbose); + +#endif /* _PSIM_H_ */ |