aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarius Rad <darius@bluespec.com>2018-05-01 11:44:39 -0400
committerDarius Rad <darius@bluespec.com>2018-05-01 11:45:24 -0400
commit31494f68a45953b81483c8064ff82e5330dd1a10 (patch)
tree0927b6c0dc2208383922a39afb64c338c02d1c05
parentcb282e81bc1aabe2147c1f4c199c66fece49681e (diff)
downloadriscv-openocd-31494f68a45953b81483c8064ff82e5330dd1a10.zip
riscv-openocd-31494f68a45953b81483c8064ff82e5330dd1a10.tar.gz
riscv-openocd-31494f68a45953b81483c8064ff82e5330dd1a10.tar.bz2
Properly retry system bus access if busy error was detected.
-rw-r--r--src/target/riscv/riscv-013.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/target/riscv/riscv-013.c b/src/target/riscv/riscv-013.c
index 3b43ebf..4bf5d50 100644
--- a/src/target/riscv/riscv-013.c
+++ b/src/target/riscv/riscv-013.c
@@ -1913,6 +1913,7 @@ static int read_memory_bus_v1(struct target *target, target_addr_t address,
dmi_write(target, DMI_SBCS, DMI_SBCS_SBBUSYERROR);
next_address = sb_read_address(target);
info->bus_master_read_delay += info->bus_master_read_delay / 10 + 1;
+ continue;
}
unsigned error = get_field(sbcs, DMI_SBCS_SBERROR);
@@ -2351,6 +2352,7 @@ static int write_memory_bus_v1(struct target *target, target_addr_t address,
dmi_write(target, DMI_SBCS, DMI_SBCS_SBBUSYERROR);
next_address = sb_read_address(target);
info->bus_master_write_delay += info->bus_master_write_delay / 10 + 1;
+ continue;
}
unsigned error = get_field(sbcs, DMI_SBCS_SBERROR);