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

Subversion Repositories or1k

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

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

Rev 75 Rev 123
Line 38... Line 38...
char *simgetstr(unsigned long stackaddr, unsigned long regparam)
char *simgetstr(unsigned long stackaddr, unsigned long regparam)
{
{
        unsigned long fmtaddr;
        unsigned long fmtaddr;
        FILE *f;
        FILE *f;
        int i;
        int i;
 
        int breakpoint = 0;
 
 
#if STACK_ARGS
#if STACK_ARGS
        fmtaddr = eval_mem32(stackaddr);
        fmtaddr = eval_mem32(stackaddr,&breakpoint);
#else
#else
        fmtaddr = regparam;
        fmtaddr = regparam;
#endif
#endif
 
 
        i = 0;
        i = 0;
        while (eval_mem8(fmtaddr) != '\0') {
        while (eval_mem8(fmtaddr,&breakpoint) != '\0') {
                fmtstr[i++] = eval_mem8(fmtaddr);
                fmtstr[i++] = eval_mem8(fmtaddr,&breakpoint);
                fmtaddr++;
                fmtaddr++;
                if (i == FMTLEN - 1)
                if (i == FMTLEN - 1)
                        break;
                        break;
        }
        }
        fmtstr[i] = '\0';
        fmtstr[i] = '\0';
Line 62... Line 63...
void simprintf(unsigned long stackaddr, unsigned long regparam)
void simprintf(unsigned long stackaddr, unsigned long regparam)
{
{
        unsigned long fmtaddr;
        unsigned long fmtaddr;
        FILE *f;
        FILE *f;
        int i = 0;
        int i = 0;
 
        int breakpoint = 0;
 
 
        simgetstr(stackaddr, regparam);
        simgetstr(stackaddr, regparam);
 
 
        debug("simprintf: stackaddr: 0x%.8lx", stackaddr);
        debug("simprintf: stackaddr: 0x%.8lx", stackaddr);
        if ((f = fopen("stdout.txt", "a+"))) {
        if ((f = fopen("stdout.txt", "a+"))) {
Line 88... Line 90...
                        debug(" 2");
                        debug(" 2");
                        if (strstr(fmtstrpart, "%")) {
                        if (strstr(fmtstrpart, "%")) {
                                debug(" 3");
                                debug(" 3");
#if STACK_ARGS
#if STACK_ARGS
                                argaddr += 4;
                                argaddr += 4;
                                arg = eval_mem32(argaddr);
                                arg = eval_mem32(argaddr,&breakpoint);
#else
#else
                                sprintf(regstr, "r%u", ++argaddr);
                                sprintf(regstr, "r%u", ++argaddr);
                                arg = eval_reg(regstr);
                                arg = eval_reg(regstr);
#endif
#endif
                                debug(" 4: fmtstrpart=%p fmtstrpart=%s arg=%p", fmtstrpart, fmtstrpart, arg);
                                debug(" 4: fmtstrpart=%p fmtstrpart=%s arg=%p", fmtstrpart, fmtstrpart, arg);
                                if (strncmp(fmtstrpart, "%s", 2) == 0) {
                                if (strncmp(fmtstrpart, "%s", 2) == 0) {
                                        int len = 0;
                                        int len = 0;
                                        char *str;
                                        char *str;
                                        for(; eval_mem8(arg++); len++);
                                        for(; eval_mem8(arg++,&breakpoint); 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_mem8(arg); len++)
                                        for(; eval_mem8(arg,&breakpoint); len++)
                                                *(str+len) = eval_mem8(arg++);
                                                *(str+len) = eval_mem8(arg++,&breakpoint);
                                        *(str+len) = eval_mem8(arg); /* null ch */
                                        *(str+len) = eval_mem8(arg,&breakpoint); /* null ch */
                                        /* debug("4a: len=%d str=%s\n", len, str);
                                        /* debug("4a: len=%d str=%s\n", len, str);
                                        debug("4b:"); */
                                        debug("4b:"); */
                                        fprintf(f, fmtstrpart, str);
                                        fprintf(f, fmtstrpart, str);
                                        free(str);
                                        free(str);
                                } else
                                } else

powered by: WebSVN 2.1.0

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