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

📄 sim-calls.c

📁 这个是LINUX下的GDB调度工具的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/* OBSOLETE /*  This file is part of the program psim. *//* OBSOLETE  *//* OBSOLETE     Copyright (C) 1994-1996, Andrew Cagney <cagney@highland.com.au> *//* OBSOLETE     Copyright (C) 1997, Free Software Foundation *//* OBSOLETE  *//* OBSOLETE     This program is free software; you can redistribute it and/or modify *//* OBSOLETE     it under the terms of the GNU General Public License as published by *//* OBSOLETE     the Free Software Foundation; either version 2 of the License, or *//* OBSOLETE     (at your option) any later version. *//* OBSOLETE  *//* OBSOLETE     This program is distributed in the hope that it will be useful, *//* OBSOLETE     but WITHOUT ANY WARRANTY; without even the implied warranty of *//* OBSOLETE     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *//* OBSOLETE     GNU General Public License for more details. *//* OBSOLETE   *//* OBSOLETE     You should have received a copy of the GNU General Public License *//* OBSOLETE     along with this program; if not, write to the Free Software *//* OBSOLETE     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *//* OBSOLETE   *//* OBSOLETE     */ *//* OBSOLETE  *//* OBSOLETE  *//* OBSOLETE #include <stdarg.h> *//* OBSOLETE #include <ctype.h> *//* OBSOLETE  *//* OBSOLETE #include "sim-main.h" *//* OBSOLETE #include "sim-options.h" *//* OBSOLETE  *//* OBSOLETE #include "bfd.h" *//* OBSOLETE #include "sim-utils.h" *//* OBSOLETE  *//* OBSOLETE #ifdef HAVE_STDLIB_H *//* OBSOLETE #include <stdlib.h> *//* OBSOLETE #endif *//* OBSOLETE  *//* OBSOLETE static unsigned long extmem_size = 1024*1024*8;	/* 8 meg is the maximum listed in the arch. manual */ *//* OBSOLETE  *//* OBSOLETE static const char * get_insn_name (sim_cpu *, int); *//* OBSOLETE  *//* OBSOLETE #define SIM_ADDR unsigned *//* OBSOLETE  *//* OBSOLETE  *//* OBSOLETE #define OPTION_TRACE_CALL	200 *//* OBSOLETE #define OPTION_TRACE_TRAPDUMP	201 *//* OBSOLETE #define OPTION_EXTMEM_SIZE	202 *//* OBSOLETE  *//* OBSOLETE static SIM_RC *//* OBSOLETE d30v_option_handler (SIM_DESC sd, *//* OBSOLETE 		     sim_cpu *cpu, *//* OBSOLETE 		     int opt, *//* OBSOLETE 		     char *arg, *//* OBSOLETE 		     int command_p) *//* OBSOLETE { *//* OBSOLETE   char *suffix; *//* OBSOLETE  *//* OBSOLETE   switch (opt) *//* OBSOLETE     { *//* OBSOLETE     default: *//* OBSOLETE       break; *//* OBSOLETE  *//* OBSOLETE     case OPTION_TRACE_CALL: *//* OBSOLETE       if (arg == NULL || strcmp (arg, "yes") == 0 || strcmp (arg, "on") == 0) *//* OBSOLETE 	TRACE_CALL_P = 1; *//* OBSOLETE       else if (strcmp (arg, "no") == 0 || strcmp (arg, "off") == 0) *//* OBSOLETE 	TRACE_CALL_P = 0; *//* OBSOLETE       else *//* OBSOLETE 	{ *//* OBSOLETE 	  sim_io_eprintf (sd, "Unreconized --trace-call option `%s'\n", arg); *//* OBSOLETE 	  return SIM_RC_FAIL; *//* OBSOLETE 	} *//* OBSOLETE       return SIM_RC_OK; *//* OBSOLETE  *//* OBSOLETE     case OPTION_TRACE_TRAPDUMP: *//* OBSOLETE       if (arg == NULL || strcmp (arg, "yes") == 0 || strcmp (arg, "on") == 0) *//* OBSOLETE 	TRACE_TRAP_P = 1; *//* OBSOLETE       else if (strcmp (arg, "no") == 0 || strcmp (arg, "off") == 0) *//* OBSOLETE 	TRACE_TRAP_P = 0; *//* OBSOLETE       else *//* OBSOLETE 	{ *//* OBSOLETE 	  sim_io_eprintf (sd, "Unreconized --trace-call option `%s'\n", arg); *//* OBSOLETE 	  return SIM_RC_FAIL; *//* OBSOLETE 	} *//* OBSOLETE       return SIM_RC_OK; *//* OBSOLETE  *//* OBSOLETE     case OPTION_EXTMEM_SIZE: *//* OBSOLETE       if (arg == NULL || !isdigit (*arg)) *//* OBSOLETE 	{ *//* OBSOLETE 	  sim_io_eprintf (sd, "Invalid memory size `%s'", arg); *//* OBSOLETE 	  return SIM_RC_FAIL; *//* OBSOLETE 	} *//* OBSOLETE  *//* OBSOLETE       suffix = arg; *//* OBSOLETE       extmem_size = strtol (arg, &suffix, 0); *//* OBSOLETE       if (*suffix == 'm' || *suffix == 'M') *//* OBSOLETE 	extmem_size <<= 20; *//* OBSOLETE       else if (*suffix == 'k' || *suffix == 'K') *//* OBSOLETE 	extmem_size <<= 10; *//* OBSOLETE       sim_do_commandf (sd, "memory delete 0x80000000"); *//* OBSOLETE       sim_do_commandf (sd, "memory region 0x80000000,0x%lx", extmem_size); *//* OBSOLETE  *//* OBSOLETE       return SIM_RC_OK; *//* OBSOLETE     } *//* OBSOLETE  *//* OBSOLETE   sim_io_eprintf (sd, "Unknown option (%d)\n", opt); *//* OBSOLETE   return SIM_RC_FAIL; *//* OBSOLETE } *//* OBSOLETE  *//* OBSOLETE static const OPTION d30v_options[] = *//* OBSOLETE { *//* OBSOLETE   { {"trace-call", optional_argument, NULL, OPTION_TRACE_CALL}, *//* OBSOLETE       '\0', "on|off", "Enable tracing of calls and returns, checking saved registers", *//* OBSOLETE       d30v_option_handler }, *//* OBSOLETE   { {"trace-trapdump", optional_argument, NULL, OPTION_TRACE_TRAPDUMP}, *//* OBSOLETE       '\0', "on|off", *//* OBSOLETE #if TRAPDUMP *//* OBSOLETE     "Traps 0..30 dump out all of the registers (defaults on)", *//* OBSOLETE #else *//* OBSOLETE     "Traps 0..30 dump out all of the registers", *//* OBSOLETE #endif *//* OBSOLETE       d30v_option_handler }, *//* OBSOLETE   { {"extmem-size", required_argument, NULL, OPTION_EXTMEM_SIZE}, *//* OBSOLETE     '\0', "size", "Change size of external memory, default 8 meg", *//* OBSOLETE     d30v_option_handler }, *//* OBSOLETE   { {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL } *//* OBSOLETE }; *//* OBSOLETE  *//* OBSOLETE /* Return name of an insn, used by insn profiling.  */ *//* OBSOLETE  *//* OBSOLETE static const char * *//* OBSOLETE get_insn_name (sim_cpu *cpu, int i) *//* OBSOLETE { *//* OBSOLETE   return itable[i].name; *//* OBSOLETE } *//* OBSOLETE  *//* OBSOLETE /* Structures used by the simulator, for gdb just have static structures */ *//* OBSOLETE  *//* OBSOLETE SIM_DESC *//* OBSOLETE sim_open (SIM_OPEN_KIND kind, *//* OBSOLETE 	  host_callback *callback, *//* OBSOLETE 	  struct _bfd *abfd, *//* OBSOLETE 	  char **argv) *//* OBSOLETE { *//* OBSOLETE   SIM_DESC sd = sim_state_alloc (kind, callback); *//* OBSOLETE  *//* OBSOLETE   /* FIXME: watchpoints code shouldn't need this */ *//* OBSOLETE   STATE_WATCHPOINTS (sd)->pc = &(PC); *//* OBSOLETE   STATE_WATCHPOINTS (sd)->sizeof_pc = sizeof (PC); *//* OBSOLETE   STATE_WATCHPOINTS (sd)->interrupt_handler = d30v_interrupt_event; *//* OBSOLETE  *//* OBSOLETE   /* Initialize the mechanism for doing insn profiling.  */ *//* OBSOLETE   CPU_INSN_NAME (STATE_CPU (sd, 0)) = get_insn_name; *//* OBSOLETE   CPU_MAX_INSNS (STATE_CPU (sd, 0)) = nr_itable_entries; *//* OBSOLETE  *//* OBSOLETE #ifdef TRAPDUMP *//* OBSOLETE   TRACE_TRAP_P = TRAPDUMP; *//* OBSOLETE #endif *//* OBSOLETE  *//* OBSOLETE   if (sim_pre_argv_init (sd, argv[0]) != SIM_RC_OK) *//* OBSOLETE     return 0; *//* OBSOLETE   sim_add_option_table (sd, NULL, d30v_options); *//* OBSOLETE  *//* OBSOLETE   /* Memory and EEPROM */ *//* OBSOLETE   /* internal instruction RAM - fixed */ *//* OBSOLETE   sim_do_commandf (sd, "memory region 0,0x10000"); *//* OBSOLETE   /* internal data RAM - fixed */ *//* OBSOLETE   sim_do_commandf (sd, "memory region 0x20000000,0x8000"); *//* OBSOLETE   /* control register dummy area */ *//* OBSOLETE   sim_do_commandf (sd, "memory region 0x40000000,0x10000"); *//* OBSOLETE   /* external RAM */ *//* OBSOLETE   sim_do_commandf (sd, "memory region 0x80000000,0x%lx", extmem_size); *//* OBSOLETE   /* EIT RAM */ *//* OBSOLETE   sim_do_commandf (sd, "memory region 0xfffff000,0x1000"); *//* OBSOLETE  *//* OBSOLETE   /* getopt will print the error message so we just have to exit if this fails. *//* OBSOLETE      FIXME: Hmmm...  in the case of gdb we need getopt to call *//* OBSOLETE      print_filtered.  */ *//* OBSOLETE   if (sim_parse_args (sd, argv) != 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     } */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -