Skip to content

Commit 4523111

Browse files
committed
src/target/riscv: error out of the examine() in case abits is zero
The spec requires `abits` to be no less then 7 ( [3.1. Debug Module Interface (DMI)]): > The DMI uses between 7 and 32 address bits Commit a450a7d ("Fix data types around batch.{c,h}") introduced a check that issues a warning if `abits` is less then 7. The reason it's a warning and not an error -- on Spike `abits` is 6. However, if the examination is to proceed when `abits` is zero, an assert in `get_dmi_scan_length()` will trigger when attempting to communicate over DMI. Link: https://github.com/JanMatCodasip/riscv-openocd/blob/a450a7d4966a19c48b2543810f5b8370af6383e5/src/target/riscv/batch.c#L25 It's impossible to communicate over DMI with `abits == 0`, so an error is returned instead of a warning in this case. Change-Id: Ice4622adccfc8304b37bc678253cc19d8ac1457e Signed-off-by: Evgeniy Naydanov <[email protected]>
1 parent e88edb7 commit 4523111

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/target/riscv/riscv-013.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1956,6 +1956,11 @@ static int examine(struct target *target)
19561956
return ERROR_FAIL;
19571957
}
19581958

1959+
if (info->abits == 0) {
1960+
LOG_TARGET_ERROR(target,
1961+
"dtmcs.abits is zero. Check JTAG connectivity/board power");
1962+
return ERROR_FAIL;
1963+
}
19591964
if (info->abits < RISCV013_DTMCS_ABITS_MIN) {
19601965
/* The requirement for minimum DMI address width of 7 bits is part of
19611966
* the RISC-V Debug spec since Jan-20-2017 (commit 03df6ee7). However,

0 commit comments

Comments
 (0)