Merge pull request #64 from riscv/release-fixes

Two fixes from the release branch
This commit is contained in:
Tim Newsome 2017-06-15 12:43:46 -07:00 committed by GitHub
commit 363a0a2bf2
2 changed files with 12 additions and 5 deletions

View File

@ -542,8 +542,8 @@ static int register_write_direct(struct target *target, unsigned number,
int exec_out = riscv_program_exec(&program, target); int exec_out = riscv_program_exec(&program, target);
if (exec_out != ERROR_OK) { if (exec_out != ERROR_OK) {
LOG_ERROR("Unable to execute program"); riscv013_clear_abstract_error(target);
return exec_out; return ERROR_FAIL;
} }
return ERROR_OK; return ERROR_OK;
@ -575,8 +575,8 @@ static int register_read_direct(struct target *target, uint64_t *value, uint32_t
int exec_out = riscv_program_exec(&program, target); int exec_out = riscv_program_exec(&program, target);
if (exec_out != ERROR_OK) { if (exec_out != ERROR_OK) {
LOG_ERROR("Unable to execute program"); riscv013_clear_abstract_error(target);
return exec_out; return ERROR_FAIL;
} }
*value = 0; *value = 0;
@ -679,7 +679,7 @@ static int init_target(struct command_context *cmd_ctx,
info->ac_busy_delay = 0; info->ac_busy_delay = 0;
target->reg_cache = calloc(1, sizeof(*target->reg_cache)); target->reg_cache = calloc(1, sizeof(*target->reg_cache));
target->reg_cache->name = "RISC-V registers"; target->reg_cache->name = "RISC-V Registers";
target->reg_cache->num_regs = GDB_REGNO_COUNT; target->reg_cache->num_regs = GDB_REGNO_COUNT;
target->reg_cache->reg_list = calloc(GDB_REGNO_COUNT, sizeof(struct reg)); target->reg_cache->reg_list = calloc(GDB_REGNO_COUNT, sizeof(struct reg));

View File

@ -737,6 +737,8 @@ int riscv_openocd_poll(struct target *target)
int riscv_openocd_halt(struct target *target) int riscv_openocd_halt(struct target *target)
{ {
RISCV_INFO(r);
LOG_DEBUG("halting all harts"); LOG_DEBUG("halting all harts");
int out = riscv_halt_all_harts(target); int out = riscv_halt_all_harts(target);
@ -746,6 +748,11 @@ int riscv_openocd_halt(struct target *target)
} }
register_cache_invalidate(target->reg_cache); register_cache_invalidate(target->reg_cache);
if (riscv_rtos_enabled(target)) {
target->rtos->current_threadid = r->rtos_hartid + 1;
target->rtos->current_thread = r->rtos_hartid + 1;
}
target->state = TARGET_HALTED; target->state = TARGET_HALTED;
target->debug_reason = DBG_REASON_DBGRQ; target->debug_reason = DBG_REASON_DBGRQ;
target_call_event_callbacks(target, TARGET_EVENT_HALTED); target_call_event_callbacks(target, TARGET_EVENT_HALTED);