diff options
author | Tim Newsome <tim@sifive.com> | 2017-08-09 12:42:17 -0700 |
---|---|---|
committer | Tim Newsome <tim@sifive.com> | 2017-08-09 12:42:17 -0700 |
commit | efcfcf555fd52922fd0ce0683ac490abee6c9896 (patch) | |
tree | 5ddacd4f0828501bc3348997017a3939c9cfb9b8 | |
parent | 97ea54030c0287aae3ffd27f537083eb183a8e1d (diff) | |
download | riscv-openocd-efcfcf555fd52922fd0ce0683ac490abee6c9896.zip riscv-openocd-efcfcf555fd52922fd0ce0683ac490abee6c9896.tar.gz riscv-openocd-efcfcf555fd52922fd0ce0683ac490abee6c9896.tar.bz2 |
Fix assertion failure when reading from address 0.
-rw-r--r-- | src/target/riscv/riscv-013.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/target/riscv/riscv-013.c b/src/target/riscv/riscv-013.c index 4b0f71b..99a0280 100644 --- a/src/target/riscv/riscv-013.c +++ b/src/target/riscv/riscv-013.c @@ -1353,12 +1353,14 @@ static int read_memory(struct target *target, target_addr_t address, riscv_addr_t cur_addr = 0xbadbeef; riscv_addr_t fin_addr = address + (count * size); riscv_addr_t prev_addr = ((riscv_addr_t) address) - size; + bool first = true; LOG_DEBUG("writing until final address 0x%" PRIx64, fin_addr); while (count > 1 && (cur_addr = riscv_read_debug_buffer_x(target, d_addr)) < fin_addr) { LOG_DEBUG("transferring burst starting at address 0x%" TARGET_PRIxADDR " (previous burst was 0x%" TARGET_PRIxADDR ")", cur_addr, prev_addr); - assert(prev_addr < cur_addr); + assert(first || prev_addr < cur_addr); + first = false; prev_addr = cur_addr; riscv_addr_t start = (cur_addr - address) / size; assert (cur_addr >= address); |