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

Subversion Repositories or1k

[/] [or1k/] [tags/] [stable_0_2_0_rc2/] [or1ksim/] [cpu/] [common/] [parse.c] - Diff between revs 242 and 244

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

Rev 242 Rev 244
Line 45... Line 45...
 
 
/* Used to signal whether during loading of programs a translation fault occured. */
/* Used to signal whether during loading of programs a translation fault occured. */
static unsigned long transl_error;
static unsigned long transl_error;
 
 
 
 
int nonempty(char *line)
 
{
 
        int i;
 
 
 
        for(i = 0; i < strlen(line); i++)
 
                if (!isspace(line[i]))
 
                        return(1);
 
        return(0);
 
}
 
 
 
int nondigit(char *line)
 
{
 
        int i;
 
 
 
        for(i = 0; i < strlen(line); i++)
 
                if (!isdigit(line[i]))
 
                        return(1);
 
        return(0);
 
}
 
 
 
char *strtoken(char *in, char *out, int which)
char *strtoken(char *in, char *out, int which)
{
{
        char    *super;
        char    *super;
        char    *sub;
        char    *sub;
        char    *newline;
        char    *newline;
Line 130... Line 110...
        printf("can't translate\n", laddr);
        printf("can't translate\n", laddr);
        exit(1);
        exit(1);
        return -1;
        return -1;
}
}
 
 
void adddatastr(char *str,int* breakpoint)
 
{
 
        if (str)
 
                str++;
 
        else
 
                return;
 
 
 
        for(; *str && *str != '\"'; str++, translate(freemem++,breakpoint))
 
                if (*str == '\\')
 
                        switch (*++str) {
 
                                case 'n': setsim_mem8(translate(freemem,breakpoint), '\n');
 
                                        break;
 
                                case 't': setsim_mem8(translate(freemem,breakpoint), '\t');
 
                                        break;
 
                                case 'r': setsim_mem8(translate(freemem,breakpoint), '\r');
 
                                        break;
 
                                case '0': setsim_mem8(translate(freemem,breakpoint), '\0');
 
                                        break;
 
                                default: break;
 
                        }
 
                else
 
                        setsim_mem8(translate(freemem,breakpoint), *str);
 
}
 
 
 
/* Modified by CZ 26/05/01 */
 
/* Added code for new mode operation */
 
void adddataword(char *item,int* breakpoint)
 
{
 
        unsigned long num;
 
 
 
        if (isdigit(*item))
 
                num = strtoul(item, NULL, 0);
 
        else
 
                num = eval_label(item);
 
 
 
        debug("adddataword: [0x%x] <= %x\n", translate(freemem,breakpoint), num);
 
        setsim_mem32(translate(freemem,breakpoint), num);
 
 
 
         if(config.filename) /* When external debugger loads data, it should not change freemem */
 
          freemem += 4;
 
}
 
 
 
void adddatahalf(char *item,int* breakpoint)
 
{
 
        unsigned long num;
 
 
 
        if (isdigit(*item))
 
                num = strtoul(item, NULL, 0);
 
        else
 
                num = eval_label(item);
 
 
 
        setsim_mem16(translate(freemem,breakpoint), num);
 
 
 
        freemem += 2;
 
}
 
 
 
void adddatabyte(char *item,int* breakpoint)
 
{
 
        unsigned long num;
 
 
 
        if (isdigit(*item))
 
                num = strtoul(item, NULL, 0);
 
        else
 
                num = eval_label(item);
 
 
 
        setsim_mem8(translate(freemem,breakpoint),num);
 
 
 
        freemem++;
 
}
 
 
 
void adddataspace(char *num)
 
{
 
        freemem += atol(num);
 
}
 
 
 
void addlabel(char *label, unsigned long freemem,int* breakpoint)
void addlabel(char *label, unsigned long freemem,int* breakpoint)
{
{
        struct label_entry **tmp;
        struct label_entry **tmp;
        struct mem_entry *entry;
        struct mem_entry *entry;
        debug("Adding label %s at 0x%x\n", label, translate(freemem,breakpoint));
        debug("Adding label %s at 0x%x\n", label, translate(freemem,breakpoint));

powered by: WebSVN 2.1.0

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