From 2c3f099b73be5079e509edfc5db554289fad2bcc Mon Sep 17 00:00:00 2001 From: Hsiangkai Date: Wed, 1 Jan 2020 03:27:22 +0800 Subject: [PATCH] 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. --- src/target/riscv/riscv.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/target/riscv/riscv.c b/src/target/riscv/riscv.c index 59353e28c..beca76c28 100644 --- a/src/target/riscv/riscv.c +++ b/src/target/riscv/riscv.c @@ -1364,6 +1364,11 @@ static int riscv_select_current_hart(struct target *target) static int riscv_mmu(struct target *target, int *enabled) { + if (!riscv_enable_virt2phys) { + *enabled = 0; + return ERROR_OK; + } + if (riscv_rtos_enabled(target)) 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) { - if (!riscv_enable_virt2phys) - return ERROR_FAIL; - int enabled; if (riscv_mmu(target, &enabled) == ERROR_OK) { if (!enabled)