📄 sim-calls.c
字号:
/* OBSOLETE *//* OBSOLETE /* check for/establish the a reference program image */ *//* OBSOLETE if (sim_analyze_program (sd, *//* OBSOLETE (STATE_PROG_ARGV (sd) != NULL *//* OBSOLETE ? *STATE_PROG_ARGV (sd) *//* OBSOLETE : NULL), *//* OBSOLETE abfd) != SIM_RC_OK) *//* OBSOLETE { *//* OBSOLETE sim_module_uninstall (sd); *//* OBSOLETE return 0; *//* OBSOLETE } *//* OBSOLETE *//* OBSOLETE /* establish any remaining configuration options */ *//* OBSOLETE if (sim_config (sd) != SIM_RC_OK) *//* OBSOLETE { *//* OBSOLETE sim_module_uninstall (sd); *//* OBSOLETE return 0; *//* OBSOLETE } *//* OBSOLETE *//* OBSOLETE if (sim_post_argv_init (sd) != SIM_RC_OK) *//* OBSOLETE { *//* OBSOLETE /* Uninstall the modules to avoid memory leaks, *//* OBSOLETE file descriptor leaks, etc. */ *//* OBSOLETE sim_module_uninstall (sd); *//* OBSOLETE return 0; *//* OBSOLETE } *//* OBSOLETE *//* OBSOLETE return sd; *//* OBSOLETE } *//* OBSOLETE *//* OBSOLETE *//* OBSOLETE void *//* OBSOLETE sim_close (SIM_DESC sd, int quitting) *//* OBSOLETE { *//* OBSOLETE /* Uninstall the modules to avoid memory leaks, *//* OBSOLETE file descriptor leaks, etc. */ *//* OBSOLETE sim_module_uninstall (sd); *//* OBSOLETE } *//* OBSOLETE *//* OBSOLETE *//* OBSOLETE SIM_RC *//* OBSOLETE sim_create_inferior (SIM_DESC sd, *//* OBSOLETE struct _bfd *abfd, *//* OBSOLETE char **argv, *//* OBSOLETE char **envp) *//* OBSOLETE { *//* OBSOLETE /* clear all registers */ *//* OBSOLETE memset (&STATE_CPU (sd, 0)->regs, 0, sizeof (STATE_CPU (sd, 0)->regs)); *//* OBSOLETE EIT_VB = EIT_VB_DEFAULT; *//* OBSOLETE STATE_CPU (sd, 0)->unit = any_unit; *//* OBSOLETE sim_module_init (sd); *//* OBSOLETE if (abfd != NULL) *//* OBSOLETE PC = bfd_get_start_address (abfd); *//* OBSOLETE else *//* OBSOLETE PC = 0xfffff000; /* reset value */ *//* OBSOLETE return SIM_RC_OK; *//* OBSOLETE } *//* OBSOLETE *//* OBSOLETE void *//* OBSOLETE sim_do_command (SIM_DESC sd, char *cmd) *//* OBSOLETE { *//* OBSOLETE if (sim_args_command (sd, cmd) != SIM_RC_OK) *//* OBSOLETE sim_io_printf (sd, "Unknown command `%s'\n", cmd); *//* OBSOLETE } *//* OBSOLETE *//* OBSOLETE /* The following register definitions were ripped off from *//* OBSOLETE gdb/config/tm-d30v.h. If any of those defs changes, this table needs to *//* OBSOLETE be updated. */ *//* OBSOLETE *//* OBSOLETE #define NUM_REGS 86 *//* OBSOLETE *//* OBSOLETE #define R0_REGNUM 0 *//* OBSOLETE #define FP_REGNUM 11 *//* OBSOLETE #define LR_REGNUM 62 *//* OBSOLETE #define SP_REGNUM 63 *//* OBSOLETE #define SPI_REGNUM 64 /* Interrupt stack pointer */ *//* OBSOLETE #define SPU_REGNUM 65 /* User stack pointer */ *//* OBSOLETE #define CREGS_START 66 *//* OBSOLETE *//* OBSOLETE #define PSW_REGNUM (CREGS_START + 0) /* psw, bpsw, or dpsw??? */ *//* OBSOLETE #define PSW_SM 0x80000000 /* Stack mode: 0 == interrupt (SPI), *//* OBSOLETE 1 == user (SPU) */ *//* OBSOLETE #define BPSW_REGNUM (CREGS_START + 1) /* Backup PSW (on interrupt) */ *//* OBSOLETE #define PC_REGNUM (CREGS_START + 2) /* pc, bpc, or dpc??? */ *//* OBSOLETE #define BPC_REGNUM (CREGS_START + 3) /* Backup PC (on interrupt) */ *//* OBSOLETE #define DPSW_REGNUM (CREGS_START + 4) /* Backup PSW (on debug trap) */ *//* OBSOLETE #define DPC_REGNUM (CREGS_START + 5) /* Backup PC (on debug trap) */ *//* OBSOLETE #define RPT_C_REGNUM (CREGS_START + 7) /* Loop count */ *//* OBSOLETE #define RPT_S_REGNUM (CREGS_START + 8) /* Loop start address*/ *//* OBSOLETE #define RPT_E_REGNUM (CREGS_START + 9) /* Loop end address */ *//* OBSOLETE #define MOD_S_REGNUM (CREGS_START + 10) *//* OBSOLETE #define MOD_E_REGNUM (CREGS_START + 11) *//* OBSOLETE #define IBA_REGNUM (CREGS_START + 14) /* Instruction break address */ *//* OBSOLETE #define EIT_VB_REGNUM (CREGS_START + 15) /* Vector base address */ *//* OBSOLETE #define INT_S_REGNUM (CREGS_START + 16) /* Interrupt status */ *//* OBSOLETE #define INT_M_REGNUM (CREGS_START + 17) /* Interrupt mask */ *//* OBSOLETE #define A0_REGNUM 84 *//* OBSOLETE #define A1_REGNUM 85 *//* OBSOLETE *//* OBSOLETE int *//* OBSOLETE sim_fetch_register (sd, regno, buf, length) *//* OBSOLETE SIM_DESC sd; *//* OBSOLETE int regno; *//* OBSOLETE unsigned char *buf; *//* OBSOLETE int length; *//* OBSOLETE { *//* OBSOLETE if (regno < A0_REGNUM) *//* OBSOLETE { *//* OBSOLETE unsigned32 reg; *//* OBSOLETE *//* OBSOLETE if (regno <= R0_REGNUM + 63) *//* OBSOLETE reg = sd->cpu[0].regs.general_purpose[regno]; *//* OBSOLETE else if (regno <= SPU_REGNUM) *//* OBSOLETE reg = sd->cpu[0].regs.sp[regno - SPI_REGNUM]; *//* OBSOLETE else *//* OBSOLETE reg = sd->cpu[0].regs.control[regno - CREGS_START]; *//* OBSOLETE *//* OBSOLETE buf[0] = reg >> 24; *//* OBSOLETE buf[1] = reg >> 16; *//* OBSOLETE buf[2] = reg >> 8; *//* OBSOLETE buf[3] = reg; *//* OBSOLETE } *//* OBSOLETE else if (regno < NUM_REGS) *//* OBSOLETE { *//* OBSOLETE unsigned32 reg; *//* OBSOLETE *//* OBSOLETE reg = sd->cpu[0].regs.accumulator[regno - A0_REGNUM] >> 32; *//* OBSOLETE *//* OBSOLETE buf[0] = reg >> 24; *//* OBSOLETE buf[1] = reg >> 16; *//* OBSOLETE buf[2] = reg >> 8; *//* OBSOLETE buf[3] = reg; *//* OBSOLETE *//* OBSOLETE reg = sd->cpu[0].regs.accumulator[regno - A0_REGNUM]; *//* OBSOLETE *//* OBSOLETE buf[4] = reg >> 24; *//* OBSOLETE buf[5] = reg >> 16; *//* OBSOLETE buf[6] = reg >> 8; *//* OBSOLETE buf[7] = reg; *//* OBSOLETE } *//* OBSOLETE else *//* OBSOLETE abort (); *//* OBSOLETE return -1; *//* OBSOLETE } *//* OBSOLETE *//* OBSOLETE int *//* OBSOLETE sim_store_register (sd, regno, buf, length) *//* OBSOLETE SIM_DESC sd; *//* OBSOLETE int regno; *//* OBSOLETE unsigned char *buf; *//* OBSOLETE int length; *//* OBSOLETE { *//* OBSOLETE if (regno < A0_REGNUM) *//* OBSOLETE { *//* OBSOLETE unsigned32 reg; *//* OBSOLETE *//* OBSOLETE reg = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; *//* OBSOLETE *//* OBSOLETE if (regno <= R0_REGNUM + 63) *//* OBSOLETE sd->cpu[0].regs.general_purpose[regno] = reg; *//* OBSOLETE else if (regno <= SPU_REGNUM) *//* OBSOLETE sd->cpu[0].regs.sp[regno - SPI_REGNUM] = reg; *//* OBSOLETE else *//* OBSOLETE sd->cpu[0].regs.control[regno - CREGS_START] = reg; *//* OBSOLETE } *//* OBSOLETE else if (regno < NUM_REGS) *//* OBSOLETE { *//* OBSOLETE unsigned32 reg; *//* OBSOLETE *//* OBSOLETE reg = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; *//* OBSOLETE *//* OBSOLETE sd->cpu[0].regs.accumulator[regno - A0_REGNUM] = (unsigned64)reg << 32; *//* OBSOLETE *//* OBSOLETE reg = (buf[4] << 24) | (buf[5] << 16) | (buf[6] << 8) | buf[7]; *//* OBSOLETE *//* OBSOLETE sd->cpu[0].regs.accumulator[regno - A0_REGNUM] |= reg; *//* OBSOLETE } *//* OBSOLETE else *//* OBSOLETE abort (); *//* OBSOLETE return -1; *//* OBSOLETE } */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -