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

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 514 to Rev 515
    Reverse comparison

Rev 514 → Rev 515

/trunk/or1ksim/cpu/or1k/sprs.c
84,7 → 84,7
{
printf("SIMON: EPCR = ext_int\n");
cont_run = 0;
}
}
break;
case SPR_NPC:
{
/trunk/or1ksim/testbench/acv_uart.c
801,14 → 801,14
mtspr (SPR_SR, mfspr(SPR_SR) | SPR_SR_EXR | SPR_SR_EIR);
mtspr (SPR_PICMR, mfspr(SPR_PICMR) | (0x00000001L << UART_INT_LINE));
 
// register_test ();
register_test ();
init_8n1 ();
// control_register_test ();
// send_recv_test ();
// break_test ();
// different_modes_test ();
send_recv_test ();
break_test ();
different_modes_test ();
interrupt_test ();
// line_error_test ();
control_register_test ();
line_error_test ();
 
/* loopback_test ();
modem_test ();
/trunk/or1ksim/support/simprintf.c
37,98 → 37,98
 
char *simgetstr(unsigned long stackaddr, unsigned long regparam)
{
unsigned long fmtaddr;
FILE *f;
int i;
int breakpoint = 0;
unsigned long fmtaddr;
FILE *f;
int i;
int breakpoint = 0;
 
fmtaddr = regparam;
i = 0;
while (eval_mem8(fmtaddr,&breakpoint) != '\0') {
fmtstr[i++] = eval_mem8(fmtaddr,&breakpoint);
fmtaddr++;
if (i == FMTLEN - 1)
break;
}
fmtstr[i] = '\0';
return fmtstr;
fmtaddr = regparam;
i = 0;
while (eval_mem8(fmtaddr,&breakpoint) != '\0') {
fmtstr[i++] = eval_mem8(fmtaddr,&breakpoint);
fmtaddr++;
if (i == FMTLEN - 1)
break;
}
fmtstr[i] = '\0';
return fmtstr;
}
 
void simprintf(unsigned long stackaddr, unsigned long regparam)
{
unsigned long fmtaddr;
FILE *f;
int i = 0;
int breakpoint = 0;
unsigned long fmtaddr;
FILE *f;
int i = 0;
int breakpoint = 0;
 
simgetstr(stackaddr, regparam);
debug(6, "simprintf: stackaddr: 0x%.8lx\n", stackaddr);
if ((f = fopen("stdout.txt", "a+"))) {
unsigned long arg;
unsigned long argaddr;
unsigned char regstr[5];
char *fmtstrend;
char *fmtstrpart = fmtstr;
simgetstr(stackaddr, regparam);
debug(6, "simprintf: stackaddr: 0x%.8lx\n", stackaddr);
if ((f = fopen("stdout.txt", "a+"))) {
unsigned long arg;
unsigned long argaddr;
unsigned char regstr[5];
char *fmtstrend;
char *fmtstrpart = fmtstr;
#if STACK_ARGS
argaddr = stackaddr;
argaddr = stackaddr;
#else
argaddr = 3;
argaddr = 3;
#endif
debug(6, "simprintf: %s\n", fmtstrpart);
while(strlen(fmtstrpart)) {
debug(6, "simprintf(): 1");
if ((fmtstrend = strstr(fmtstrpart + 1, "%")))
*fmtstrend = '\0';
debug(6," 2");
if (strstr(fmtstrpart, "%")) {
debug(6, " 3");
debug(6, "simprintf: %s\n", fmtstrpart);
while(strlen(fmtstrpart)) {
debug(6, "simprintf(): 1");
if ((fmtstrend = strstr(fmtstrpart + 1, "%")))
*fmtstrend = '\0';
debug(6," 2");
if (strstr(fmtstrpart, "%")) {
debug(6, " 3");
#if STACK_ARGS
arg = eval_mem32(argaddr,&breakpoint);
argaddr += 4;
arg = eval_mem32(argaddr,&breakpoint);
argaddr += 4;
#else
sprintf(regstr, "r%u", ++argaddr);
arg = eval_reg(regstr);
sprintf(regstr, "r%u", ++argaddr);
arg = eval_reg(regstr);
#endif
debug(6, " 4: fmtstrpart=%p fmtstrpart=%s arg=%p\n", fmtstrpart, fmtstrpart, arg);
if (strncmp(fmtstrpart, "%s", 2) == 0) {
int len = 0;
char *str;
for(; eval_mem8(arg++,&breakpoint); len++);
len++; /* for null char */
arg -= len;
str = (char *)malloc(len);
len = 0;
for(; eval_mem8(arg,&breakpoint); len++)
*(str+len) = eval_mem8(arg++,&breakpoint);
*(str+len) = eval_mem8(arg,&breakpoint); /* null ch */
debug(6, "4a: len=%d str=%s\n", len, str);
debug(6, "4b:");
fprintf(f, fmtstrpart, str);
free(str);
} else
fprintf(f, fmtstrpart, arg);
} else {
debug(6, " 5");
fprintf(f, fmtstrpart);
debug(6, fmtstrpart);
}
if (!fmtstrend)
break;
debug(6, " 6");
fmtstrpart = fmtstrend;
*fmtstrpart = '%';
debug(6, " 7");
}
debug(6," 8\n");
if (fclose(f))
perror(strerror(errno));
}
else
perror(strerror(errno));
debug(6, " 4: fmtstrpart=%p fmtstrpart=%s arg=%p\n", fmtstrpart, fmtstrpart, arg);
if (strncmp(fmtstrpart, "%s", 2) == 0) {
int len = 0;
char *str;
for(; eval_mem8(arg++,&breakpoint); len++);
len++; /* for null char */
arg -= len;
str = (char *)malloc(len);
len = 0;
for(; eval_mem8(arg,&breakpoint); len++)
*(str+len) = eval_mem8(arg++,&breakpoint);
*(str+len) = eval_mem8(arg,&breakpoint); /* null ch */
debug(6, "4a: len=%d str=%s\n", len, str);
debug(6, "4b:");
fprintf(f, fmtstrpart, str);
free(str);
} else
fprintf(f, fmtstrpart, arg);
} else {
debug(6, " 5");
fprintf(f, fmtstrpart);
debug(6, fmtstrpart);
}
if (!fmtstrend)
break;
debug(6, " 6");
fmtstrpart = fmtstrend;
*fmtstrpart = '%';
debug(6, " 7");
}
debug(6," 8\n");
if (fclose(f))
perror(strerror(errno));
}
else
perror(strerror(errno));
}

powered by: WebSVN 2.1.0

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