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

Subversion Repositories or1k

[/] [or1k/] [tags/] [stable_0_2_0_rc2/] [or1ksim/] [support/] [simprintf.c] - Diff between revs 1446 and 1487

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

Rev 1446 Rev 1487
Line 47... Line 47...
 
 
char *simgetstr(oraddr_t stackaddr, unsigned long regparam)
char *simgetstr(oraddr_t stackaddr, unsigned long regparam)
{
{
  oraddr_t fmtaddr;
  oraddr_t fmtaddr;
  int i;
  int i;
  int breakpoint = 0;
 
 
 
  fmtaddr = regparam;
  fmtaddr = regparam;
 
 
  i = 0;
  i = 0;
  while (eval_direct8(fmtaddr,&breakpoint,1,0) != '\0') {
  while (eval_direct8(fmtaddr,1,0) != '\0') {
    fmtstr[i++] = eval_direct8(fmtaddr,&breakpoint,1,0);
    fmtstr[i++] = eval_direct8(fmtaddr,1,0);
    fmtaddr++;
    fmtaddr++;
    if (i == FMTLEN - 1)
    if (i == FMTLEN - 1)
      break;
      break;
  }
  }
  fmtstr[i] = '\0';
  fmtstr[i] = '\0';
Line 66... Line 65...
}
}
 
 
void simprintf(oraddr_t stackaddr, unsigned long regparam)
void simprintf(oraddr_t stackaddr, unsigned long regparam)
{
{
  FILE *f;
  FILE *f;
  int breakpoint = 0;
 
 
 
  simgetstr(stackaddr, regparam);
  simgetstr(stackaddr, regparam);
 
 
  debug(6, "simprintf: stackaddr: 0x%"PRIxADDR"\n", stackaddr);
  debug(6, "simprintf: stackaddr: 0x%"PRIxADDR"\n", stackaddr);
  if ((f = fopen(config.sim.fstdout, "a+"))) {
  if ((f = fopen(config.sim.fstdout, "a+"))) {
Line 98... Line 96...
      if (strstr(fmtstrpart, "%")) {
      if (strstr(fmtstrpart, "%")) {
        char *tmp;
        char *tmp;
        int string = 0;
        int string = 0;
        debug(6, " 3");
        debug(6, " 3");
#if STACK_ARGS
#if STACK_ARGS
        arg = eval_direct32(argaddr,&breakpoint,1,0);
        arg = eval_direct32(argaddr,1,0);
        argaddr += 4;
        argaddr += 4;
#else
#else
        {
        {
          unsigned char regstr[5];
          unsigned char regstr[5];
 
 
Line 119... Line 117...
          if (*tmp == 's') string = 1;
          if (*tmp == 's') string = 1;
        }
        }
        if (string) {
        if (string) {
          int len = 0;
          int len = 0;
          char *str;
          char *str;
          for(; eval_direct8(arg++,&breakpoint,1,0); len++);
          for(; eval_direct8(arg++,1,0); len++);
          len++;  /* for null char */
          len++;  /* for null char */
          arg -= len;
          arg -= len;
          str = (char *)malloc(len);
          str = (char *)malloc(len);
          len = 0;
          len = 0;
          for(; eval_direct8(arg,&breakpoint,1,0); len++)
          for(; eval_direct8(arg,1,0); len++)
            *(str+len) = eval_direct8(arg++,&breakpoint,1,0);
            *(str+len) = eval_direct8(arg++,1,0);
          *(str+len) = eval_direct8(arg,&breakpoint,1,0); /* null ch */
          *(str+len) = eval_direct8(arg,1,0); /* 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);
          if (tee_exe_log) fprintf(runtime.sim.fexe_log, fmtstrpart, str);
          free(str);
          free(str);

powered by: WebSVN 2.1.0

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