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:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user