Line 45... |
Line 45... |
{
|
{
|
unsigned int i, done = 0;
|
unsigned int i, done = 0;
|
struct label_entry *tmp;
|
struct label_entry *tmp;
|
char dis[DISWIDTH + 100];
|
char dis[DISWIDTH + 100];
|
struct mem_entry *entry;
|
struct mem_entry *entry;
|
printf("// This file was generated by or1ksim %s\n", rcsrev);
|
PRINTF("// This file was generated by or1ksim %s\n", rcsrev);
|
printf(OR1K_MEM_VERILOG_HEADER(verilog_modname, from/DWQ, to/DWQ, (DISWIDTH*8)));
|
PRINTF(OR1K_MEM_VERILOG_HEADER(verilog_modname, from/DWQ, to/DWQ, (DISWIDTH*8)));
|
|
|
for(i = from; i < to; i++)
|
for(i = from; i < to; i++)
|
{
|
{
|
unsigned int _insn = evalsim_mem32 (i);
|
unsigned int _insn = evalsim_mem32 (i);
|
int index = insn_decode(_insn);
|
int index = insn_decode(_insn);
|
if (index >= 0)
|
if (index >= 0)
|
{
|
{
|
if (verify_memoryarea(i) && (tmp = get_label(i)))
|
if (verify_memoryarea(i) && (tmp = get_label(i)))
|
if (tmp)
|
if (tmp)
|
printf("\n//\t%s%s", tmp->name, LABELEND_CHAR);
|
PRINTF("\n//\t%s%s", tmp->name, LABELEND_CHAR);
|
|
|
printf("\n\tmem['h%x] = %d'h%.8lx;", i/DWQ, DW, evalsim_mem32(i));
|
PRINTF("\n\tmem['h%x] = %d'h%.8lx;", i/DWQ, DW, evalsim_mem32(i));
|
|
|
disassemble_insn (_insn);
|
disassemble_insn (_insn);
|
strcpy (dis, disassembled);
|
strcpy (dis, disassembled);
|
|
|
if (strlen(dis) < DISWIDTH)
|
if (strlen(dis) < DISWIDTH)
|
memset(dis + strlen(dis), ' ', DISWIDTH);
|
memset(dis + strlen(dis), ' ', DISWIDTH);
|
dis[DISWIDTH] = '\0';
|
dis[DISWIDTH] = '\0';
|
printf("\n\tdis['h%x] = {\"%s\"};", i/DWQ, dis);
|
PRINTF("\n\tdis['h%x] = {\"%s\"};", i/DWQ, dis);
|
dis[0] = '\0';
|
dis[0] = '\0';
|
i += insn_len(index) - 1;
|
i += insn_len(index) - 1;
|
} else {
|
} else {
|
if (i % 64 == 0)
|
if (i % 64 == 0)
|
printf("\n");
|
PRINTF("\n");
|
|
|
printf("\n\tmem['h%x] = 'h%.2x;", i/DWQ, evalsim_mem8(i));
|
PRINTF("\n\tmem['h%x] = 'h%.2x;", i/DWQ, evalsim_mem8(i));
|
}
|
}
|
done = 1;
|
done = 1;
|
}
|
}
|
|
|
if (done)
|
if (done)
|
{
|
{
|
printf(OR1K_MEM_VERILOG_FOOTER);
|
PRINTF(OR1K_MEM_VERILOG_FOOTER);
|
return;
|
return;
|
}
|
}
|
|
|
/* this needs to be fixed */
|
/* this needs to be fixed */
|
|
|
for(i = from; i < to; i++)
|
for(i = from; i < to; i++)
|
{
|
{
|
if (i % 8 == 0)
|
if (i % 8 == 0)
|
printf("\n%.8x: ", i);
|
PRINTF("\n%.8x: ", i);
|
|
|
/* don't print ascii chars below 0x20. */
|
/* don't print ascii chars below 0x20. */
|
if (evalsim_mem32(i) < 0x20)
|
if (evalsim_mem32(i) < 0x20)
|
printf("0x%.2x ", (unsigned char)evalsim_mem32(i));
|
PRINTF("0x%.2x ", (unsigned char)evalsim_mem32(i));
|
else
|
else
|
printf("0x%.2x'%c' ", (unsigned char)evalsim_mem32(i), (unsigned char)evalsim_mem32(i));
|
PRINTF("0x%.2x'%c' ", (unsigned char)evalsim_mem32(i), (unsigned char)evalsim_mem32(i));
|
}
|
}
|
printf(OR1K_MEM_VERILOG_FOOTER);
|
PRINTF(OR1K_MEM_VERILOG_FOOTER);
|
}
|
}
|
|
|
void dumphex(unsigned int from, unsigned int to)
|
void dumphex(unsigned int from, unsigned int to)
|
{
|
{
|
unsigned int i, done = 0;
|
unsigned int i, done = 0;
|
Line 109... |
Line 109... |
for(i = from; i < to; i++) {
|
for(i = from; i < to; i++) {
|
unsigned int _insn = evalsim_mem32 (i);
|
unsigned int _insn = evalsim_mem32 (i);
|
int index = insn_decode(_insn);
|
int index = insn_decode(_insn);
|
if (index >= 0)
|
if (index >= 0)
|
{
|
{
|
printf("%.8lx\n", evalsim_mem32(i));
|
PRINTF("%.8lx\n", evalsim_mem32(i));
|
|
|
i += insn_len(index) - 1;
|
i += insn_len(index) - 1;
|
}
|
}
|
else
|
else
|
printf("%.2x\n", evalsim_mem8(i));
|
PRINTF("%.2x\n", evalsim_mem8(i));
|
}
|
}
|
}
|
}
|
|
|
No newline at end of file
|
No newline at end of file
|