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

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_61/] [or1ksim/] [toplevel.c] - Diff between revs 239 and 242

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

Rev 239 Rev 242
Line 75... Line 75...
void ProtocolClean(int,int32_t);
void ProtocolClean(int,int32_t);
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);
 
 
#ifndef DEBUGMOD_OFF
 
int GlobalMode = 0;   /* Start off in the orginal mode */
 
#else  /* no DEBUGMOD_OFF */
 
#define GlobalMode 0
 
#endif /* no DEBUGMOD_OFF */
 
 
 
/* CVS revision number. */
/* CVS revision number. */
const char rcsrev[] = "$Revision: 1.28 $";
const char rcsrev[] = "$Revision: 1.29 $";
 
 
/* 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 281... Line 275...
      printf("Problems opening profile file. Profiling disabled. \n");
      printf("Problems opening profile file. Profiling disabled. \n");
    } else
    } else
      fprintf(config.fprof, "+00000000 FFFFFFFF FFFFFFFF main\n");
      fprintf(config.fprof, "+00000000 FFFFFFFF FFFFFFFF main\n");
  }
  }
 
 
  /* Initialize memory table.  */
  /* Read configuration file.  */
 
 
 
 
  read_script_file("sim.cfg");
  read_script_file("sim.cfg");
        print_config();
        print_config();
        signal(SIGINT, ctrl_c);
        signal(SIGINT, ctrl_c);
        initstats();
        initstats();
        build_automata();
        build_automata();
Line 336... Line 328...
                        int breakpoint = 0;
                        int breakpoint = 0;
                  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++)
          set_mem8(i + cur_area->start, 0, &breakpoint);
          set_mem8(i + cur_area->start, 0, &breakpoint);
    }
    }
 
 
    if(config.memory) {
 
                  MemoryBlock* block = config.memory;
 
 
 
                  while(block) {
 
                    int fd = open(block->file,O_RDONLY);
 
                    int len, i, j, mptr = 0;
 
                    struct stat buf;
 
                    char buffer[8192];
 
 
 
                    if(fd < 0)
 
                      {
 
                        perror(block->file);
 
                        exit(1);
 
                      }
 
                    if(fstat(fd,&buf) < 0)
 
                      {
 
                        char sTemp[256];
 
 
 
                        sprintf(sTemp,"stat(\"%s\")",block->file);
 
                        perror(sTemp);
 
                        exit(1);
 
                }
 
                    if(!S_ISREG(buf.st_mode))
 
                      {
 
                        fprintf(stderr,"File \"%s\" is not a regular file.\n",
 
                                block->file);
 
                        exit(1);
 
                      }
 
 
 
                    len = buf.st_size;
 
                    mptr += block->address;
 
                    for(i=0;i<len;)
 
                      {
 
                        int n = read(fd,buffer,sizeof(buffer));
 
 
 
                        switch(n)
 
                          {
 
                          case -1:
 
                            if(errno == EINTR)
 
                              continue;
 
                            perror(block->file);
 
                            exit(1);
 
                          case 0:
 
                            fprintf(stderr,"File \"%s\": premature end of file.\n",
 
                                    block->file);
 
                            exit(1);
 
                          default:
 
                            for (j = 0; j < n; j++)
 
                              setsim_mem8(mptr++,buffer[j]);
 
                            i+= n;
 
                            break;
 
                          }
 
                      }
 
                    close(fd);
 
                  }
 
              }
              }
          }
 
 
 
#ifndef DEBUGMOD_OFF
 
        GlobalMode = config.filename == NULL; /* Old mode = 0, New mode = 1 */
 
#endif
 
 
 
        uart_reset();
        uart_reset();
        dma_reset();
        dma_reset();
        tick_reset();
        tick_reset();
        pm_reset();
        pm_reset();
        pic_reset();
        pic_reset();
        reset();
        reset();
        if(!GlobalMode)  /* Only in old mode */
 
          set_reg32(3, endaddr);
 
 
 
        while(1) {
        while(1) {
                if (config.iprompt) {
                if (config.iprompt) {
                  if(server_fd)
                  if(server_fd)
                    {
                    {
Line 752... Line 681...
                }
                }
                hush = 0;
                hush = 0;
                fflush(stdout);
                fflush(stdout);
                freopen("/dev/fd/0", "w+", stdout);
                freopen("/dev/fd/0", "w+", stdout);
 
 
                if (!config.iprompt && !GlobalMode) {   /* non-interactive quit in old mode */
                if (!config.iprompt) {  /* non-interactive quit */
                  if (config.profile) {
                  if (config.profile) {
                    extern int cycles;
                    extern int cycles;
                    fprintf(config.fprof,"-%08X FFFFFFFF\n", cycles);
                    fprintf(config.fprof,"-%08X FFFFFFFF\n", cycles);
                    fclose(config.fprof);
                    fclose(config.fprof);
                  }
                  }

powered by: WebSVN 2.1.0

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