Force actual read from prog buffer for the last transaction in read_memory()
This commit is contained in:
parent
e676d3dae6
commit
3109da7dfd
|
@ -1374,7 +1374,7 @@ static int read_memory(struct target *target, target_addr_t address,
|
||||||
size_t rereads = reads;
|
size_t rereads = reads;
|
||||||
for (riscv_addr_t i = start; i < count; ++i) {
|
for (riscv_addr_t i = start; i < count; ++i) {
|
||||||
|
|
||||||
if (i == count) {
|
if (i == count - 1) {
|
||||||
// don't do actual read in this batch,
|
// don't do actual read in this batch,
|
||||||
// we will do it later after we disable autoexec
|
// we will do it later after we disable autoexec
|
||||||
//
|
//
|
||||||
|
@ -1436,7 +1436,10 @@ static int read_memory(struct target *target, target_addr_t address,
|
||||||
|
|
||||||
if (this_is_last_read && i == start + reads - 1) {
|
if (this_is_last_read && i == start + reads - 1) {
|
||||||
riscv013_set_autoexec(target, d_data, 0);
|
riscv013_set_autoexec(target, d_data, 0);
|
||||||
value = riscv_program_read_ram(&program, r_data);
|
|
||||||
|
// access debug buffer without executing a program - this address logic was taken from program.c
|
||||||
|
int const off = (r_data - riscv_debug_buffer_addr(program.target)) / sizeof(program.debug_buffer[0]);
|
||||||
|
value = riscv_read_debug_buffer(target, off);
|
||||||
} else {
|
} else {
|
||||||
uint64_t dmi_out = riscv_batch_get_dmi_read(batch, rereads);
|
uint64_t dmi_out = riscv_batch_get_dmi_read(batch, rereads);
|
||||||
value = get_field(dmi_out, DTM_DMI_DATA);
|
value = get_field(dmi_out, DTM_DMI_DATA);
|
||||||
|
|
Loading…
Reference in New Issue