target, flash: utility for riscv repeat_read command

Imported non-riscv part from
https://github.com/riscv-collab/riscv-openocd/pull/510
developed by Tim Newsome <tim@sifive.com>

Introduce target_handle_md_output() parameter include_address.
All callers set it true but riscv repeat_read command.

Change-Id: I67b5aad15a33ad149d4047998b22407cb60098fd
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/9127
Tested-by: jenkins
Reviewed-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
This commit is contained in:
Tomas Vanek
2025-09-13 23:01:33 +02:00
parent f354d259ff
commit a0eac82708
5 changed files with 9 additions and 7 deletions

View File

@@ -720,7 +720,8 @@ COMMAND_HANDLER(handle_flash_md_command)
retval = flash_driver_read(bank, buffer, offset, sizebytes); retval = flash_driver_read(bank, buffer, offset, sizebytes);
if (retval == ERROR_OK) if (retval == ERROR_OK)
target_handle_md_output(CMD, target, address, wordsize, count, buffer); target_handle_md_output(CMD, target, address, wordsize, count,
buffer, true);
free(buffer); free(buffer);

View File

@@ -2143,7 +2143,8 @@ COMMAND_HANDLER(dsp563xx_mem_command)
err = dsp563xx_read_memory(target, mem_type, address, sizeof(uint32_t), err = dsp563xx_read_memory(target, mem_type, address, sizeof(uint32_t),
count, buffer); count, buffer);
if (err == ERROR_OK) if (err == ERROR_OK)
target_handle_md_output(CMD, target, address, sizeof(uint32_t), count, buffer); target_handle_md_output(CMD, target, address, sizeof(uint32_t),
count, buffer, true);
} else { } else {
b = buffer; b = buffer;

View File

@@ -5231,7 +5231,7 @@ COMMAND_HANDLER(handle_repeat_read)
}; };
int result = r->access_memory(target, args); int result = r->access_memory(target, args);
if (result == ERROR_OK) if (result == ERROR_OK)
target_handle_md_output(cmd, target, address, size, count, buffer); target_handle_md_output(cmd, target, address, size, count, buffer, false);
free(buffer); free(buffer);
return result; return result;
} }

View File

@@ -3349,7 +3349,7 @@ COMMAND_HANDLER(handle_step_command)
void target_handle_md_output(struct command_invocation *cmd, void target_handle_md_output(struct command_invocation *cmd,
struct target *target, target_addr_t address, unsigned int size, struct target *target, target_addr_t address, unsigned int size,
unsigned int count, const uint8_t *buffer) unsigned int count, const uint8_t *buffer, bool include_address)
{ {
const unsigned int line_bytecnt = 32; const unsigned int line_bytecnt = 32;
unsigned int line_modulo = line_bytecnt / size; unsigned int line_modulo = line_bytecnt / size;
@@ -3378,7 +3378,7 @@ void target_handle_md_output(struct command_invocation *cmd,
} }
for (unsigned int i = 0; i < count; i++) { for (unsigned int i = 0; i < count; i++) {
if (i % line_modulo == 0) { if (include_address && i % line_modulo == 0) {
output_len += snprintf(output + output_len, output_len += snprintf(output + output_len,
sizeof(output) - output_len, sizeof(output) - output_len,
TARGET_ADDR_FMT ": ", TARGET_ADDR_FMT ": ",
@@ -3462,7 +3462,7 @@ COMMAND_HANDLER(handle_md_command)
struct target *target = get_current_target(CMD_CTX); struct target *target = get_current_target(CMD_CTX);
int retval = fn(target, address, size, count, buffer); int retval = fn(target, address, size, count, buffer);
if (retval == ERROR_OK) if (retval == ERROR_OK)
target_handle_md_output(CMD, target, address, size, count, buffer); target_handle_md_output(CMD, target, address, size, count, buffer, true);
free(buffer); free(buffer);

View File

@@ -775,7 +775,7 @@ void target_handle_event(struct target *t, enum target_event e);
void target_handle_md_output(struct command_invocation *cmd, void target_handle_md_output(struct command_invocation *cmd,
struct target *target, target_addr_t address, unsigned int size, struct target *target, target_addr_t address, unsigned int size,
unsigned int count, const uint8_t *buffer); unsigned int count, const uint8_t *buffer, bool include_address);
int target_profiling_default(struct target *target, uint32_t *samples, uint32_t int target_profiling_default(struct target *target, uint32_t *samples, uint32_t
max_num_samples, uint32_t *num_samples, uint32_t seconds); max_num_samples, uint32_t *num_samples, uint32_t seconds);