OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_61/] [or1ksim/] [toplevel.c] - Diff between revs 264 and 269

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 264 Rev 269
Line 77... Line 77...
static int gdb_read(void*,int);
static int gdb_read(void*,int);
static int gdb_write(void*,int);
static int gdb_write(void*,int);
void BlockJTAG(void);
void BlockJTAG(void);
 
 
/* CVS revision number. */
/* CVS revision number. */
const char rcsrev[] = "$Revision: 1.34 $";
const char rcsrev[] = "$Revision: 1.35 $";
 
 
/* Continuos run versus single step tracing switch. */
/* Continuos run versus single step tracing switch. */
int cont_run;
int cont_run;
 
 
/* History of execution */
/* History of execution */
Line 108... Line 108...
  0
  0
};
};
 
 
inline void debug(const char *format, ...)
inline void debug(const char *format, ...)
{
{
#ifndef DEBUGMOD_OFF
 
  char *p;
  char *p;
  va_list ap;
  va_list ap;
 
 
  if (config.sim.debug) {
  if (config.sim.debug) {
    if ((p = malloc(1000)) == NULL)
    if ((p = malloc(1000)) == NULL)
Line 133... Line 132...
  printf("%s\n", p);
  printf("%s\n", p);
  fflush(stdout);
  fflush(stdout);
  free(p);
  free(p);
#endif
#endif
  }
  }
#endif /* no DEBUGMOD_OFF */
 
}
}
 
 
/* Strip whitespace from the start and end of STRING.  Return a pointer
/* Strip whitespace from the start and end of STRING.  Return a pointer
   into STRING. */
   into STRING. */
#ifndef whitespace
#ifndef whitespace
Line 250... Line 248...
 
 
#ifdef HAVE_LIBREADLINE
#ifdef HAVE_LIBREADLINE
  initialize_readline ();       /* Bind our completer. */
  initialize_readline ();       /* Bind our completer. */
#endif
#endif
 
 
  if(!config.inhibit_server)
  /* Read configuration file.  */
    {
  read_script_file(config.script_file);
      serverPort = config.server_port;
  print_config();
 
  init_labels();
 
  init_breakpoints();
 
        signal(SIGINT, ctrl_c);
 
        initstats();
 
        build_automata();
 
 
 
  if(GDB_ENABLED) {
 
    serverPort = config.debug.server_port;
      if(server_fd = GetServerSocket("or1ksim","tcp",serverPort))
      if(server_fd = GetServerSocket("or1ksim","tcp",serverPort))
              printf("JTAG Proxy server started on port %d\n",serverPort);
              printf("JTAG Proxy server started on port %d\n",serverPort);
    }
    }
 
 
  if(config.sim.profile) {
  if(config.sim.profile) {
Line 266... Line 272...
      printf("Problems opening profile file. Profiling disabled. \n");
      printf("Problems opening profile file. Profiling disabled. \n");
    } else
    } else
      fprintf(config.sim.fprof, "+00000000 FFFFFFFF FFFFFFFF main\n");
      fprintf(config.sim.fprof, "+00000000 FFFFFFFF FFFFFFFF main\n");
  }
  }
 
 
  /* Read configuration file.  */
 
  read_script_file(config.script_file);
 
  print_config();
 
  init_labels();
 
  init_breakpoints();
 
        signal(SIGINT, ctrl_c);
 
        initstats();
 
        build_automata();
 
 
 
  /* Initialize memory */
  /* Initialize memory */
  {
  {
          extern struct dev_memarea *dev_list;
          extern struct dev_memarea *dev_list;
          int i;
          int i;
          if(config.memory.type == MT_RANDOM) {
          if(config.memory.type == MT_RANDOM) {
Line 298... Line 295...
        }
        }
    } else if(config.memory.type == MT_PATTERN) {
    } else if(config.memory.type == MT_PATTERN) {
                  for (cur_area = dev_list; cur_area; cur_area = cur_area->next)
                  for (cur_area = dev_list; cur_area; cur_area = cur_area->next)
        for(i = 0; i < cur_area->size; i++)
        for(i = 0; i < cur_area->size; i++)
          setsim_mem8(i + cur_area->addr_compare, config.memory.pattern);
          setsim_mem8(i + cur_area->addr_compare, config.memory.pattern);
    } else {
    } else if (config.memory.type != MT_UNKNOWN) {
      fprintf(stderr, "Invalid memory configuration type.\n");
      fprintf(stderr, "Invalid memory configuration type.\n");
            exit(1);
            exit(1);
    }
    }
  }
  }
 
 
Line 312... Line 309...
            fprintf(stderr, "Problems loading boot code.\n");
            fprintf(stderr, "Problems loading boot code.\n");
            exit(1);
            exit(1);
          }
          }
        }
        }
 
 
 
        /* Disable gdb debugging, if debug module is not available.  */
 
        if (!config.debug.enabled)
 
          config.debug.gdb_enabled = 0;
 
 
        uart_reset();
        uart_reset();
        dma_reset();
        dma_reset();
        eth_reset();
        eth_reset();
        tick_reset();
        tick_reset();
        pm_reset();
        pm_reset();
Line 610... Line 611...
                while(cont_run != 0) {
                while(cont_run != 0) {
                  int debug_slowdown = DEBUG_SLOWDOWN;
                  int debug_slowdown = DEBUG_SLOWDOWN;
                  extern int cycle_delay;  /* Added by CZ 27/05/01. Set during exception. */
                  extern int cycle_delay;  /* Added by CZ 27/05/01. Set during exception. */
                  extern int cpu_stalled;  /* CZ from debug_interface */
                  extern int cpu_stalled;  /* CZ from debug_interface */
 
 
                  if(cpu_stalled)
                  if(GDB_ENABLED && cpu_stalled)
                    {
                    {
                      BlockJTAG();
                      BlockJTAG();
                      HandleServerSocket(false);
                      HandleServerSocket(false);
                      continue;
                      continue;
                    }
                    }
Line 679... Line 680...
      pm_clock();
      pm_clock();
      uart_clock();
      uart_clock();
      dma_clock();
      dma_clock();
      eth_clock();
      eth_clock();
 
 
#ifndef DEBUGMOD_OFF
      if (GDB_ENABLED && debug_slowdown-- == 0) {
      if (debug_slowdown-- == 0) {
 
        debug_slowdown = DEBUG_SLOWDOWN;
        debug_slowdown = DEBUG_SLOWDOWN;
                          HandleServerSocket(false); /* block & check_stdin = false */
                          HandleServerSocket(false); /* block & check_stdin = false */
                        }
                        }
#endif
 
                }
                }
                hush = 0;
                hush = 0;
                fflush(stdout);
                fflush(stdout);
                freopen("/dev/fd/0", "w+", stdout);
                freopen("/dev/fd/0", "w+", stdout);
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.