Fix bugs. Do not touch SATP if there is no MMU. (#435)
* riscv: Fix bugs. Do not touch SATP if there is no MMU. In some platform, there is no SATP register at all. OpenOCD will report unexpected errors if SATP is unreadable. So, use 'riscv_enable_virtual' to guard SATP access. * riscv: fix format typo.vector2
parent
9886f77374
commit
2c3f099b73
|
@ -1364,6 +1364,11 @@ static int riscv_select_current_hart(struct target *target)
|
||||||
|
|
||||||
static int riscv_mmu(struct target *target, int *enabled)
|
static int riscv_mmu(struct target *target, int *enabled)
|
||||||
{
|
{
|
||||||
|
if (!riscv_enable_virt2phys) {
|
||||||
|
*enabled = 0;
|
||||||
|
return ERROR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
if (riscv_rtos_enabled(target))
|
if (riscv_rtos_enabled(target))
|
||||||
riscv_set_current_hartid(target, target->rtos->current_thread - 1);
|
riscv_set_current_hartid(target, target->rtos->current_thread - 1);
|
||||||
|
|
||||||
|
@ -1483,9 +1488,6 @@ static int riscv_address_translate(struct target *target,
|
||||||
|
|
||||||
static int riscv_virt2phys(struct target *target, target_addr_t virtual, target_addr_t *physical)
|
static int riscv_virt2phys(struct target *target, target_addr_t virtual, target_addr_t *physical)
|
||||||
{
|
{
|
||||||
if (!riscv_enable_virt2phys)
|
|
||||||
return ERROR_FAIL;
|
|
||||||
|
|
||||||
int enabled;
|
int enabled;
|
||||||
if (riscv_mmu(target, &enabled) == ERROR_OK) {
|
if (riscv_mmu(target, &enabled) == ERROR_OK) {
|
||||||
if (!enabled)
|
if (!enabled)
|
||||||
|
|
Loading…
Reference in New Issue