diff --git a/src/target/riscv/riscv-013.c b/src/target/riscv/riscv-013.c index 2c60a36d9..2ea8fdff6 100644 --- a/src/target/riscv/riscv-013.c +++ b/src/target/riscv/riscv-013.c @@ -687,8 +687,9 @@ int dmstatus_read_timeout(struct target *target, uint32_t *dmstatus, DMI_DMSTATUS, 0, timeout_sec, false, true); if (result != ERROR_OK) return result; - if (get_field(*dmstatus, DMI_DMSTATUS_VERSION) != 2) { - LOG_ERROR("OpenOCD only supports Debug Module version 2 (0.13), not " + int dmstatus_version = get_field(*dmstatus, DMI_DMSTATUS_VERSION); + if (dmstatus_version != 2 && dmstatus_version != 3) { + LOG_ERROR("OpenOCD only supports Debug Module version 2 (0.13) and 3 (0.14), not " "%d (dmstatus=0x%x). This error might be caused by a JTAG " "signal issue. Try reducing the JTAG clock speed.", get_field(*dmstatus, DMI_DMSTATUS_VERSION), *dmstatus); @@ -1612,7 +1613,8 @@ static int examine(struct target *target) if (dmstatus_read(target, &dmstatus, false) != ERROR_OK) return ERROR_FAIL; LOG_DEBUG("dmstatus: 0x%08x", dmstatus); - if (get_field(dmstatus, DMI_DMSTATUS_VERSION) != 2) { + int dmstatus_version = get_field(dmstatus, DMI_DMSTATUS_VERSION); + if (dmstatus_version != 2 && dmstatus_version != 3) { /* Error was already printed out in dmstatus_read(). */ return ERROR_FAIL; } diff --git a/src/target/riscv/riscv.c b/src/target/riscv/riscv.c index 97c21b59e..c5ad3dfc6 100644 --- a/src/target/riscv/riscv.c +++ b/src/target/riscv/riscv.c @@ -2077,7 +2077,7 @@ int riscv_openocd_poll(struct target *target) } else if (target->smp) { unsigned halts_discovered = 0; unsigned total_targets = 0; - bool newly_halted[128] = {0}; + bool newly_halted[RISCV_MAX_HARTS] = {0}; unsigned should_remain_halted = 0; unsigned should_resume = 0; unsigned i = 0; @@ -2090,8 +2090,6 @@ int riscv_openocd_poll(struct target *target) enum riscv_poll_hart out = riscv_poll_hart(t, r->current_hartid); switch (out) { case RPH_NO_CHANGE: - if (t->state == TARGET_HALTED) - should_remain_halted++; break; case RPH_DISCOVERED_RUNNING: t->state = TARGET_RUNNING;