target/riscv: only dump etrace when size is not zero

Change-Id: Ica8d5f23d4e990d597e1210e8d390d2dc1b69e3c
Signed-off-by: Huaqi Fang <578567190@qq.com>
This commit is contained in:
Huaqi Fang 2024-12-26 15:26:38 +08:00
parent 5fc851f469
commit 2c8bf769e0
1 changed files with 7 additions and 1 deletions

View File

@ -508,6 +508,7 @@ COMMAND_HANDLER(handle_etrace_enable_command)
target_real->etrace_trigger_index = i; target_real->etrace_trigger_index = i;
r->trigger_unique_id[i] = 0xFE; r->trigger_unique_id[i] = 0xFE;
r->reserved_triggers[i] = true; r->reserved_triggers[i] = true;
LOG_DEBUG("Trigger %d is reserved for etrace usage.\n", i);
break; break;
} }
} }
@ -568,6 +569,7 @@ COMMAND_HANDLER(handle_etrace_disable_command)
if (riscv_reg_set(target_real, GDB_REGNO_TDATA2, dpc_rb) != ERROR_OK) if (riscv_reg_set(target_real, GDB_REGNO_TDATA2, dpc_rb) != ERROR_OK)
goto error; goto error;
LOG_DEBUG("Etrace free up trigger %d.\n", target_real->etrace_trigger_index);
r->reserved_triggers[target_real->etrace_trigger_index] = false; r->reserved_triggers[target_real->etrace_trigger_index] = false;
r->trigger_unique_id[target_real->etrace_trigger_index] = -1; r->trigger_unique_id[target_real->etrace_trigger_index] = -1;
target_real->etrace_trigger_index = 0xFFFFFFFF; target_real->etrace_trigger_index = 0xFFFFFFFF;
@ -639,6 +641,10 @@ COMMAND_HANDLER(handle_etrace_dump_command)
size = end_offset; size = end_offset;
} }
if (size == 0) {
command_print(CMD, "No etrace could be dumped!");
goto ok;
}
uint32_t temp_size = (size > 4096) ? 4096 : size; uint32_t temp_size = (size > 4096) ? 4096 : size;
temp = malloc(temp_size); temp = malloc(temp_size);
if (!temp) if (!temp)
@ -674,7 +680,7 @@ COMMAND_HANDLER(handle_etrace_dump_command)
size_t filesize; size_t filesize;
fileio_size(fileio, &filesize); fileio_size(fileio, &filesize);
command_print(CMD, command_print(CMD,
"dumped %zu bytes in %fs (%0.3f KiB/s)", filesize, "Dumped etrace %zu bytes in %fs (%0.3f KiB/s)", filesize,
duration_elapsed(&bench), duration_kbps(&bench, filesize)); duration_elapsed(&bench), duration_kbps(&bench, filesize));
} else { } else {
goto fail; goto fail;