summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--target-sparc/cpu.h13
-rw-r--r--target-sparc/translate.c6
2 files changed, 12 insertions, 7 deletions
diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
index e0715a1a70..8a4cdbc2d0 100644
--- a/target-sparc/cpu.h
+++ b/target-sparc/cpu.h
@@ -338,20 +338,23 @@ void cpu_check_irqs(CPUSPARCState *env);
#ifdef TARGET_SPARC64
#define MMU_MODE2_SUFFIX _hypv
#endif
-#define MMU_USER_IDX 0
+#define MMU_USER_IDX 0
+#define MMU_KERNEL_IDX 1
+#define MMU_HYPV_IDX 2
+
static inline int cpu_mmu_index (CPUState *env)
{
#if defined(CONFIG_USER_ONLY)
- return 0;
+ return MMU_USER_IDX;
#elif !defined(TARGET_SPARC64)
return env->psrs;
#else
if (!env->psrs)
- return 0;
+ return MMU_USER_IDX;
else if ((env->hpstate & HS_PRIV) == 0)
- return 1;
+ return MMU_KERNEL_IDX;
else
- return 2;
+ return MMU_HYPV_IDX;
#endif
}
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index eb3b23baed..6356136711 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -4194,8 +4194,10 @@ target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr)
target_phys_addr_t phys_addr;
int prot, access_index;
- if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 2, 0) != 0)
- if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 0, 0) != 0)
+ if (get_physical_address(env, &phys_addr, &prot, &access_index, addr, 2,
+ MMU_KERNEL_IDX) != 0)
+ if (get_physical_address(env, &phys_addr, &prot, &access_index, addr,
+ 0, MMU_KERNEL_IDX) != 0)
return -1;
if (cpu_get_physical_page_desc(phys_addr) == IO_MEM_UNASSIGNED)
return -1;