diff mbox series

[RFC] sparc: fix leon3 casa instruction when MMU is disabled

Message ID 1519914173-31868-1-git-send-email-frederic.konrad@adacore.com
State New
Headers show
Series [RFC] sparc: fix leon3 casa instruction when MMU is disabled | expand

Commit Message

KONRAD Frederic March 1, 2018, 2:22 p.m. UTC
Since the commit af7a06bac7d3abb2da48ef3277d2a415772d2ae8:
`casa [..](10), .., ..` triggers a data access exception when the MMU
is disabled.

This fixes this wrong behavior.

Signed-off-by: KONRAD Frederic <frederic.konrad@adacore.com>
---

Notes:
    There is an other way to do that: emiting the instruction with a
    MMU_PHYS_IDX when the MMU is disabled. I can switch to that if it's a
    prefered method.

 target/sparc/mmu_helper.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Richard Henderson March 1, 2018, 4:10 p.m. UTC | #1
On 03/01/2018 06:22 AM, KONRAD Frederic wrote:
>     There is an other way to do that: emiting the instruction with a
>     MMU_PHYS_IDX when the MMU is disabled. I can switch to that if it's a
>     prefered method.

Yes, that would be preferred.

r~
diff mbox series

Patch

diff --git a/target/sparc/mmu_helper.c b/target/sparc/mmu_helper.c
index f8886ae..3cebf50 100644
--- a/target/sparc/mmu_helper.c
+++ b/target/sparc/mmu_helper.c
@@ -100,7 +100,7 @@  static int get_physical_address(CPUSPARCState *env, hwaddr *physical,
 
     is_user = mmu_idx == MMU_USER_IDX;
 
-    if (mmu_idx == MMU_PHYS_IDX) {
+    if ((mmu_idx == MMU_PHYS_IDX) || ((env->mmuregs[0] & MMU_E) == 0)) {
         *page_size = TARGET_PAGE_SIZE;
         /* Boot mode: instruction fetches are taken from PROM */
         if (rw == 2 && (env->mmuregs[0] & env->def.mmu_bm)) {