Merge pull request #220 from riscv/reg_error
Remove errors when accessing a non-existent registersba_tests
commit
c54da11679
|
@ -64,7 +64,7 @@ int riscv_program_exec(struct riscv_program *p, struct target *t)
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
|
||||||
if (riscv_execute_debug_buffer(t) != ERROR_OK) {
|
if (riscv_execute_debug_buffer(t) != ERROR_OK) {
|
||||||
LOG_ERROR("Unable to execute program %p", p);
|
LOG_DEBUG("Unable to execute program %p", p);
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1092,6 +1092,7 @@ 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);
|
||||||
|
/* Don't message on error. Probably the register doesn't exist. */
|
||||||
|
|
||||||
/* Restore S0. */
|
/* Restore S0. */
|
||||||
if (register_write_direct(target, GDB_REGNO_S0, s0) != ERROR_OK)
|
if (register_write_direct(target, GDB_REGNO_S0, s0) != ERROR_OK)
|
||||||
|
@ -1161,6 +1162,7 @@ static int register_read_direct(struct target *target, uint64_t *value, uint32_t
|
||||||
|
|
||||||
/* Execute program. */
|
/* Execute program. */
|
||||||
result = riscv_program_exec(&program, target);
|
result = riscv_program_exec(&program, target);
|
||||||
|
/* Don't message on error. Probably the register doesn't exist. */
|
||||||
|
|
||||||
if (use_scratch) {
|
if (use_scratch) {
|
||||||
if (scratch_read64(target, &scratch, value) != ERROR_OK)
|
if (scratch_read64(target, &scratch, value) != ERROR_OK)
|
||||||
|
@ -2386,21 +2388,17 @@ static int riscv013_get_register(struct target *target,
|
||||||
riscv_set_current_hartid(target, hid);
|
riscv_set_current_hartid(target, hid);
|
||||||
|
|
||||||
int result = ERROR_OK;
|
int result = ERROR_OK;
|
||||||
if (rid <= GDB_REGNO_XPR31) {
|
if (rid == GDB_REGNO_PC) {
|
||||||
result = register_read_direct(target, value, rid);
|
|
||||||
} else if (rid == GDB_REGNO_PC) {
|
|
||||||
result = register_read_direct(target, value, GDB_REGNO_DPC);
|
result = register_read_direct(target, value, GDB_REGNO_DPC);
|
||||||
LOG_DEBUG("read PC from DPC: 0x%016" PRIx64, *value);
|
LOG_DEBUG("read PC from DPC: 0x%016" PRIx64, *value);
|
||||||
} else if (rid == GDB_REGNO_PRIV) {
|
} else if (rid == GDB_REGNO_PRIV) {
|
||||||
uint64_t dcsr;
|
uint64_t dcsr;
|
||||||
result = register_read_direct(target, &dcsr, GDB_REGNO_DCSR);
|
result = register_read_direct(target, &dcsr, GDB_REGNO_DCSR);
|
||||||
buf_set_u64((unsigned char *)value, 0, 8, get_field(dcsr, CSR_DCSR_PRV));
|
*value = get_field(dcsr, CSR_DCSR_PRV);
|
||||||
} else {
|
} else {
|
||||||
result = register_read_direct(target, value, rid);
|
result = register_read_direct(target, value, rid);
|
||||||
if (result != ERROR_OK) {
|
if (result != ERROR_OK)
|
||||||
LOG_ERROR("Unable to read %s", gdb_regno_name(rid));
|
|
||||||
*value = -1;
|
*value = -1;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -2601,8 +2599,10 @@ static int maybe_execute_fence_i(struct target *target)
|
||||||
riscv_program_init(&program, target);
|
riscv_program_init(&program, target);
|
||||||
if (riscv_program_fence_i(&program) != ERROR_OK)
|
if (riscv_program_fence_i(&program) != ERROR_OK)
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
if (riscv_program_exec(&program, target) != ERROR_OK)
|
if (riscv_program_exec(&program, target) != ERROR_OK) {
|
||||||
|
LOG_ERROR("Failed to execute fence.i");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue