📄 psim.h
字号:
/* 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. The register functions return the size of the register, or 0 if the register's name is not recognized. */extern int psim_read_register(psim *system, int which_cpu, void *host_ordered_buf, const char reg[], transfer_mode mode);extern int 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_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -