Line 440... |
Line 440... |
void dump_exe_log (void)
|
void dump_exe_log (void)
|
{
|
{
|
oraddr_t insn_addr = cpu_state.iqueue.insn_addr;
|
oraddr_t insn_addr = cpu_state.iqueue.insn_addr;
|
unsigned int i, j;
|
unsigned int i, j;
|
uorreg_t operand;
|
uorreg_t operand;
|
int breakpoint;
|
|
|
|
if (insn_addr == 0xffffffff) return;
|
if (insn_addr == 0xffffffff) return;
|
if ((config.sim.exe_log_start <= runtime.cpu.instructions) &&
|
if ((config.sim.exe_log_start <= runtime.cpu.instructions) &&
|
((config.sim.exe_log_end <= 0) ||
|
((config.sim.exe_log_end <= 0) ||
|
(runtime.cpu.instructions <= config.sim.exe_log_end))) {
|
(runtime.cpu.instructions <= config.sim.exe_log_end))) {
|
Line 455... |
Line 454... |
switch (config.sim.exe_log_type) {
|
switch (config.sim.exe_log_type) {
|
case EXE_LOG_HARDWARE:
|
case EXE_LOG_HARDWARE:
|
fprintf (runtime.sim.fexe_log, "\nEXECUTED(%11llu): %"PRIxADDR": ",
|
fprintf (runtime.sim.fexe_log, "\nEXECUTED(%11llu): %"PRIxADDR": ",
|
runtime.cpu.instructions, insn_addr);
|
runtime.cpu.instructions, insn_addr);
|
fprintf (runtime.sim.fexe_log, "%.2x%.2x",
|
fprintf (runtime.sim.fexe_log, "%.2x%.2x",
|
eval_direct8(insn_addr, &breakpoint, 0, 0),
|
eval_direct8(insn_addr, 0, 0),
|
eval_direct8(insn_addr + 1, &breakpoint, 0, 0));
|
eval_direct8(insn_addr + 1, 0, 0));
|
fprintf (runtime.sim.fexe_log, "%.2x%.2x",
|
fprintf (runtime.sim.fexe_log, "%.2x%.2x",
|
eval_direct8(insn_addr + 2, &breakpoint, 0, 0),
|
eval_direct8(insn_addr + 2, 0, 0),
|
eval_direct8(insn_addr + 3, &breakpoint, 0 ,0));
|
eval_direct8(insn_addr + 3, 0 ,0));
|
for(i = 0; i < MAX_GPRS; i++) {
|
for(i = 0; i < MAX_GPRS; i++) {
|
if (i % 4 == 0)
|
if (i % 4 == 0)
|
fprintf(runtime.sim.fexe_log, "\n");
|
fprintf(runtime.sim.fexe_log, "\n");
|
fprintf (runtime.sim.fexe_log, "GPR%2u: %"PRIxREG" ", i,
|
fprintf (runtime.sim.fexe_log, "GPR%2u: %"PRIxREG" ", i,
|
cpu_state.reg[i]);
|
cpu_state.reg[i]);
|