⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sim-calls.c

📁 这个是LINUX下的GDB调度工具的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/* 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 + -