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)); |
|
} |