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

Subversion Repositories or1k

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

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

Rev 1350 Rev 1398
Line 52... Line 52...
  int breakpoint = 0;
  int breakpoint = 0;
 
 
  fmtaddr = regparam;
  fmtaddr = regparam;
 
 
  i = 0;
  i = 0;
  while (eval_direct8(fmtaddr,&breakpoint) != '\0') {
  while (eval_direct8(fmtaddr,&breakpoint,1,0) != '\0') {
    fmtstr[i++] = eval_direct8(fmtaddr,&breakpoint);
    fmtstr[i++] = eval_direct8(fmtaddr,&breakpoint,1,0);
    fmtaddr++;
    fmtaddr++;
    if (i == FMTLEN - 1)
    if (i == FMTLEN - 1)
      break;
      break;
  }
  }
  fmtstr[i] = '\0';
  fmtstr[i] = '\0';
Line 98... Line 98...
      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);
        arg = eval_direct32(argaddr,&breakpoint,1,0);
        argaddr += 4;
        argaddr += 4;
#else
#else
        {
        {
          unsigned char regstr[5];
          unsigned char regstr[5];
 
 
          sprintf(regstr, "r%"PRIxADDR, ++argaddr);
          sprintf(regstr, "r%"PRIxADDR, ++argaddr);
          arg = evalsim_reg(atoi(regstr));
          arg = evalsim_reg(atoi(regstr));
        }
        }
#endif
#endif
        debug(6, " 4: fmtstrpart=%p fmtstrpart=%s arg=%p\n", fmtstrpart, fmtstrpart, arg);
        debug(6, " 4: fmtstrpart=%p fmtstrpart=%s arg=0x%08"PRIx32"\n",
 
              fmtstrpart, fmtstrpart, arg);
        tmp = fmtstrpart;
        tmp = fmtstrpart;
        if (*tmp == '%') {
        if (*tmp == '%') {
          tmp++;
          tmp++;
          while (*tmp == '-' || *tmp >= '0' && *tmp <= '9') tmp++;
          while (*tmp == '-' || *tmp >= '0' && *tmp <= '9') tmp++;
          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); len++);
          for(; eval_direct8(arg++,&breakpoint,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); len++)
          for(; eval_direct8(arg,&breakpoint,1,0); len++)
            *(str+len) = eval_direct8(arg++,&breakpoint);
            *(str+len) = eval_direct8(arg++,&breakpoint,1,0);
          *(str+len) = eval_direct8(arg,&breakpoint); /* null ch */
          *(str+len) = eval_direct8(arg,&breakpoint,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.