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

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_52/] [or1ksim/] [support/] [simprintf.c] - Diff between revs 515 and 704

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

Rev 515 Rev 704
Line 27... Line 27...
#include <errno.h>
#include <errno.h>
#include <stdarg.h>
#include <stdarg.h>
 
 
#include <abstract.h>
#include <abstract.h>
#include <arch.h>
#include <arch.h>
 
#include "sim-config.h"
 
 
/* Length of printf format string */
/* Length of printf format string */
#define FMTLEN 2000
#define FMTLEN 2000
 
 
char fmtstr[FMTLEN];
char fmtstr[FMTLEN];
Line 70... Line 71...
    unsigned long arg;
    unsigned long arg;
    unsigned long argaddr;
    unsigned long argaddr;
    unsigned char regstr[5];
    unsigned char regstr[5];
    char *fmtstrend;
    char *fmtstrend;
    char *fmtstrpart = fmtstr;
    char *fmtstrpart = fmtstr;
 
    int tee_exe_log;
 
    extern long instructions;
 
 
#if STACK_ARGS
#if STACK_ARGS
    argaddr = stackaddr;
    argaddr = stackaddr;
#else
#else
    argaddr = 3;
    argaddr = 3;
#endif
#endif
 
    tee_exe_log = (config.sim.exe_log && (config.sim.exe_log_type == EXE_LOG_SOFTWARE || config.sim.exe_log_type == EXE_LOG_SIMPLE)
 
       && config.sim.exe_log_start <= instructions && (config.sim.exe_log_end <= 0 || instructions <= config.sim.exe_log_end));
 
 
 
    if (tee_exe_log)
 
      fprintf (runtime.sim.fexe_log, "SIMPRINTF: ");
    debug(6, "simprintf: %s\n", fmtstrpart);
    debug(6, "simprintf: %s\n", fmtstrpart);
    while(strlen(fmtstrpart)) {
    while(strlen(fmtstrpart)) {
      debug(6, "simprintf(): 1");
      debug(6, "simprintf(): 1");
      if ((fmtstrend = strstr(fmtstrpart + 1, "%")))
      if ((fmtstrend = strstr(fmtstrpart + 1, "%")))
        *fmtstrend = '\0';
        *fmtstrend = '\0';
Line 106... Line 114...
            *(str+len) = eval_mem8(arg++,&breakpoint);
            *(str+len) = eval_mem8(arg++,&breakpoint);
          *(str+len) = eval_mem8(arg,&breakpoint); /* null ch */
          *(str+len) = eval_mem8(arg,&breakpoint); /* null ch */
          debug(6, "4a: len=%d str=%s\n", len, str);
          debug(6, "4a: len=%d str=%s\n", len, str);
          debug(6, "4b:");
          debug(6, "4b:");
          fprintf(f, fmtstrpart, str);
          fprintf(f, fmtstrpart, str);
 
          if (tee_exe_log) fprintf(runtime.sim.fexe_log, fmtstrpart, str);
          free(str);
          free(str);
        } else
        } else {
          fprintf(f, fmtstrpart, arg);
          fprintf(f, fmtstrpart, arg);
 
          if (tee_exe_log) fprintf(runtime.sim.fexe_log, fmtstrpart, arg);
 
        }
      } else {
      } else {
        debug(6, " 5");
        debug(6, " 5");
        fprintf(f, fmtstrpart);
        fprintf(f, fmtstrpart);
 
        if (tee_exe_log) fprintf(runtime.sim.fexe_log, fmtstrpart);
        debug(6, fmtstrpart);
        debug(6, fmtstrpart);
      }
      }
      if (!fmtstrend)
      if (!fmtstrend)
        break;
        break;
      debug(6, " 6");
      debug(6, " 6");

powered by: WebSVN 2.1.0

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